From 0602b4310f46767e9a904214a5f78199e936f105 Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Mon, 3 Mar 2025 14:33:54 +0000 Subject: [PATCH 1/7] Expand button styles to include water, fire and frameless --- common/src/styles/_mixins.scss | 14 +- common/src/styles/base.scss | 20 +- sanity/package.json | 15 +- sanity/pnpm-lock.yaml | 4202 ++++++++++++----- sanity/sanity.config.ts | 5 +- schema/button.ts | 14 +- schema/navigation/topnav.ts | 2 +- .../add-to-calendar-dialog.component.ts | 4 +- .../form/actions/form-actions.component.html | 4 +- .../link-panels/link-panels.component.scss | 7 +- .../resource-panels.component.html | 2 +- .../resource-panels.component.scss | 7 +- .../src/page/blog/blog-post-page.component.ts | 2 +- .../events/event-details-page.component.html | 4 +- .../events/event-details-page.component.ts | 5 +- .../src/page/events/events-page.component.ts | 2 +- .../lecture-details-page.component.ts | 6 +- .../papers/paper-details-page.component.ts | 4 +- .../page/papers/papers-page.component.html | 4 +- .../learning-article.component.ts | 2 +- website/src/styles/styles.scss | 2 +- 21 files changed, 2981 insertions(+), 1346 deletions(-) diff --git a/common/src/styles/_mixins.scss b/common/src/styles/_mixins.scss index efee6be48..5d9477e98 100644 --- a/common/src/styles/_mixins.scss +++ b/common/src/styles/_mixins.scss @@ -89,7 +89,7 @@ } } -@mixin button-primary { +@mixin button-greenHollow { border-color: var(--color-green); background: transparent; color: var(--color-green); @@ -103,8 +103,16 @@ } } -@mixin button-secondary { - border-color: var(--color-darker-white); +@mixin button-water { + @include border-gradient(#AC79EE, #03D0BF, var(--color-black-purple)); +} + +@mixin button-fire { + @include border-gradient(#F96480, #FDD257, var(--color-black-purple)); +} + +@mixin button-frameless { + border-color: transparent; background: transparent; color: var(--body-font-color); diff --git a/common/src/styles/base.scss b/common/src/styles/base.scss index 19a503309..f2e98e198 100644 --- a/common/src/styles/base.scss +++ b/common/src/styles/base.scss @@ -238,7 +238,7 @@ button, td-button { ::file-selector-button { border-radius: 4px; font-family: inherit; - @include button-primary; + @include button-greenHollow; } [hidden] { @@ -291,14 +291,24 @@ button, td-button { @include card-padding; } -.button-primary { +.button-greenHollow { @include button; - @include button-primary; + @include button-greenHollow; } -.button-secondary { +.button-water { @include button; - @include button-secondary; + @include button-water; +} + +.button-fire { + @include button; + @include button-fire; +} + +.button-frameless { + @include button; + @include button-frameless; } td-form-actions, .td-form-actions { diff --git a/sanity/package.json b/sanity/package.json index cb912cfc2..ca59d9c76 100644 --- a/sanity/package.json +++ b/sanity/package.json @@ -16,22 +16,21 @@ ], "dependencies": { "@sanity/code-input": "4.1.4", - "@sanity/icons": "3.4.0", - "@sanity/presentation": "1.18.5", - "@sanity/ui": "2.8.25", - "@sanity/vision": "3.65.0", - "axios": "1.7.8", + "@sanity/icons": "3.6.0", + "@sanity/ui": "2.13.4", + "@sanity/vision": "3.75.1", + "axios": "1.7.9", "react": "18.3.1", "react-dom": "18.3.1", "react-is": "18.3.1", "rxjs": "7.8.1", - "sanity": "3.65.0", + "sanity": "3.75.1", "sanity-plugin-media": "2.3.2", - "styled-components": "6.1.13", + "styled-components": "6.1.15", "typedb-web-schema": "link:../schema" }, "devDependencies": { - "@sanity/client": "6.22.5", + "@sanity/client": "6.28.0", "@types/react": "18.3.12", "@types/styled-components": "5.1.34", "prettier": "2.8.8", diff --git a/sanity/pnpm-lock.yaml b/sanity/pnpm-lock.yaml index 0c6f357d6..26ae1cda7 100644 --- a/sanity/pnpm-lock.yaml +++ b/sanity/pnpm-lock.yaml @@ -7,22 +7,19 @@ settings: dependencies: '@sanity/code-input': specifier: 4.1.4 - version: 4.1.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(sanity@3.65.0)(styled-components@6.1.13) + version: 4.1.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(sanity@3.75.1)(styled-components@6.1.15) '@sanity/icons': - specifier: 3.4.0 - version: 3.4.0(react@18.3.1) - '@sanity/presentation': - specifier: 1.18.5 - version: 1.18.5(@sanity/client@6.22.5)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + specifier: 3.6.0 + version: 3.6.0(react@18.3.1) '@sanity/ui': - specifier: 2.8.25 - version: 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + specifier: 2.13.4 + version: 2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) '@sanity/vision': - specifier: 3.65.0 - version: 3.65.0(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + specifier: 3.75.1 + version: 3.75.1(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) axios: - specifier: 1.7.8 - version: 1.7.8 + specifier: 1.7.9 + version: 1.7.9 react: specifier: 18.3.1 version: 18.3.1 @@ -36,22 +33,22 @@ dependencies: specifier: 7.8.1 version: 7.8.1 sanity: - specifier: 3.65.0 - version: 3.65.0(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13) + specifier: 3.75.1 + version: 3.75.1(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.15)(typescript@4.9.5) sanity-plugin-media: specifier: 2.3.2 - version: 2.3.2(@sanity/ui@2.8.25)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(sanity@3.65.0)(styled-components@6.1.13) + version: 2.3.2(@sanity/ui@2.13.4)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(sanity@3.75.1)(styled-components@6.1.15) styled-components: - specifier: 6.1.13 - version: 6.1.13(react-dom@18.3.1)(react@18.3.1) + specifier: 6.1.15 + version: 6.1.15(react-dom@18.3.1)(react@18.3.1) typedb-web-schema: specifier: link:../schema version: link:../schema devDependencies: '@sanity/client': - specifier: 6.22.5 - version: 6.22.5 + specifier: 6.28.0 + version: 6.28.0 '@types/react': specifier: 18.3.12 version: 18.3.12 @@ -67,6 +64,39 @@ devDependencies: packages: + /@actions/core@1.11.1: + resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} + dependencies: + '@actions/exec': 1.1.1 + '@actions/http-client': 2.2.3 + dev: false + + /@actions/exec@1.1.1: + resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} + dependencies: + '@actions/io': 1.1.3 + dev: false + + /@actions/github@6.0.0: + resolution: {integrity: sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==} + dependencies: + '@actions/http-client': 2.2.3 + '@octokit/core': 5.2.0 + '@octokit/plugin-paginate-rest': 9.2.2(@octokit/core@5.2.0) + '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0) + dev: false + + /@actions/http-client@2.2.3: + resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} + dependencies: + tunnel: 0.0.6 + undici: 5.28.5 + dev: false + + /@actions/io@1.1.3: + resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} + dev: false + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -75,6 +105,16 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: false + /@asamuzakjp/css-color@2.8.3: + resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} + dependencies: + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + dev: false + /@asamuzakjp/dom-selector@2.0.2: resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} dependencies: @@ -100,39 +140,11 @@ packages: picocolors: 1.1.1 dev: false - /@babel/compat-data@7.24.4: - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/compat-data@7.26.2: resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.24.5: - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core@7.26.0: resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} @@ -156,22 +168,23 @@ packages: - supports-color dev: false - /@babel/generator@7.24.5: - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + jsesc: 3.0.2 dev: false - /@babel/generator@7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + /@babel/generator@7.26.9: + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -181,25 +194,21 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.9 dev: false - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 + '@babel/types': 7.26.0 dev: false /@babel/helper-compilation-targets@7.25.9: @@ -213,44 +222,62 @@ packages: semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): + /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): + /@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.26.0): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.1 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5): + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0): resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 @@ -267,22 +294,32 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false /@babel/helper-member-expression-to-functions@7.24.5: resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 + dev: false + + /@babel/helper-member-expression-to-functions@7.25.9: + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color dev: false /@babel/helper-module-imports@7.24.3: @@ -302,20 +339,6 @@ packages: - supports-color dev: false - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - dev: false - /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} @@ -334,12 +357,14 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false - /@babel/helper-plugin-utils@7.24.5: - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + /@babel/helper-optimise-call-expression@7.25.9: + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.9 dev: false /@babel/helper-plugin-utils@7.25.9: @@ -347,49 +372,78 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5): + /@babel/helper-plugin-utils@7.26.5: + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.26.0): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.24.5 dev: false - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): + /@babel/helper-replace-supers@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 dev: false + /@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0): + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.9 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-simple-access@7.24.5: resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 + dev: false + + /@babel/helper-skip-transparent-expression-wrappers@7.25.9: + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.9 + transitivePeerDependencies: + - supports-color dev: false /@babel/helper-split-export-declaration@7.24.5: resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false /@babel/helper-string-parser@7.24.1: @@ -412,11 +466,6 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-option@7.25.9: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -427,19 +476,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - dev: false - - /@babel/helpers@7.24.5: - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 dev: false /@babel/helpers@7.26.0: @@ -460,698 +498,743 @@ packages: picocolors: 1.1.1 dev: false - /@babel/parser@7.24.5: - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false - /@babel/parser@7.26.2: - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + /@babel/parser@7.26.9: + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.9 dev: false - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.26.0) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false + + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: false + + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.26.0): resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.26.0): resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-classes@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.0) '@babel/helper-split-export-declaration': 7.24.5 globals: 11.12.0 dev: false - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 dev: false - /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-simple-access': 7.24.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) dev: false - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.5): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.26.0): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color dev: false /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0): @@ -1174,298 +1257,336 @@ packages: '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.26.0): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/types': 7.24.5 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.26.0) + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5): + /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.26.0) + dev: false + + /@babel/plugin-transform-typescript@7.26.8(@babel/core@7.26.0): + resolution: {integrity: sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 dev: false - /@babel/preset-env@7.24.5(@babel/core@7.24.5): + /@babel/preset-env@7.24.5(@babel/core@7.26.0): resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) core-js-compat: 3.37.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 esutils: 2.0.3 dev: false - /@babel/preset-react@7.24.1(@babel/core@7.24.5): + /@babel/preset-react@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): + /@babel/preset-typescript@7.24.1(@babel/core@7.26.0): resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-typescript@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color dev: false - /@babel/register@7.23.7(@babel/core@7.24.5): + /@babel/register@7.23.7(@babel/core@7.26.0): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.26.0 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1491,15 +1612,6 @@ packages: regenerator-runtime: 0.14.0 dev: false - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - dev: false - /@babel/template@7.25.9: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} @@ -1509,22 +1621,13 @@ packages: '@babel/types': 7.26.0 dev: false - /@babel/traverse@7.24.5: - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + /@babel/template@7.26.9: + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 dev: false /@babel/traverse@7.25.9: @@ -1542,6 +1645,21 @@ packages: - supports-color dev: false + /@babel/traverse@7.26.9: + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/types@7.24.5: resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} @@ -1559,6 +1677,14 @@ packages: '@babel/helper-validator-identifier': 7.25.9 dev: false + /@babel/types@7.26.9: + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: false + /@codemirror/autocomplete@6.12.0: resolution: {integrity: sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==} dependencies: @@ -1713,6 +1839,49 @@ packages: w3c-keyname: 2.2.8 dev: false + /@csstools/color-helpers@5.0.1: + resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} + engines: {node: '>=18'} + dev: false + + /@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + dev: false + + /@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/color-helpers': 5.0.1 + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + dev: false + + /@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/css-tokenizer': 3.0.3 + dev: false + + /@csstools/css-tokenizer@3.0.3: + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + dev: false + /@dnd-kit/accessibility@3.0.1(react@18.3.1): resolution: {integrity: sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==} peerDependencies: @@ -1885,11 +2054,11 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + /@esbuild/aix-ppc64@0.24.2: + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] requiresBuild: true dev: false optional: true @@ -1903,10 +2072,10 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] + /@esbuild/android-arm64@0.24.2: + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] os: [android] requiresBuild: true dev: false @@ -1921,10 +2090,10 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] + /@esbuild/android-arm@0.24.2: + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] os: [android] requiresBuild: true dev: false @@ -1939,11 +2108,11 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + /@esbuild/android-x64@0.24.2: + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] requiresBuild: true dev: false optional: true @@ -1957,10 +2126,10 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] + /@esbuild/darwin-arm64@0.24.2: + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] requiresBuild: true dev: false @@ -1975,11 +2144,11 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + /@esbuild/darwin-x64@0.24.2: + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] requiresBuild: true dev: false optional: true @@ -1993,10 +2162,10 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] + /@esbuild/freebsd-arm64@0.24.2: + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] os: [freebsd] requiresBuild: true dev: false @@ -2011,11 +2180,11 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + /@esbuild/freebsd-x64@0.24.2: + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] requiresBuild: true dev: false optional: true @@ -2029,10 +2198,10 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] + /@esbuild/linux-arm64@0.24.2: + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux] requiresBuild: true dev: false @@ -2047,10 +2216,10 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] + /@esbuild/linux-arm@0.24.2: + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] os: [linux] requiresBuild: true dev: false @@ -2065,10 +2234,10 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] + /@esbuild/linux-ia32@0.24.2: + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] os: [linux] requiresBuild: true dev: false @@ -2083,10 +2252,10 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] + /@esbuild/linux-loong64@0.24.2: + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] os: [linux] requiresBuild: true dev: false @@ -2101,10 +2270,10 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] + /@esbuild/linux-mips64el@0.24.2: + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] os: [linux] requiresBuild: true dev: false @@ -2119,10 +2288,10 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] + /@esbuild/linux-ppc64@0.24.2: + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] os: [linux] requiresBuild: true dev: false @@ -2137,10 +2306,10 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] + /@esbuild/linux-riscv64@0.24.2: + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] requiresBuild: true dev: false @@ -2155,10 +2324,10 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] + /@esbuild/linux-s390x@0.24.2: + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] os: [linux] requiresBuild: true dev: false @@ -2173,10 +2342,19 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} + /@esbuild/linux-x64@0.24.2: + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-arm64@0.24.2: + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] requiresBuild: true dev: false @@ -2191,10 +2369,19 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} + /@esbuild/netbsd-x64@0.24.2: + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-arm64@0.24.2: + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] os: [openbsd] requiresBuild: true dev: false @@ -2209,11 +2396,11 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} + /@esbuild/openbsd-x64@0.24.2: + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] requiresBuild: true dev: false optional: true @@ -2227,11 +2414,11 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + /@esbuild/sunos-x64@0.24.2: + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] requiresBuild: true dev: false optional: true @@ -2245,10 +2432,10 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] + /@esbuild/win32-arm64@0.24.2: + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] requiresBuild: true dev: false @@ -2263,10 +2450,10 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] + /@esbuild/win32-ia32@0.24.2: + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] requiresBuild: true dev: false @@ -2281,6 +2468,20 @@ packages: dev: false optional: true + /@esbuild/win32-x64@0.24.2: + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: false + /@floating-ui/core@1.5.3: resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==} dependencies: @@ -2374,10 +2575,21 @@ packages: engines: {node: '>=6.0.0'} dev: false + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: false + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: false + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2455,6 +2667,50 @@ packages: '@lezer/lr': 1.3.13 dev: false + /@microsoft/api-extractor-model@7.30.1: + resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.1 + transitivePeerDependencies: + - '@types/node' + dev: false + + /@microsoft/api-extractor@7.48.1: + resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.30.1 + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.1 + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.4 + '@rushstack/ts-command-line': 4.23.2 + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.1 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + dev: false + + /@microsoft/tsdoc-config@0.17.1: + resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.10 + dev: false + + /@microsoft/tsdoc@0.15.1: + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2476,6 +2732,119 @@ packages: fastq: 1.15.0 dev: false + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: false + + /@octokit/core@5.2.0: + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.4.1 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.8.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/endpoint@9.0.6: + resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.8.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/graphql@7.1.0: + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 8.4.1 + '@octokit/types': 13.8.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/openapi-types@20.0.0: + resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} + dev: false + + /@octokit/openapi-types@23.0.1: + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + dev: false + + /@octokit/plugin-paginate-rest@9.2.2(@octokit/core@5.2.0): + resolution: {integrity: sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + dev: false + + /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + dev: false + + /@octokit/request-error@5.1.1: + resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.8.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: false + + /@octokit/request@8.4.1: + resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 9.0.6 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.8.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/types@12.6.0: + resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} + dependencies: + '@octokit/openapi-types': 20.0.0 + dev: false + + /@octokit/types@13.8.0: + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} + dependencies: + '@octokit/openapi-types': 23.0.1 + dev: false + + /@optimize-lodash/rollup-plugin@5.0.0(rollup@4.34.8): + resolution: {integrity: sha512-GJgfYatfqHvi3XAytThuFsq4NzcP9Xc934ouZlL/DsWi6CrnQPfb4l0G4SYV/KAkKHlRLmuu/UxGZqXBbCw7OA==} + engines: {node: '>= 18'} + peerDependencies: + rollup: '>= 4.x' + dependencies: + '@optimize-lodash/transform': 3.0.4 + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + rollup: 4.34.8 + dev: false + + /@optimize-lodash/transform@3.0.4: + resolution: {integrity: sha512-pEzPjvEnWHQCTIv8j/6IYdYBJQUL/Z9Vo0SB2yr5GZNgf0OAznapjilOb7JY9dBEgXtbgtTgSpANZAiipsjhhw==} + engines: {node: '>= 12'} + dependencies: + estree-walker: 2.0.2 + magic-string: 0.30.17 + dev: false + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -2483,46 +2852,76 @@ packages: dev: false optional: true - /@portabletext/editor@1.12.0(@sanity/block-tools@3.65.0)(@sanity/schema@3.65.0)(@sanity/types@3.65.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13): - resolution: {integrity: sha512-S3luCFUQHoh8P+aY7tKAKqbn1Io2XvC/ADAuXxTuPRKmvIQwzQtS7bWMbslXJK49/AnLQc3NTmLEoZ8XkBS3iw==} + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: false + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: false + + /@pnpm/npm-conf@2.3.1: + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: false + + /@portabletext/block-tools@1.1.8(@sanity/types@3.75.1)(@types/react@18.3.12): + resolution: {integrity: sha512-uMfsgyswAbVtnFkULlE1JmRHwBR9rhY8XSRkzm/w+F35qncDbm31xVxfRLdlFbsIkcjkJ9VlbMp9V/3IiptsVQ==} + peerDependencies: + '@sanity/types': ^3.75.1 + '@types/react': 18 || 19 + dependencies: + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@types/react': 18.3.12 + get-random-values-esm: 1.0.2 + lodash: 4.17.21 + dev: false + + /@portabletext/editor@1.33.6(@sanity/schema@3.75.1)(@sanity/types@3.75.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(rxjs@7.8.1): + resolution: {integrity: sha512-/dadacD3/xs+G11L2Krzhxj0PKUV9QEy+/RnAAyA0otAXOC7pFUsU4wcsABF+zSUrX+ce/kohjm6OuCaqDeTGA==} engines: {node: '>=18'} peerDependencies: - '@sanity/block-tools': ^3.64.3 - '@sanity/schema': ^3.64.3 - '@sanity/types': ^3.64.3 - react: ^16.9 || ^17 || ^18 + '@sanity/schema': ^3.75.1 + '@sanity/types': ^3.75.1 + react: ^16.9 || ^17 || ^18 || ^19 rxjs: ^7.8.1 - styled-components: ^6.1.13 dependencies: - '@portabletext/patches': 1.1.0 - '@sanity/block-tools': 3.65.0(debug@4.3.4) - '@sanity/schema': 3.65.0(debug@4.3.4) - '@sanity/types': 3.65.0(debug@4.3.4) - '@xstate/react': 5.0.0(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.0) - debug: 4.3.4 + '@portabletext/block-tools': 1.1.8(@sanity/types@3.75.1)(@types/react@18.3.12) + '@portabletext/patches': 1.1.3 + '@portabletext/to-html': 2.0.14 + '@sanity/schema': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@xstate/react': 5.0.2(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.2) + debug: 4.4.0 get-random-values-esm: 1.0.2 - is-hotkey-esm: 1.0.0 lodash: 4.17.21 lodash.startcase: 4.4.0 react: 18.3.1 - react-compiler-runtime: 19.0.0-beta-df7b47d-20241124(react@18.3.1) + react-compiler-runtime: 19.0.0-beta-21e868a-20250216(react@18.3.1) rxjs: 7.8.1 - slate: 0.110.2 - slate-dom: 0.111.0(slate@0.110.2) - slate-react: 0.111.0(react-dom@18.3.1)(react@18.3.1)(slate-dom@0.111.0)(slate@0.110.2) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + slate: 0.112.0 + slate-dom: 0.112.2(slate@0.112.0) + slate-react: 0.112.1(react-dom@18.3.1)(react@18.3.1)(slate-dom@0.112.2)(slate@0.112.0) use-effect-event: 1.0.2(react@18.3.1) - xstate: 5.19.0 + xstate: 5.19.2 transitivePeerDependencies: - '@types/react' - react-dom - supports-color dev: false - /@portabletext/patches@1.1.0: - resolution: {integrity: sha512-2qn4WaRc23m5qRwclT3sAyuHwTyjxCb4Lg0BQyhp7CABd83HtnPPYoP6hycREs6HRdWA48H3sU5gqUVPoxJxdg==} + /@portabletext/patches@1.1.3: + resolution: {integrity: sha512-9olhOppydPR/UoMVf9w3SxHR3l9UJ66GoI/hnG34ESf6ccewI6cgLMXdcn9MPiFIve46hFMO/hP7g7exmN6RSg==} dependencies: - '@sanity/diff-match-patch': 3.1.1 + '@sanity/diff-match-patch': 3.2.0 lodash: 4.17.21 dev: false @@ -2532,16 +2931,29 @@ packages: peerDependencies: react: ^17 || ^18 dependencies: - '@portabletext/toolkit': 2.0.10 + '@portabletext/toolkit': 2.0.17 '@portabletext/types': 2.0.8 react: 18.3.1 dev: false - /@portabletext/toolkit@2.0.10: - resolution: {integrity: sha512-d+F9JvpnMEx7kd6saZ9OWA4U1Iwuokh6TOht7iqkfWU+0ivh9yM4v+b0Kpu+iiPcElicoabhtXol+yTvWJ1jDw==} + /@portabletext/to-html@2.0.14: + resolution: {integrity: sha512-wW2et59PoOT/mc56C4U3z+DKAx1yjieN/gp2q9szTfTwusMpb6mclR9+EPIfGrcQWdwGn6PEN7nxVFXnqlZ/0A==} engines: {node: ^14.13.1 || >=16.0.0} dependencies: - '@portabletext/types': 2.0.8 + '@portabletext/toolkit': 2.0.17 + '@portabletext/types': 2.0.13 + dev: false + + /@portabletext/toolkit@2.0.17: + resolution: {integrity: sha512-5wj+oUaCmHm9Ay1cytPmT1Yc0SrR1twwUIc0qNQ3MtaXaNMPw99Gjt1NcA34yfyKmEf/TAB2NiiT72jFxdddIQ==} + engines: {node: ^14.13.1 || >=16.0.0} + dependencies: + '@portabletext/types': 2.0.13 + dev: false + + /@portabletext/types@2.0.13: + resolution: {integrity: sha512-5xk5MSyQU9CrDho3Rsguj38jhijhD36Mk8S6mZo3huv6PM+t4M/5kJN2KFIxgvt4ONpvOEs1pVIZAV0cL0Vi+Q==} + engines: {node: ^14.13.1 || >=16.0.0 || >=18.0.0} dev: false /@portabletext/types@2.0.8: @@ -2568,33 +2980,350 @@ packages: reselect: 4.1.7 dev: false - /@rexxars/react-json-inspector@8.0.1(react@18.3.1): - resolution: {integrity: sha512-XAsgQwqG8fbDGpWnsvOesRMgPfvwuU7Cx3/cUf/fNIRmGP8lj2YYIf5La/4ayvZLWlSw4tTb4BPCKdmK9D8RuQ==} + /@rexxars/react-json-inspector@9.0.1(react@18.3.1): + resolution: {integrity: sha512-4uZ4RnrVoOGOShIKKcPoF+qhwDCZJsPPqyoEoW/8HRdzNknN9Q2yhlbEgTX1lMZunF1fv7iHzAs+n1vgIgfg/g==} peerDependencies: - react: ^15 || ^16 || ^17 || ^18 + react: ^18 || ^19 dependencies: - create-react-class: 15.7.0 debounce: 1.0.0 md5-o-matic: 0.1.1 react: 18.3.1 dev: false - /@rexxars/react-split-pane@0.1.93(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Pok8zATwd5ZpWnccJeSA/JM2MPmi3D04duYtrbMNRgzeAU2ANtq3r4w7ldbjpGyfJqggqn0wDNjRqaevXqSxQg==} + /@rexxars/react-split-pane@1.0.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Ewl8ugA2VQd+idzcg65WFbYh/oCLPOFjeDKpebexPgFDDX8ZwsHZWy5jNwiIWI8txDidVmRP98lsnmBHlIywWA==} peerDependencies: - react: ^18 - react-dom: ^18 + react: ^18 || ^19 + react-dom: ^18 || ^19 dependencies: - prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-lifecycles-compat: 3.0.4 - react-style-proptype: 3.2.2 dev: false - /@sanity/asset-utils@1.3.0: - resolution: {integrity: sha512-uyIOtGA4Duf+68I3BSbYHY5P+WGftn3QtNJD2Pn7h9WPGYsSrWViIPebE9yRN8N0NHhYj+hDQXaMpVdjG7r+zA==} - engines: {node: '>=10'} + /@rollup/plugin-alias@5.1.1(rollup@4.34.8): + resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.34.8 + dev: false + + /@rollup/plugin-babel@6.0.4(@babel/core@7.26.0)(rollup@4.34.8): + resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + rollup: 4.34.8 + transitivePeerDependencies: + - supports-color + dev: false + + /@rollup/plugin-commonjs@28.0.2(rollup@4.34.8): + resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + commondir: 1.0.1 + estree-walker: 2.0.2 + fdir: 6.4.3(picomatch@4.0.2) + is-reference: 1.2.1 + magic-string: 0.30.17 + picomatch: 4.0.2 + rollup: 4.34.8 + dev: false + + /@rollup/plugin-json@6.1.0(rollup@4.34.8): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + rollup: 4.34.8 + dev: false + + /@rollup/plugin-node-resolve@16.0.0(rollup@4.34.8): + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 4.34.8 + dev: false + + /@rollup/plugin-replace@6.0.2(rollup@4.34.8): + resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + magic-string: 0.30.17 + rollup: 4.34.8 + dev: false + + /@rollup/plugin-terser@0.4.4(rollup@4.34.8): + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 4.34.8 + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.39.0 + dev: false + + /@rollup/pluginutils@5.1.4(rollup@4.34.8): + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + rollup: 4.34.8 + dev: false + + /@rollup/rollup-android-arm-eabi@4.34.8: + resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-android-arm64@4.34.8: + resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-arm64@4.34.8: + resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-x64@4.34.8: + resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-freebsd-arm64@4.34.8: + resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-freebsd-x64@4.34.8: + resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.34.8: + resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.34.8: + resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.34.8: + resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-musl@4.34.8: + resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-loongarch64-gnu@4.34.8: + resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.34.8: + resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.34.8: + resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.34.8: + resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-gnu@4.34.8: + resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-musl@4.34.8: + resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.34.8: + resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.34.8: + resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-x64-msvc@4.34.8: + resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rushstack/node-core-library@5.10.1: + resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.1 + semver: 7.5.4 + dev: false + + /@rushstack/rig-package@0.5.3: + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} + dependencies: + resolve: 1.22.1 + strip-json-comments: 3.1.1 + dev: false + + /@rushstack/terminal@0.14.4: + resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 5.10.1 + supports-color: 8.1.1 + dev: false + + /@rushstack/ts-command-line@4.23.2: + resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} + dependencies: + '@rushstack/terminal': 0.14.4 + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' dev: false /@sanity/asset-utils@2.2.0: @@ -2609,66 +3338,65 @@ packages: rxjs: 7.8.1 dev: false - /@sanity/block-tools@3.65.0(debug@4.3.4): - resolution: {integrity: sha512-0YgZAU0rX1MjWli5QF+KHWLN41pIahtt62kS+05Y6yJ539e0c89Az+vzmqaYwvaeNPRcoJR0NU1iPoB64eaAUg==} - dependencies: - '@sanity/types': 3.65.0(debug@4.3.4) - '@types/react': 18.3.12 - get-random-values-esm: 1.0.2 - lodash: 4.17.21 - transitivePeerDependencies: - - debug + /@sanity/browserslist-config@1.0.5: + resolution: {integrity: sha512-so+/UtCge8t1jq509hH0otbbptRz0zM/Aa0dh5MhMD7HGT6n2igWIL2VWH/9QR9e77Jn3dJsjz23mW1WCxT+sg==} dev: false - /@sanity/cli@3.65.0(react@18.3.1): - resolution: {integrity: sha512-JZ3zBLYODY9Q4pNH3jCenrF390+JwsYbP9WDQp1gVxvtQuii9QljDPV70rumRrwVeE9JdzOIjBiZUBFUt8lRZQ==} + /@sanity/cli@3.75.1(@types/react@18.3.12)(react@18.3.1)(typescript@4.9.5): + resolution: {integrity: sha512-Tw22fd/TIheKMbg4zNOyJCHkt+uTeIfNeAoi2Iy1/P/gS9TQ9pweyvADPQoqwG1pgNvweIiv1qo5Uwsx9Mu2DA==} engines: {node: '>=18'} hasBin: true dependencies: - '@babel/traverse': 7.24.5 - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/codegen': 3.65.0 + '@babel/traverse': 7.25.9 + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/codegen': 3.75.1 '@sanity/telemetry': 0.7.9(react@18.3.1) - '@sanity/util': 3.65.0(debug@4.3.4) + '@sanity/template-validator': 2.4.0(debug@4.3.4)(typescript@4.9.5) + '@sanity/util': 3.75.1(@types/react@18.3.12)(debug@4.3.4) chalk: 4.1.2 debug: 4.3.4 decompress: 4.2.1 esbuild: 0.21.5 esbuild-register: 3.6.0(esbuild@0.21.5) - get-it: 8.6.5(debug@4.3.4) - groq-js: 1.14.0 + get-it: 8.6.7(debug@4.3.4) + groq-js: 1.15.0 pkg-dir: 5.0.0 prettier: 3.3.3 semver: 7.5.4 - silver-fleece: 1.1.0 validate-npm-package-name: 3.0.0 transitivePeerDependencies: + - '@types/babel__core' + - '@types/node' + - '@types/react' + - babel-plugin-react-compiler - react - supports-color + - typescript dev: false - /@sanity/client@6.22.5: - resolution: {integrity: sha512-prVcdTftytujpTDaCbQdDMBnInSKuTV4xs9Qx+dgvtN8i+spcC8w/vuigdBwfyxVHTT+3+MIgUl5+zAPrlKR8g==} + /@sanity/client@6.28.0: + resolution: {integrity: sha512-2kXmiOPAfT2/5cxmwIyLv+/1HXbZXwWYAtaPkOoujySVP3tcXYmzTwYbjUXMlRcvs0u28C2afZmSNoK+RDiQqA==} engines: {node: '>=14.18'} dependencies: '@sanity/eventsource': 5.0.2 - get-it: 8.6.5 + get-it: 8.6.7 rxjs: 7.8.1 transitivePeerDependencies: - debug + dev: true - /@sanity/client@6.22.5(debug@4.3.4): - resolution: {integrity: sha512-prVcdTftytujpTDaCbQdDMBnInSKuTV4xs9Qx+dgvtN8i+spcC8w/vuigdBwfyxVHTT+3+MIgUl5+zAPrlKR8g==} + /@sanity/client@6.28.0(debug@4.3.4): + resolution: {integrity: sha512-2kXmiOPAfT2/5cxmwIyLv+/1HXbZXwWYAtaPkOoujySVP3tcXYmzTwYbjUXMlRcvs0u28C2afZmSNoK+RDiQqA==} engines: {node: '>=14.18'} dependencies: '@sanity/eventsource': 5.0.2 - get-it: 8.6.5(debug@4.3.4) + get-it: 8.6.7(debug@4.3.4) rxjs: 7.8.1 transitivePeerDependencies: - debug dev: false - /@sanity/code-input@4.1.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(sanity@3.65.0)(styled-components@6.1.13): + /@sanity/code-input@4.1.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(sanity@3.75.1)(styled-components@6.1.15): resolution: {integrity: sha512-MQfZ6r0SdEtYiuhfMtFe54D+4pVIQzDa67nFQhM1D4hQJVt7yL+OBukGbcOK9Kx1PjKkb4Gog//AMoN7a90b9g==} engines: {node: '>=14'} peerDependencies: @@ -2694,33 +3422,33 @@ packages: '@juggle/resize-observer': 3.4.0 '@lezer/highlight': 1.2.0 '@sanity/incompatible-plugin': 1.0.4(react-dom@18.3.1)(react@18.3.1) - '@sanity/ui': 1.9.3(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + '@sanity/ui': 1.9.3(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) '@uiw/codemirror-themes': 4.21.21 '@uiw/react-codemirror': 4.21.21(@codemirror/autocomplete@6.12.0)(@codemirror/language@6.10.0)(@codemirror/search@6.5.5)(@codemirror/view@6.23.0)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - sanity: 3.65.0(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + sanity: 3.75.1(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.15)(typescript@4.9.5) + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: - react-is dev: false - /@sanity/codegen@3.65.0: - resolution: {integrity: sha512-UE4aHCE5YXxI8H4lDm4qBW8w0Xzl+8a0l10KQ67fWyTd7MhRF+7smnbNOJ170iDxwRZXo/KwrXKBgqny+DWang==} + /@sanity/codegen@3.75.1: + resolution: {integrity: sha512-v+OaPrgoDNYTjrKp6g9HBQe8ik1k/Sl4bxtv8xmLw0zsJ5yHrFAUzmw3h05uCwxV5xh2Vm5yT/3yoUH2sdgJoA==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/preset-react': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/register': 7.23.7(@babel/core@7.24.5) - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.2 + '@babel/preset-env': 7.24.5(@babel/core@7.26.0) + '@babel/preset-react': 7.24.1(@babel/core@7.26.0) + '@babel/preset-typescript': 7.24.1(@babel/core@7.26.0) + '@babel/register': 7.23.7(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.4 - globby: 10.0.2 - groq: 3.65.0 - groq-js: 1.14.0 + globby: 11.1.0 + groq: 3.75.1 + groq-js: 1.15.0 json5: 2.2.3 tsconfig-paths: 4.2.0 zod: 3.23.5 @@ -2737,13 +3465,13 @@ packages: engines: {node: '>=18.0.0'} dev: false - /@sanity/comlink@1.1.4: - resolution: {integrity: sha512-3Mi6jzLyZhA5luDznIdeurr6Bzr+D6Z1nrB2ayqUrcsjpndYrr6ny6UnBQybJFwXyynYZVhmHhLQlziEzH31lw==} + /@sanity/comlink@3.0.1: + resolution: {integrity: sha512-I1F57GKL69xoJUF9/4XTMvXFJZ7BnaFmTBIaiRvXaovJEZ677p5f+UkURPG/dd9L63+OnTV0SNmhTjIIzNexdw==} engines: {node: '>=18'} dependencies: rxjs: 7.8.1 - uuid: 10.0.0 - xstate: 5.19.0 + uuid: 11.0.5 + xstate: 5.19.2 dev: false /@sanity/diff-match-patch@3.1.1: @@ -2751,8 +3479,20 @@ packages: engines: {node: '>=14.18'} dev: false - /@sanity/diff@3.65.0: - resolution: {integrity: sha512-10BLhmoP7cCYHF0wVMtuSMFnVPlTMg+i45Y6IxqmPNOrk8inTZZx1s2P5LNW5xQKNz+Djc9TLJiMZkj0TP9Hmw==} + /@sanity/diff-match-patch@3.2.0: + resolution: {integrity: sha512-4hPADs0qUThFZkBK/crnfKKHg71qkRowfktBljH2UIxGHHTxIzt8g8fBiXItyCjxkuNy+zpYOdRMifQNv8+Yww==} + engines: {node: '>=18.18'} + dev: false + + /@sanity/diff-patch@5.0.0: + resolution: {integrity: sha512-JASdNaZsxUFBx8GQ1sX2XehYhdhOcurh7KwzQ3cXgOTdjvIQyQcLwmMeYCsU/K26GiI81ODbCEb/C0c92t2Unw==} + engines: {node: '>=18.2'} + dependencies: + '@sanity/diff-match-patch': 3.2.0 + dev: false + + /@sanity/diff@3.75.1: + resolution: {integrity: sha512-6t/pnSW3X3omGycZI59WD4Roxs92KKXZyb3wvCgLSFDSLWMz8PA7vViTM9p5+vAcjHEu1xWPDFfIycU28Veo1w==} engines: {node: '>=18'} dependencies: '@sanity/diff-match-patch': 3.1.1 @@ -2766,23 +3506,25 @@ packages: event-source-polyfill: 1.0.31 eventsource: 2.0.2 - /@sanity/export@3.41.0: - resolution: {integrity: sha512-mqb6HvzjNGh3J4zjT4hOPh4ZTPOVwYsS5DJ3v24S5uETlIodMmDlY/DBmudlZmQxqoWqqX/hsVxKC0WskuPsYg==} + /@sanity/export@3.42.2(@types/react@18.3.12): + resolution: {integrity: sha512-3dpGwzyhMXFPdGkS28rv7nBAnCKgW+OGTVM+tO31YO9AIZJ9M016WZcYKEYhX+wCLNiGTNrqWXfac9L4Unh8fQ==} engines: {node: '>=18'} dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/util': 3.37.2(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/util': 3.68.3(@types/react@18.3.12)(debug@4.3.4) archiver: 7.0.1 debug: 4.3.4 - get-it: 8.6.5(debug@4.3.4) + get-it: 8.6.7(debug@4.3.4) + json-stream-stringify: 2.0.4 lodash: 4.17.21 mississippi: 4.0.0 p-queue: 2.4.2 - rimraf: 3.0.2 + rimraf: 6.0.1 split2: 4.2.0 tar: 7.4.3 yaml: 2.5.0 transitivePeerDependencies: + - '@types/react' - supports-color dev: false @@ -2807,11 +3549,11 @@ packages: react: 18.3.1 dev: false - /@sanity/icons@3.4.0(react@18.3.1): - resolution: {integrity: sha512-X8BMM68w3y5cuCLpPwV7jGhVNGgAL/FA3UI6JaRCsyVOahA6aBOeKdjFs5MHtKi8cmrKwq1a98h/HbrK56kszA==} + /@sanity/icons@3.6.0(react@18.3.1): + resolution: {integrity: sha512-GFSJiDYW5eEKnkedz7J+RQDcjcG6UBL1DzrXdddRD+CI9IKBDSBTrfnw9qjZbi6R5NeXXRBCTnKW34rOCAocpw==} engines: {node: '>=14.0.0'} peerDependencies: - react: ^18.3 || >=19.0.0-rc + react: ^18.3 || ^19.0.0-0 dependencies: react: 18.3.1 dev: false @@ -2821,47 +3563,19 @@ packages: engines: {node: '>=10.0.0'} dev: false - /@sanity/import@3.37.2: - resolution: {integrity: sha512-gU+YxBDSWL1rMz6Rj/n2WmMkLIFvvAiiMvxPsgXqO3AurYkjNVNISFKI2ojuemHtuZOVe8/g4TqGImyaliKaLQ==} - engines: {node: '>=18'} - dependencies: - '@sanity/asset-utils': 1.3.0 - '@sanity/generate-help-url': 3.0.0 - '@sanity/mutator': 3.37.2 - '@sanity/uuid': 3.0.2 - debug: 4.3.4 - file-url: 2.0.2 - get-it: 8.6.5(debug@4.3.4) - get-uri: 2.0.4 - globby: 10.0.2 - gunzip-maybe: 1.4.2 - is-tar: 1.0.0 - lodash: 4.17.21 - mississippi: 4.0.0 - p-map: 1.2.0 - peek-stream: 1.1.3 - rimraf: 3.0.2 - split2: 4.2.0 - tar-fs: 2.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@sanity/import@3.37.3: - resolution: {integrity: sha512-MexzckmxvX+PrmvAASFWeeaa12VuKK/1ghu53Ow+2dk1Kw10Umneph9Hfuk8T/AbLi6czPfeIl5CJGmgGoO3uw==} + /@sanity/import@3.37.9(@types/react@18.3.12): + resolution: {integrity: sha512-9XdQ6C0iMp8zGmm3uyRnMnvURKRGY/tvEItjxC3vDa9MOkDSZoH6FrTWprTEETMsJdg2JUexG6fbUXW+Vorwhg==} engines: {node: '>=18'} hasBin: true dependencies: - '@sanity/asset-utils': 1.3.0 + '@sanity/asset-utils': 2.2.0 '@sanity/generate-help-url': 3.0.0 - '@sanity/import': 3.37.2 - '@sanity/mutator': 3.37.2 + '@sanity/mutator': 3.75.1(@types/react@18.3.12) '@sanity/uuid': 3.0.2 debug: 4.3.4 file-url: 2.0.2 - get-it: 8.6.5(debug@4.3.4) + get-it: 8.6.7(debug@4.3.4) get-uri: 2.0.4 - globby: 10.0.2 gunzip-maybe: 1.4.2 is-tar: 1.0.0 lodash: 4.17.21 @@ -2871,10 +3585,12 @@ packages: p-map: 1.2.0 peek-stream: 1.1.3 pretty-ms: 7.0.1 - rimraf: 3.0.2 + rimraf: 6.0.1 split2: 4.2.0 tar-fs: 2.1.1 + tinyglobby: 0.2.10 transitivePeerDependencies: + - '@types/react' - supports-color dev: false @@ -2890,37 +3606,28 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@sanity/insert-menu@1.0.13(@sanity/types@3.65.0)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-MOP2PkQqZfFHhIXdkRViDEYEpW8T4XYP98koS+Q/WuPi5c5xpv0riC5aQgf5z9o/8PlpOQpZC4NQmtY7e5ucDA==} + /@sanity/insert-menu@1.1.2(@sanity/types@3.75.1)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15): + resolution: {integrity: sha512-9RXorPRqZPBmqjqpAw9USN4c1ZBWQsfxatP9wr9MvO4J3QHDcsQtHIk2IrjH/kCojydTXoAhT09Q9sNLEubOfw==} engines: {node: '>=18.0.0'} peerDependencies: - '@sanity/types': ^3.64.2 + '@sanity/types': '*' react: ^18.3 || >=19.0.0-rc react-dom: ^18.3 || >=19.0.0-rc react-is: ^18.3 || >=19.0.0-rc dependencies: - '@sanity/icons': 3.4.0(react@18.3.1) - '@sanity/types': 3.65.0(debug@4.3.4) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - lodash.startcase: 4.4.0 + '@sanity/icons': 3.6.0(react@18.3.1) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@sanity/ui': 2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) + lodash: 4.17.21 react: 18.3.1 + react-compiler-runtime: 19.0.0-beta-21e868a-20250216(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 transitivePeerDependencies: + - '@emotion/is-prop-valid' - styled-components dev: false - /@sanity/logos@2.1.11(@sanity/color@3.0.6)(react@18.3.1): - resolution: {integrity: sha512-hgLnNCBV4BAfI+3ScD+48ZUwhk8xjALg/60tm3G5v2UYysi0N+S4xTnUNS9KFpDq+j9tOxKHanuSFWT2DCsQmw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@sanity/color': ^2.0 || ^3.0 || ^3.0.0-beta - react: ^18 - dependencies: - '@sanity/color': 3.0.6 - react: 18.3.1 - dev: false - /@sanity/logos@2.1.13(@sanity/color@3.0.6)(react@18.3.1): resolution: {integrity: sha512-PKAbPbM4zn+6wHYjCVwuhmlZnFqyZ9lT/O7OT3BVd2SGAqXoZTimfBOHrVPifytuazdoQ1T2M5eYJTtW/VXLyA==} engines: {node: '>=14.0.0'} @@ -2932,157 +3639,149 @@ packages: react: 18.3.1 dev: false - /@sanity/logos@2.1.13(react@18.3.1): - resolution: {integrity: sha512-PKAbPbM4zn+6wHYjCVwuhmlZnFqyZ9lT/O7OT3BVd2SGAqXoZTimfBOHrVPifytuazdoQ1T2M5eYJTtW/VXLyA==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@sanity/color': ^2.0 || ^3.0 || ^3.0.0-beta - react: ^18.3 || >=19.0.0-rc - dependencies: - react: 18.3.1 - dev: false - - /@sanity/migrate@3.65.0: - resolution: {integrity: sha512-FpyPuipT97gDIo9TLf6TuKHFn5LfdEDhP0Bi7WBZ397avJu1bvDopNieaPWLLmEvKdq0l8ELUh+ynoGE81pqCw==} + /@sanity/migrate@3.75.1(@types/react@18.3.12): + resolution: {integrity: sha512-bXExu9mOCUqfhohN2LsCe7qKNwxXtLj51daS4JTSFwZNlqOcgg1br366jmGaLgM75shUSP54YVA1+VBBzJ88Nw==} engines: {node: '>=18'} dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/mutate': 0.10.2(debug@4.3.4) - '@sanity/types': 3.65.0(debug@4.3.4) - '@sanity/util': 3.65.0(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/mutate': 0.12.1(debug@4.3.4) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@sanity/util': 3.75.1(@types/react@18.3.12)(debug@4.3.4) arrify: 2.0.1 debug: 4.3.4 fast-fifo: 1.3.2 - groq-js: 1.14.0 + groq-js: 1.15.0 p-map: 7.0.1 transitivePeerDependencies: + - '@types/react' - supports-color dev: false - /@sanity/mutate@0.10.2(debug@4.3.4): - resolution: {integrity: sha512-ZkaB3Xkn3H0nBXcWKtyygUmTW/1aRI/XV0+wcfANtBWHQRWAwFQh5Xh6j5bYDduOA31N+XJdYaLcZsv1u5n3uw==} + /@sanity/mutate@0.12.1(debug@4.3.4): + resolution: {integrity: sha512-SuOpMOEwcTcE5fFHpy44qVuGs8NeBAOF8wwN5DYz0Jl4MJZWGsUS81YUeFwQl0XqBZpfiLVzwutp1KYCZPuqUQ==} engines: {node: '>=18'} dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) '@sanity/diff-match-patch': 3.1.1 + '@sanity/uuid': 3.0.2 hotscript: 1.0.13 lodash: 4.17.21 - mendoza: 3.0.7 - nanoid: 5.0.7 + mendoza: 3.0.8 + nanoid: 5.1.0 rxjs: 7.8.1 transitivePeerDependencies: - debug dev: false - /@sanity/mutator@3.37.2: - resolution: {integrity: sha512-F0MvseVtgPBaPxNZtSidF6BQeygviYThgmhRbjZ89AhlRhWiLODvLakdogFmwD1NEQ0tpKn+8m0pQIOHgt2C3w==} + /@sanity/mutator@3.75.1(@types/react@18.3.12): + resolution: {integrity: sha512-QPkumtT3u/zgHUUOwWWKEzkYQsXj/Xzus6kqV4RquI/zJreEip2HcYB4D7I9UedgIQXuCAZyvdfIKbsoTW8Seg==} dependencies: '@sanity/diff-match-patch': 3.1.1 + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) '@sanity/uuid': 3.0.2 debug: 4.3.4 lodash: 4.17.21 transitivePeerDependencies: + - '@types/react' - supports-color dev: false - /@sanity/mutator@3.65.0: - resolution: {integrity: sha512-2j2LnIpodP3bAHclSB19FhpXqR5BSBGtThDtzbbKbjLZqxZ+BTf8aYSH/pzplLoJAotSbbTM7Z9GcJw4Wj7uYQ==} - dependencies: - '@sanity/diff-match-patch': 3.1.1 - '@sanity/types': 3.65.0(debug@4.3.4) - '@sanity/uuid': 3.0.2 - debug: 4.3.4 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color - dev: false - - /@sanity/presentation@1.18.5(@sanity/client@6.22.5)(@sanity/color@3.0.6)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-wbDS/eyi6pG3UO0/PRKaC1SHoaB+FQYu850wbpQR4GENsMDq5sKpIsaCfqvm5RQWcVZm7UmAZQdWA+eVthS84A==} - engines: {node: '>=16.14'} + /@sanity/pkg-utils@6.13.4(debug@4.3.4)(typescript@4.9.5): + resolution: {integrity: sha512-m4x0qyu2wiUHKuVxy/B2kcQRh20RvsyvUlUjPbiM5ENt4hwpJPLFfxtPe53GOCf3NJfcSK/te4yQkMOyL8RzAA==} + engines: {node: '>=18.17.0'} + hasBin: true peerDependencies: - '@sanity/client': ^6.22.5 + babel-plugin-react-compiler: '*' + typescript: 5.4.x || 5.5.x || 5.6.x || 5.7.x + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/comlink': 1.1.4 - '@sanity/icons': 3.4.0(react@18.3.1) - '@sanity/logos': 2.1.13(@sanity/color@3.0.6)(react@18.3.1) - '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - '@sanity/uuid': 3.0.2 - '@types/lodash.isequal': 4.5.8 - fast-deep-equal: 3.1.3 - framer-motion: 11.0.8(react-dom@18.3.1)(react@18.3.1) - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - mendoza: 3.0.7 - mnemonist: 0.39.8 - path-to-regexp: 6.3.0 + '@babel/core': 7.26.0 + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/types': 7.26.9 + '@microsoft/api-extractor': 7.48.1 + '@microsoft/tsdoc-config': 0.17.1 + '@optimize-lodash/rollup-plugin': 5.0.0(rollup@4.34.8) + '@rollup/plugin-alias': 5.1.1(rollup@4.34.8) + '@rollup/plugin-babel': 6.0.4(@babel/core@7.26.0)(rollup@4.34.8) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8) + '@rollup/plugin-json': 6.1.0(rollup@4.34.8) + '@rollup/plugin-node-resolve': 16.0.0(rollup@4.34.8) + '@rollup/plugin-replace': 6.0.2(rollup@4.34.8) + '@rollup/plugin-terser': 0.4.4(rollup@4.34.8) + '@sanity/browserslist-config': 1.0.5 + browserslist: 4.24.4 + cac: 6.7.14 + chalk: 4.1.2 + chokidar: 4.0.3 + esbuild: 0.24.2 + esbuild-register: 3.6.0(esbuild@0.24.2) + find-config: 1.0.0 + get-latest-version: 5.1.0(debug@4.3.4) + git-url-parse: 16.0.1 + globby: 11.1.0 + jsonc-parser: 3.3.1 + mkdirp: 3.0.1 + outdent: 0.8.0 + parse-git-config: 3.0.0 + pkg-up: 3.1.0 + prettier: 3.5.1 + pretty-bytes: 5.6.0 + prompts: 2.4.2 + recast: 0.23.9 + rimraf: 4.4.1 + rollup: 4.34.8 + rollup-plugin-esbuild: 6.2.0(esbuild@0.24.2)(rollup@4.34.8) rxjs: 7.8.1 - suspend-react: 0.1.3(react@18.3.1) - use-effect-event: 1.0.2(react@18.3.1) + treeify: 1.1.0 + typescript: 4.9.5 + uuid: 11.0.5 + zod: 3.24.1 + zod-validation-error: 3.4.0(zod@3.24.1) transitivePeerDependencies: - - '@sanity/color' - - react - - react-dom - - react-is - - styled-components + - '@types/babel__core' + - '@types/node' + - debug + - supports-color dev: false - /@sanity/presentation@1.18.5(@sanity/client@6.22.5)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-wbDS/eyi6pG3UO0/PRKaC1SHoaB+FQYu850wbpQR4GENsMDq5sKpIsaCfqvm5RQWcVZm7UmAZQdWA+eVthS84A==} - engines: {node: '>=16.14'} + /@sanity/presentation-comlink@1.0.7(@sanity/client@6.28.0)(@sanity/types@3.75.1): + resolution: {integrity: sha512-rS35zSObecm5jMVPe+Ja973Nrepi7KNMD6Ts4eYR86c7QjdhLzOOKl8VkTu5RXpHzvH651BWCwxTOatd7BuiHQ==} + engines: {node: '>=18'} peerDependencies: - '@sanity/client': ^6.22.5 + '@sanity/client': ^6.28.0 dependencies: - '@sanity/client': 6.22.5 - '@sanity/comlink': 1.1.4 - '@sanity/icons': 3.4.0(react@18.3.1) - '@sanity/logos': 2.1.13(react@18.3.1) - '@sanity/preview-url-secret': 2.0.4(@sanity/client@6.22.5) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - '@sanity/uuid': 3.0.2 - '@types/lodash.isequal': 4.5.8 - fast-deep-equal: 3.1.3 - framer-motion: 11.0.8(react-dom@18.3.1)(react@18.3.1) - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - mendoza: 3.0.7 - mnemonist: 0.39.8 - path-to-regexp: 6.3.0 - rxjs: 7.8.1 - suspend-react: 0.1.3(react@18.3.1) - use-effect-event: 1.0.2(react@18.3.1) + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/comlink': 3.0.1 + '@sanity/visual-editing-types': 1.0.7(@sanity/client@6.28.0)(@sanity/types@3.75.1) transitivePeerDependencies: - - '@sanity/color' - - react - - react-dom - - react-is - - styled-components + - '@sanity/types' dev: false - /@sanity/preview-url-secret@2.0.4(@sanity/client@6.22.5): - resolution: {integrity: sha512-II8MtIqXpwTsNe0MzhOtD2QbOSaD0mFCswJJRM0W4eyg4nT6/QDniDznV7/5XdqpssAnwl7JUEHFAzLle417hg==} + /@sanity/preview-url-secret@2.1.4(@sanity/client@6.28.0): + resolution: {integrity: sha512-D66VcYbGGXIkF4VQrvWo61l921LdyHKZgg5PYH0ZHcAE/wTXrMIM93I70jOp1DpN913c0vJ1sLxbLCbrEk7n8Q==} engines: {node: '>=18'} peerDependencies: - '@sanity/client': ^6.22.5 + '@sanity/client': ^6.27.2 dependencies: - '@sanity/client': 6.22.5 + '@sanity/client': 6.28.0(debug@4.3.4) '@sanity/uuid': 3.0.2 dev: false - /@sanity/schema@3.65.0(debug@4.3.4): - resolution: {integrity: sha512-1fshBplIzHQrSz0kqThY/O5RYWs+bIoyoUMWXP1eliamSKOAxREz7hna93G5ZjBzThJUbPy9F8Pj/ga0N/po3Q==} + /@sanity/schema@3.75.1(@types/react@18.3.12)(debug@4.3.4): + resolution: {integrity: sha512-FY4zYaSeeSrc4WvZBHUNQ4GBD6aV9G5JcG4rUwvyIgUsrJxJtWGIVmvitfK+c6uschFE0oQ+iqyq1jTqLOu27w==} dependencies: '@sanity/generate-help-url': 3.0.0 - '@sanity/types': 3.65.0(debug@4.3.4) - arrify: 1.0.1 - groq-js: 1.14.0 + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + arrify: 2.0.1 + groq-js: 1.15.0 humanize-list: 1.0.1 leven: 3.1.0 lodash: 4.17.21 object-inspect: 1.13.1 transitivePeerDependencies: + - '@types/react' - debug - supports-color dev: false @@ -3099,25 +3798,47 @@ packages: typeid-js: 0.3.0 dev: false - /@sanity/types@3.37.2(debug@4.3.4): - resolution: {integrity: sha512-1EfKkNlJ86wIDtc7oFHb79JI8lKDOxKDYrkmwhvuHgJY83GpSABc1kFdbwAtWZfrWVWyqVXUv/KlNwA3b99y/g==} + /@sanity/template-validator@2.4.0(debug@4.3.4)(typescript@4.9.5): + resolution: {integrity: sha512-gkQ4hPbfad7CtLrl5ZFReqKbFEBf9ijsyqNJaKny53QTMlyGgwL0JKxiM+bwAiU0uOUT0vSqdzSAxDJNF0BDpg==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + '@actions/core': 1.11.1 + '@actions/github': 6.0.0 + '@sanity/pkg-utils': 6.13.4(debug@4.3.4)(typescript@4.9.5) + yaml: 2.7.0 + transitivePeerDependencies: + - '@types/babel__core' + - '@types/node' + - babel-plugin-react-compiler + - debug + - supports-color + - typescript + dev: false + + /@sanity/types@3.68.3(@types/react@18.3.12)(debug@4.3.4): + resolution: {integrity: sha512-JemibQXC08rHIXgjUH/p2TCiiD9wq6+dDkCvVHOooCvaYZNhAe2S9FAEkaA6qwWtPzyY2r6/tj1eDgNeLgXN1Q==} + peerDependencies: + '@types/react': 18 || 19 dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) '@types/react': 18.3.12 transitivePeerDependencies: - debug dev: false - /@sanity/types@3.65.0(debug@4.3.4): - resolution: {integrity: sha512-UHpxt//qXWeNSauOFRzZbtSZ9wRGJ92L/DKzFZBEvAdqZkotKmgl7qgbmXwwOw4Gjm1bmf5H/14cKoB+Af0mZw==} + /@sanity/types@3.75.1(@types/react@18.3.12)(debug@4.3.4): + resolution: {integrity: sha512-Vf4mWuVRjvo8WfUgpbpjUykBxwTsJDBOjkPIWppR1KlHoK9/W1MWQ23WqOp6Bw5OycrOjyXbeECyDKJdOOj+MQ==} + peerDependencies: + '@types/react': 18 || 19 dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) '@types/react': 18.3.12 transitivePeerDependencies: - debug dev: false - /@sanity/ui@1.9.3(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): + /@sanity/ui@1.9.3(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15): resolution: {integrity: sha512-AdWEVFaK0Snk6xxP0lGPVP3QQYKwzkfGFpFZnL9d6UtWt8yeuS8BMLVAzmXzg14hrqH50ex9nvNl3eq6a0MWiw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3135,11 +3856,11 @@ packages: react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 react-refractor: 2.2.0(react@18.3.1) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) dev: false - /@sanity/ui@2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-DOelQQq5htbV9THZwcASdHAiA2wdPL/zuvrrurC8PPMGzMxHJqqMjdXLrd2zdckTgEjXcgn6rPEFZ/YY6v5CSQ==} + /@sanity/ui@2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15): + resolution: {integrity: sha512-Gzg1QHi5X6zWc4NrfR9WdOxM/kbXgbcezhtXlQjmTpecxZz1MBcUatEpwVt7MG9A79V7lCY3lJ8hVN9IcWdNbA==} engines: {node: '>=14.0.0'} peerDependencies: react: ^18 || >=19.0.0-0 @@ -3148,42 +3869,47 @@ packages: styled-components: ^5.2 || ^6 dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) + '@juggle/resize-observer': 3.4.0 '@sanity/color': 3.0.6 - '@sanity/icons': 3.4.0(react@18.3.1) + '@sanity/icons': 3.6.0(react@18.3.1) csstype: 3.1.3 - framer-motion: 11.0.8(react-dom@18.3.1)(react@18.3.1) + framer-motion: 12.4.3(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 - react-compiler-runtime: 19.0.0-beta-df7b47d-20241124(react@18.3.1) + react-compiler-runtime: 19.0.0-beta-21e868a-20250216(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 react-refractor: 2.2.0(react@18.3.1) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) use-effect-event: 1.0.2(react@18.3.1) + transitivePeerDependencies: + - '@emotion/is-prop-valid' dev: false - /@sanity/util@3.37.2(debug@4.3.4): - resolution: {integrity: sha512-hq0eLjyV2iaOm9ivtPw12YTQ4QsE3jnV/Ui0zhclEhu8Go5JiaEhFt2+WM2lLGRH6qcSA414QbsCNCcyhJL6rA==} + /@sanity/util@3.68.3(@types/react@18.3.12)(debug@4.3.4): + resolution: {integrity: sha512-J4Ov75oUvMqx221VEJkKNSibzF0D8VyCzejtwftW+jP80XguYFqBz7bAcTmwJ5vnxNUoAUCeAdZBoOYVpgew4g==} engines: {node: '>=18'} dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/types': 3.37.2(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/types': 3.68.3(@types/react@18.3.12)(debug@4.3.4) get-random-values-esm: 1.0.2 - moment: 2.29.4 + moment: 2.30.1 rxjs: 7.8.1 transitivePeerDependencies: + - '@types/react' - debug dev: false - /@sanity/util@3.65.0(debug@4.3.4): - resolution: {integrity: sha512-AV2akGXpTyD0HLPtYh5qidjmiuCZzvgWVfLLS3cToyhAtH5nebPo+9VroU+hQsIKN6SOAN0qqihI+yWsADOYTw==} + /@sanity/util@3.75.1(@types/react@18.3.12)(debug@4.3.4): + resolution: {integrity: sha512-J795sPUtZoa9mW1c8x9hXRmEF3yLC9iqwiOIdG/5jkF6cmQSTLkf0HZmD+8EokmhuEjNud8rIR4Z3ozj9Z7ALA==} engines: {node: '>=18'} dependencies: - '@sanity/client': 6.22.5(debug@4.3.4) - '@sanity/types': 3.65.0(debug@4.3.4) + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) get-random-values-esm: 1.0.2 moment: 2.30.1 rxjs: 7.8.1 transitivePeerDependencies: + - '@types/react' - debug dev: false @@ -3194,10 +3920,10 @@ packages: uuid: 8.3.2 dev: false - /@sanity/vision@3.65.0(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-KPsOKqUB0BMfdUBQG5EmhuAC2s1/DzEp4gyQtrVG+nWVCEIocuHhAtAVjFgdd9LqCHU1Ha+WvH2kluZX+lftfQ==} + /@sanity/vision@3.75.1(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15): + resolution: {integrity: sha512-y0e9/Rk3qZOLpOXt+loyioOKF5dsddOipwFPxkrO/kpqaEajHwySOZd8rxCn7LAXmiHB7GWLvt6GMbcW09JPSw==} peerDependencies: - react: ^18 + react: ^18 || ^19.0.0 styled-components: ^6.1 dependencies: '@codemirror/autocomplete': 6.12.0 @@ -3209,11 +3935,11 @@ packages: '@codemirror/view': 6.23.0 '@juggle/resize-observer': 3.4.0 '@lezer/highlight': 1.2.0 - '@rexxars/react-json-inspector': 8.0.1(react@18.3.1) - '@rexxars/react-split-pane': 0.1.93(react-dom@18.3.1)(react@18.3.1) + '@rexxars/react-json-inspector': 9.0.1(react@18.3.1) + '@rexxars/react-split-pane': 1.0.0(react-dom@18.3.1)(react@18.3.1) '@sanity/color': 3.0.6 - '@sanity/icons': 3.4.0(react@18.3.1) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + '@sanity/icons': 3.6.0(react@18.3.1) + '@sanity/ui': 2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) '@uiw/react-codemirror': 4.21.21(@codemirror/autocomplete@6.12.0)(@codemirror/language@6.10.0)(@codemirror/search@6.5.5)(@codemirror/view@6.23.0)(react-dom@18.3.1)(react@18.3.1) is-hotkey-esm: 1.0.0 json-2-csv: 5.5.5 @@ -3221,98 +3947,87 @@ packages: lodash: 4.17.21 quick-lru: 5.1.1 react: 18.3.1 - react-compiler-runtime: 19.0.0-beta-df7b47d-20241124(react@18.3.1) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + react-compiler-runtime: 19.0.0-beta-30d8a17-20250209(react@18.3.1) + react-fast-compare: 3.2.2 + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) transitivePeerDependencies: + - '@emotion/is-prop-valid' - react-dom - react-is dev: false - /@sentry-internal/browser-utils@8.26.0: - resolution: {integrity: sha512-O2Tj+WK33/ZVp5STnz6ZL0OO+/Idk2KqsH0ITQkQmyZ2z0kdzWOeqK7s7q3/My6rB1GfPcyqPcBBv4dVv92FYQ==} - engines: {node: '>=14.18'} + /@sanity/visual-editing-types@1.0.7(@sanity/client@6.28.0)(@sanity/types@3.75.1): + resolution: {integrity: sha512-xfJfrKa5S0QD/E1NVAzY2c/f5exARJGBGcZvJpCTVS7hGPl0DJMnAeA8Ddn+7yIGOst1B5ivhT9QUQPEIoBorw==} + engines: {node: '>=18'} + peerDependencies: + '@sanity/client': ^6.28.0 + '@sanity/types': '*' + peerDependenciesMeta: + '@sanity/types': + optional: true dependencies: - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sanity/client': 6.28.0(debug@4.3.4) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) dev: false - /@sentry-internal/feedback@8.26.0: - resolution: {integrity: sha512-hQtw1gg8n6ERK1UH47F7ZI1zOsbhu0J2VX+TrnkpaQR2FgxDW1oe9Ja6oCV4CQKuR4w+1ZI/Kj4imSt0K33kEw==} + /@sentry-internal/browser-utils@8.55.0: + resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==} engines: {node: '>=14.18'} dependencies: - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry/core': 8.55.0 dev: false - /@sentry-internal/replay-canvas@8.26.0: - resolution: {integrity: sha512-2CFQW6f9aJHIo/DqmqYa9PaYoLn1o36ywc0h8oyGrD4oPCbrnE5F++PmTdc71GBODu41HBn/yoCTLmxOD+UjpA==} + /@sentry-internal/feedback@8.55.0: + resolution: {integrity: sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/replay': 8.26.0 - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry/core': 8.55.0 dev: false - /@sentry-internal/replay@8.26.0: - resolution: {integrity: sha512-JDY7W2bswlp5c3483lKP4kcb75fHNwGNfwD8x8FsY9xMjv7nxeXjLpR5cCEk1XqPq2+n6w4j7mJOXhEXGiUIKg==} + /@sentry-internal/replay-canvas@8.55.0: + resolution: {integrity: sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/browser-utils': 8.26.0 - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry-internal/replay': 8.55.0 + '@sentry/core': 8.55.0 dev: false - /@sentry/browser@8.26.0: - resolution: {integrity: sha512-e5s6eKlwLZWzTwQcBwqyAGZMMuQROW9Z677VzwkSyREWAIkKjfH2VBxHATnNGc0IVkNHjD7iH3ixo3C0rLKM3w==} + /@sentry-internal/replay@8.55.0: + resolution: {integrity: sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/browser-utils': 8.26.0 - '@sentry-internal/feedback': 8.26.0 - '@sentry-internal/replay': 8.26.0 - '@sentry-internal/replay-canvas': 8.26.0 - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry-internal/browser-utils': 8.55.0 + '@sentry/core': 8.55.0 dev: false - /@sentry/core@8.26.0: - resolution: {integrity: sha512-g/tVmTZD4GNbLFf++hKJfBpcCAtduFEMLnbfa9iT/QEZjlmP+EzY+GsH9bafM5VsNe8DiOUp+kJKWtShzlVdBA==} + /@sentry/browser@8.55.0: + resolution: {integrity: sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==} engines: {node: '>=14.18'} dependencies: - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry-internal/browser-utils': 8.55.0 + '@sentry-internal/feedback': 8.55.0 + '@sentry-internal/replay': 8.55.0 + '@sentry-internal/replay-canvas': 8.55.0 + '@sentry/core': 8.55.0 + dev: false + + /@sentry/core@8.55.0: + resolution: {integrity: sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==} + engines: {node: '>=14.18'} dev: false - /@sentry/react@8.26.0(react@18.3.1): - resolution: {integrity: sha512-dYoC0xzcqq8zmNMFoTWidhA7mVd3RDz/nAUn6C8yK/hkKA7bUknYCkhpESGLZfHaGwSKzeXRXKd/o/cgUVM9eA==} + /@sentry/react@8.55.0(react@18.3.1): + resolution: {integrity: sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA==} engines: {node: '>=14.18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x dependencies: - '@sentry/browser': 8.26.0 - '@sentry/core': 8.26.0 - '@sentry/types': 8.26.0 - '@sentry/utils': 8.26.0 + '@sentry/browser': 8.55.0 + '@sentry/core': 8.55.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 dev: false - /@sentry/types@8.26.0: - resolution: {integrity: sha512-zKmh6SWsJh630rpt7a9vP4Cm4m1C2gDTUqUiH565CajCL/4cePpNWYrNwalSqsOSL7B9OrczA1+n6a6XvND+ng==} - engines: {node: '>=14.18'} - dev: false - - /@sentry/utils@8.26.0: - resolution: {integrity: sha512-xvlPU9Hd2BlyT+FhWHGNwnxWqdVRk2AHnDtVcW4Ma0Ri5EwS+uy4Jeik5UkSv8C5RVb9VlxFmS8LN3I1MPJsLw==} - engines: {node: '>=14.18'} - dependencies: - '@sentry/types': 8.26.0 - dev: false - /@tanem/react-nprogress@5.0.33(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-FjzTSuXuw6+lPguiV4cshT7L2K2JLPqwFT29fuFuusRs+Ps0IlkqycYiY6Dg99GuamBWWm0b1pRiSggXmTj3lQ==} peerDependencies: @@ -3337,13 +4052,15 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /@tanstack/react-virtual@3.0.0-beta.54(react@18.3.1): - resolution: {integrity: sha512-D1mDMf4UPbrtHRZZriCly5bXTBMhylslm4dhcHqTtDJ6brQcgGmk8YD9JdWBGWfGSWPKoh2x1H3e7eh+hgPXtQ==} + /@tanstack/react-virtual@3.13.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 dependencies: - '@tanstack/virtual-core': 3.0.0-beta.54 + '@tanstack/virtual-core': 3.13.0 react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false /@tanstack/table-core@8.20.1: @@ -3351,15 +4068,19 @@ packages: engines: {node: '>=12'} dev: false - /@tanstack/virtual-core@3.0.0-beta.54: - resolution: {integrity: sha512-jtkwqdP2rY2iCCDVAFuaNBH3fiEi29aTn2RhtIoky8DTTiCdc48plpHHreLwmv1PICJ4AJUUESaq3xa8fZH8+g==} + /@tanstack/virtual-core@3.13.0: + resolution: {integrity: sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==} + dev: false + + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: false /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__generator': 7.6.7 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.4 @@ -3368,20 +4089,24 @@ packages: /@types/babel__generator@7.6.7: resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 dev: false /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 dev: false /@types/babel__traverse@7.20.4: resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.26.0 + dev: false + + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} dev: false /@types/event-source-polyfill@1.0.5: @@ -3395,13 +4120,6 @@ packages: dependencies: '@types/node': 18.14.6 - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 18.14.6 - dev: false - /@types/hast@2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: @@ -3414,20 +4132,6 @@ packages: '@types/react': 18.3.12 hoist-non-react-statics: 3.3.2 - /@types/lodash.isequal@4.5.8: - resolution: {integrity: sha512-uput6pg4E/tj2LGxCZo9+y27JNyB2OZuuI/T5F+ylVDYuqICLG2/ktjxx0v6GvVntAf8TvEzeQLcV0ffRirXuA==} - dependencies: - '@types/lodash': 4.14.202 - dev: false - - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - dev: false - - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: false - /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: false @@ -3443,6 +4147,10 @@ packages: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false + /@types/parse-path@7.0.3: + resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} + dev: false + /@types/progress-stream@2.0.5: resolution: {integrity: sha512-5YNriuEZkHlFHHepLIaxzq3atGeav1qCTGzB74HKWpo66qjfostF+rHc785YYYHeBytve8ZG3ejg42jEIfXNiQ==} dependencies: @@ -3451,14 +4159,8 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-copy-to-clipboard@5.0.4: - resolution: {integrity: sha512-otTJsJpofYAeaIeOwV5xBUGpo6exXG2HX7X4nseToCB2VgPEBxGBHCm/FecZ676doNR7HCSTVtmohxfG2b3/yQ==} - dependencies: - '@types/react': 18.3.12 - dev: false - - /@types/react-is@18.3.0: - resolution: {integrity: sha512-KZJpHUkAdzyKj/kUHJDc6N7KyidftICufJfOFpiG6haL/BDQNQt5i4n1XDUL/nDZAtGLHDSWRYpLzKTAKSvX6w==} + /@types/react-is@19.0.0: + resolution: {integrity: sha512-71dSZeeJ0t3aoPyY9x6i+JNSvg5m9EF2i2OlSZI5QoJuI8Ocgor610i+4A10TQmURR+0vLwcVCEYFpXdzM1Biw==} dependencies: '@types/react': 18.3.12 dev: false @@ -3484,6 +4186,10 @@ packages: '@types/prop-types': 15.7.5 csstype: 3.1.3 + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: false + /@types/shallow-equals@1.0.0: resolution: {integrity: sha512-XtGSj7GYPfJwaklDtMEONj+kmpyCP8OLYoPqp/ROM8BL1VaF2IgYbxiEKfLvOyHN7c2d1KAFYzy6EIu8CSFt1A==} dev: false @@ -3510,6 +4216,12 @@ packages: '@types/node': 18.14.6 dev: false + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + requiresBuild: true + dev: false + optional: true + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false @@ -3571,7 +4283,7 @@ packages: - '@codemirror/search' dev: false - /@vitejs/plugin-react@4.3.4(vite@4.5.1): + /@vitejs/plugin-react@4.3.4(vite@6.1.0): resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3582,16 +4294,16 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 4.5.1 + vite: 6.1.0 transitivePeerDependencies: - supports-color dev: false - /@xstate/react@5.0.0(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.0): - resolution: {integrity: sha512-MkYMpmqqCdK43wSl/V/jSpsvumzV4RSG2ZOUEAIrg/w36BJpyufMrsR0rz7POX5ICF5s3xzP9q7Hd5TyM5SSyQ==} + /@xstate/react@5.0.2(@types/react@18.3.12)(react@18.3.1)(xstate@5.19.2): + resolution: {integrity: sha512-x5GOrE0ZYjU2ba986u0CCp7SaPwzElSn1SW0mZ9MuBgsZ+BW7vTLVOvGmURynwojdso8d6nVbK3c2+MRVqGVgA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-0 - xstate: ^5.19.0 + xstate: ^5.19.2 peerDependenciesMeta: xstate: optional: true @@ -3599,7 +4311,7 @@ packages: react: 18.3.1 use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.12)(react@18.3.1) use-sync-external-store: 1.2.0(react@18.3.1) - xstate: 5.19.0 + xstate: 5.19.2 transitivePeerDependencies: - '@types/react' dev: false @@ -3611,6 +4323,12 @@ packages: event-target-shim: 5.0.1 dev: false + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} @@ -3620,6 +4338,49 @@ packages: - supports-color dev: false + /agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + dev: false + + /ajv-draft-04@1.0.0(ajv@8.13.0): + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: false + + /ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: false + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false + + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3683,6 +4444,12 @@ packages: zip-stream: 6.0.1 dev: false + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -3718,6 +4485,13 @@ packages: engines: {node: '>=8'} dev: false + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: false + /async-mutex@0.4.1: resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} dependencies: @@ -3742,8 +4516,8 @@ packages: engines: {node: '>= 0.4'} dev: false - /axios@1.7.8: - resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==} + /axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 @@ -3765,38 +4539,38 @@ packages: resolve: 1.22.1 dev: false - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: false @@ -3815,6 +4589,10 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: false + /bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} dependencies: @@ -3871,17 +4649,6 @@ packages: pako: 0.2.9 dev: false - /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.30001614 - electron-to-chromium: 1.4.751 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: false - /browserslist@4.24.2: resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3893,6 +4660,17 @@ packages: update-browserslist-db: 1.1.1(browserslist@4.24.2) dev: false + /browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.101 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + dev: false + /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} dev: false @@ -3939,6 +4717,19 @@ packages: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: false + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: false + + /call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + dev: false + /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: @@ -3970,14 +4761,14 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001614: - resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} - dev: false - /caniuse-lite@1.0.30001684: resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} dev: false + /caniuse-lite@1.0.30001700: + resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} + dev: false + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4022,6 +4813,13 @@ packages: fsevents: 2.3.3 dev: false + /chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + dependencies: + readdirp: 4.1.2 + dev: false + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false @@ -4159,6 +4957,13 @@ packages: typedarray: 0.0.6 dev: false + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + /configstore@5.0.1: resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} engines: {node: '>=8'} @@ -4171,11 +4976,6 @@ packages: xdg-basedir: 4.0.0 dev: false - /connect-history-api-fallback@1.6.0: - resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} - engines: {node: '>=0.8'} - dev: false - /console-table-printer@2.11.1: resolution: {integrity: sha512-8LfFpbF/BczoxPwo2oltto5bph8bJkGOATXsg3E9ddMJOGnWJciKHldx2zDj5XIBflaKzPfVCjOTl6tMh7lErg==} dependencies: @@ -4199,7 +4999,7 @@ packages: /core-js-compat@3.37.0: resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} dependencies: - browserslist: 4.23.0 + browserslist: 4.24.2 dev: false /core-util-is@1.0.3: @@ -4230,13 +5030,6 @@ packages: readable-stream: 4.5.2 dev: false - /create-react-class@15.7.0: - resolution: {integrity: sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false - /crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} dev: false @@ -4309,6 +5102,14 @@ packages: rrweb-cssom: 0.6.0 dev: false + /cssstyle@4.2.1: + resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} + engines: {node: '>=18'} + dependencies: + '@asamuzakjp/css-color': 2.8.3 + rrweb-cssom: 0.8.0 + dev: false + /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -4370,6 +5171,18 @@ packages: ms: 2.1.2 dev: false + /debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -4451,6 +5264,16 @@ packages: engines: {node: '>= 16'} dev: false + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -4484,6 +5307,10 @@ packages: engines: {node: '>=0.4.0'} dev: false + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: false + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false @@ -4535,6 +5362,12 @@ packages: domelementtype: 2.3.0 dev: false + /dompurify@3.2.4: + resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} + optionalDependencies: + '@types/trusted-types': 2.0.7 + dev: false + /domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: @@ -4550,6 +5383,15 @@ packages: is-obj: 2.0.0 dev: false + /dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + dev: false + /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: @@ -4572,8 +5414,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: false - /electron-to-chromium@1.4.751: - resolution: {integrity: sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==} + /electron-to-chromium@1.5.101: + resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} dev: false /electron-to-chromium@1.5.65: @@ -4599,6 +5441,11 @@ packages: engines: {node: '>=0.12'} dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -4650,6 +5497,27 @@ packages: which-typed-array: 1.1.13 dev: false + /es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + dev: false + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false + + /es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + dev: false + + /es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: false + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -4659,6 +5527,16 @@ packages: has-tostringtag: 1.0.0 dev: false + /es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: false + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -4679,34 +5557,15 @@ packages: - supports-color dev: false - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 + /esbuild-register@3.6.0(esbuild@0.24.2): + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4 + esbuild: 0.24.2 + transitivePeerDependencies: + - supports-color dev: false /esbuild@0.21.5: @@ -4740,9 +5599,37 @@ packages: '@esbuild/win32-x64': 0.21.5 dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 dev: false /escalade@3.2.0: @@ -4755,9 +5642,19 @@ packages: engines: {node: '>=0.8.0'} dev: false - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: false /esutils@2.0.3: @@ -4836,6 +5733,17 @@ packages: pend: 1.2.0 dev: false + /fdir@6.4.3(picomatch@4.0.2): + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: + picomatch: 4.0.2 + dev: false + /file-selector@0.4.0: resolution: {integrity: sha512-iACCiXeMYOvZqlF1kTiYINzgepRBymz1wwjiuup9u9nayhb6g4fSwiyJ/6adli+EPwrWtpgQAh2PoS7HukEGEg==} engines: {node: '>= 10'} @@ -4888,6 +5796,13 @@ packages: pkg-dir: 3.0.0 dev: false + /find-config@1.0.0: + resolution: {integrity: sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==} + engines: {node: '>= 0.12'} + dependencies: + user-home: 2.0.0 + dev: false + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false @@ -4922,8 +5837,8 @@ packages: readable-stream: 3.6.1 dev: false - /focus-lock@0.11.6: - resolution: {integrity: sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==} + /focus-lock@1.3.6: + resolution: {integrity: sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==} engines: {node: '>=10'} dependencies: tslib: 2.6.2 @@ -4937,9 +5852,20 @@ packages: peerDependenciesMeta: debug: optional: true + dev: false - /follow-redirects@1.15.6(debug@4.3.4): - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + /follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /follow-redirects@1.15.9(debug@4.3.4): + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4973,6 +5899,16 @@ packages: mime-types: 2.1.35 dev: false + /form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + dev: false + /framer-motion@10.16.4(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-p9V9nGomS3m6/CALXqv6nFGMuFOxbWsmaOrdmhyQimMIlLl3LC7h7l86wge/Js/8cRu5ktutS/zlzgR7eBOtFA==} peerDependencies: @@ -4991,22 +5927,25 @@ packages: '@emotion/is-prop-valid': 0.8.8 dev: false - /framer-motion@11.0.8(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-1KSGNuqe1qZkS/SWQlDnqK2VCVzRVEoval379j0FiUBJAZoqgwyvqFkfvJbgW2IPFo4wX16K+M0k5jO23lCIjA==} + /framer-motion@12.4.3(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-rsMeO7w3dKyNG09o3cGwSH49iHU+VgDmfSSfsX+wfkO3zDA6WWkh4sUsMXd155YROjZP+7FTIhDrBYfgZeHjKQ==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true react: optional: true react-dom: optional: true dependencies: + motion-dom: 12.0.0 + motion-utils: 12.0.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 dev: false /from2@2.3.0: @@ -5020,6 +5959,15 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false @@ -5077,28 +6025,45 @@ packages: hasown: 2.0.0 dev: false - /get-it@8.6.5: - resolution: {integrity: sha512-o1hjPwrb/icm3WJbCweTSq8mKuDfJlqwbFauI+Pdgid99at/BFaBXFBJZE+uqvHyOVARE4z680S44vrDm8SsCw==} + /get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + dev: false + + /get-it@8.6.7: + resolution: {integrity: sha512-AMEotvykAlcEPTPmYeZPqr9w3K53Ni8z1tplo1mwNS8T4i/gr5T7mSfvaLhhIQhF+0thIH901kLdDA5d5bvDGA==} engines: {node: '>=14.0.0'} dependencies: '@types/follow-redirects': 1.14.4 '@types/progress-stream': 2.0.5 decompress-response: 7.0.0 - follow-redirects: 1.15.6 + follow-redirects: 1.15.9 is-retry-allowed: 2.2.0 progress-stream: 2.0.0 tunnel-agent: 0.6.0 transitivePeerDependencies: - debug + dev: true - /get-it@8.6.5(debug@4.3.4): - resolution: {integrity: sha512-o1hjPwrb/icm3WJbCweTSq8mKuDfJlqwbFauI+Pdgid99at/BFaBXFBJZE+uqvHyOVARE4z680S44vrDm8SsCw==} + /get-it@8.6.7(debug@4.3.4): + resolution: {integrity: sha512-AMEotvykAlcEPTPmYeZPqr9w3K53Ni8z1tplo1mwNS8T4i/gr5T7mSfvaLhhIQhF+0thIH901kLdDA5d5bvDGA==} engines: {node: '>=14.0.0'} dependencies: '@types/follow-redirects': 1.14.4 '@types/progress-stream': 2.0.5 decompress-response: 7.0.0 - follow-redirects: 1.15.6(debug@4.3.4) + follow-redirects: 1.15.9(debug@4.3.4) is-retry-allowed: 2.2.0 progress-stream: 2.0.0 tunnel-agent: 0.6.0 @@ -5106,6 +6071,26 @@ packages: - debug dev: false + /get-latest-version@5.1.0(debug@4.3.4): + resolution: {integrity: sha512-Q6IBWr/zzw57zIkJmNhI23eRTw3nZ4BWWK034meLwOYU9L3J3IpXiyM73u2pYUwN6U7ahkerCwg2T0jlxiLwsw==} + engines: {node: '>=14.18'} + dependencies: + get-it: 8.6.7(debug@4.3.4) + registry-auth-token: 5.1.0 + registry-url: 5.1.0 + semver: 7.5.4 + transitivePeerDependencies: + - debug + dev: false + + /get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + dev: false + /get-random-values-esm@1.0.2: resolution: {integrity: sha512-HMSDTgj1HPFAuZG0FqxzHbYt5JeEGDUeT9r1RLXhS6RZQS8rLRjokgjZ0Pd28CN0lhXlRwfH6eviZqZEJ2kIoA==} dependencies: @@ -5142,6 +6127,12 @@ packages: get-intrinsic: 1.2.2 dev: false + /get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: false + /get-uri@2.0.4: resolution: {integrity: sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==} dependencies: @@ -5155,6 +6146,24 @@ packages: - supports-color dev: false + /git-config-path@2.0.0: + resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} + engines: {node: '>=4'} + dev: false + + /git-up@8.0.1: + resolution: {integrity: sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==} + dependencies: + is-ssh: 1.4.1 + parse-url: 9.2.0 + dev: false + + /git-url-parse@16.0.1: + resolution: {integrity: sha512-mcD36GrhAzX5JVOsIO52qNpgRyFzYWRbU1VSRFCvJt1IJvqfvH427wWw/CFqkWvjVPtdG5VTx4MKUeC5GeFPDQ==} + dependencies: + git-up: 8.0.1 + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -5174,16 +6183,27 @@ packages: path-scurry: 1.10.2 dev: false - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + /glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} + engines: {node: 20 || >=22} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 4.0.3 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + dev: false + + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.2 dev: false /global@4.4.0: @@ -5205,15 +6225,13 @@ packages: define-properties: 1.2.0 dev: false - /globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: - '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -5225,12 +6243,17 @@ packages: get-intrinsic: 1.2.2 dev: false + /gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + dev: false + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: false - /groq-js@1.14.0: - resolution: {integrity: sha512-nrrEswAovzFcG2nXWHCwbXq0ciavKSq8ZvuqT93zxIHWGX3FYCN+MkvHyYRTVuM4SuQAjU7FXkcN3DBt4BHTxA==} + /groq-js@1.15.0: + resolution: {integrity: sha512-PB0phOsvoYq6V5G5K5nOUDhzHH6NaqlzSaUmjBNS487kU/CJ0m2xIuvbnZM5nz1oC1jfDpCW3IXh3GKpMpU5Pw==} engines: {node: '>= 14'} dependencies: debug: 4.3.4 @@ -5243,8 +6266,8 @@ packages: engines: {node: '>=18'} dev: false - /groq@3.65.0: - resolution: {integrity: sha512-oUduPA88LIINjOJRCdwY7o5CD7rp6xnaDpSvtIe84Q/cr94KYqXPO6BShRVrKQ/I2OJdGA3Jrcu3SfV4oJuMJw==} + /groq@3.75.1: + resolution: {integrity: sha512-CCj2w9yKcPlNnMlU76t5DvUryFlY0OnYbmRQpXpClm4Yts9mkHCfZUqrJUMP7nXCjyf49h06fHtj1CgFLq15ag==} engines: {node: '>=18'} dev: false @@ -5295,6 +6318,11 @@ packages: engines: {node: '>= 0.4'} dev: false + /has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + dev: false + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} @@ -5302,6 +6330,13 @@ packages: has-symbols: 1.0.3 dev: false + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -5316,6 +6351,13 @@ packages: function-bind: 1.1.2 dev: false + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: false @@ -5384,6 +6426,16 @@ packages: - supports-color dev: false + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} @@ -5394,6 +6446,16 @@ packages: - supports-color dev: false + /https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.3 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /humanize-list@1.0.1: resolution: {integrity: sha512-4+p3fCRF21oUqxhK0yZ6yaSP/H5/wZumc7q1fH99RkW7Q13aAxDeP78BKjoR+6y+kaHqKF/JWuQhsNuuI2NKtA==} dev: false @@ -5436,6 +6498,11 @@ packages: resolve-from: 4.0.0 dev: false + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: false + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5446,17 +6513,13 @@ packages: engines: {node: '>=8'} dev: false - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} @@ -5521,6 +6584,13 @@ packages: has: 1.0.3 dev: false + /is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: false + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -5581,6 +6651,10 @@ packages: engines: {node: '>=8'} dev: false + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: false + /is-natural-number@4.0.1: resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} dev: false @@ -5628,6 +6702,12 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: false + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.6 + dev: false + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -5646,6 +6726,12 @@ packages: call-bind: 1.0.5 dev: false + /is-ssh@1.4.1: + resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==} + dependencies: + protocols: 2.0.2 + dev: false + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} @@ -5724,6 +6810,19 @@ packages: engines: {node: '>=0.10.0'} dev: false + /isomorphic-dompurify@2.21.0: + resolution: {integrity: sha512-IjBG/D6ApEiO6ciXvrzPqbE4xOLbjRTshSWRSeeycQVhvsxf1O9PhA7LoqwMYS0/2PKLNFJRugwsNV5UihtLxQ==} + engines: {node: '>=18'} + dependencies: + dompurify: 3.2.4 + jsdom: 26.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: false + /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -5733,6 +6832,17 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: false + /jackspeak@4.0.3: + resolution: {integrity: sha512-oSwM7q8PTHQWuZAlp995iPpPJ4Vkl7qT0ZRD+9duL9j2oBy6KcTfyxc8mEuHJYC+z/kbps80aJLkaNzTOrf/kw==} + engines: {node: 20 || >=22} + dependencies: + '@isaacs/cliui': 8.0.2 + dev: false + + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: false @@ -5781,14 +6891,44 @@ packages: - utf-8-validate dev: false - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + /jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 4.2.1 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.2 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.1 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.1.1 + ws: 8.18.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate dev: false - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: false @@ -5822,17 +6962,40 @@ packages: resolution: {integrity: sha512-zvnhEvwhqTOxBIcXnxvHvhqtubdwFRp+FascmCaL56BT9jdttRU8IFc+Ilh2HPJ0AtioF8mFPxmReuJKLW0Iyw==} dev: false + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false + + /json-stream-stringify@2.0.4: + resolution: {integrity: sha512-gIPoa6K5w6j/RnQ3fOtmvICKNJGViI83A7dnTIL+0QJ/1GKuNvCPFvbFWxt0agruF4iGgDFJvge4Gua4ZoiggQ==} + dev: false + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: false + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + dev: false + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: false + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: false + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false + /lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -5885,14 +7048,6 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false - - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false - /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: false @@ -5932,6 +7087,15 @@ packages: engines: {node: 14 || >=16.14} dev: false + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false + + /lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + dev: false + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -5945,6 +7109,12 @@ packages: yallist: 4.0.0 dev: false + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: false + /make-dir@1.3.0: resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} engines: {node: '>=4'} @@ -5977,6 +7147,11 @@ packages: engines: {node: '>=8'} dev: false + /math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + dev: false + /md5-o-matic@0.1.1: resolution: {integrity: sha512-QBJSFpsedXUl/Lgs4ySdB2XCzUEcJ3ujpbagdZCkRaYIaC0kFnID8jhc84KEiVv6dNFtIrmW7bqow0lDxgJi6A==} dev: false @@ -5999,6 +7174,11 @@ packages: engines: {node: '>=14.18'} dev: false + /mendoza@3.0.8: + resolution: {integrity: sha512-iwxgEpSOx9BDLJMD0JAzNicqo9xdrvzt6w/aVwBKMndlA6z/DH41+o60H2uHB0vCR1Xr37UOgu9xFWJHvYsuKw==} + engines: {node: '>=14.18'} + dev: false + /meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} @@ -6066,6 +7246,19 @@ packages: engines: {node: '>=4'} dev: false + /minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: false + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -6079,6 +7272,13 @@ packages: brace-expansion: 2.0.1 dev: false + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -6099,6 +7299,11 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: false + /minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -6138,24 +7343,24 @@ packages: hasBin: true dev: false - /mnemonist@0.39.8: - resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==} - dependencies: - obliterator: 2.0.4 - dev: false - /module-alias@2.2.2: resolution: {integrity: sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==} dev: false - /moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: false - /moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: false + /motion-dom@12.0.0: + resolution: {integrity: sha512-CvYd15OeIR6kHgMdonCc1ihsaUG4MYh/wrkz8gZ3hBX/uamyZCXN9S9qJoYF03GqfTt7thTV/dxnHYX4+55vDg==} + dependencies: + motion-utils: 12.0.0 + dev: false + + /motion-utils@12.0.0: + resolution: {integrity: sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==} + dev: false + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false @@ -6164,6 +7369,10 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: false + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + /nano-pubsub@3.0.0: resolution: {integrity: sha512-zoTNyBafxG0+F5PP3T3j1PKMr7gedriSdYRhLFLRFCz0OnQfQ6BkVk9peXVF30hz633Bw0Zh5McleOrXPjWYCQ==} engines: {node: '>=18'} @@ -6181,8 +7390,14 @@ packages: hasBin: true dev: false - /nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + /nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /nanoid@5.1.0: + resolution: {integrity: sha512-zDAl/llz8Ue/EblwSYwdxGBYfj46IM1dhjVi8dyp9LQffoIGxJEAHj2oeZ4uNcgycSRcQ83CnfcZqEJzVDLcDw==} engines: {node: ^18 || >=20} hasBin: true dev: false @@ -6198,14 +7413,14 @@ packages: he: 1.2.0 dev: false - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: false - /node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} dev: false + /node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + dev: false + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -6259,6 +7474,10 @@ packages: boolbase: 1.0.0 dev: false + /nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -6283,10 +7502,6 @@ packages: object-keys: 1.1.1 dev: false - /obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - dev: false - /observable-callback@1.0.3(rxjs@7.8.1): resolution: {integrity: sha512-VlS275UyPnwdMtzxDgr/lCiOUyq9uXNll3vdwzDcJ6PB/LuO7gLmxAQopcCA3JoFwwujBwyA7/tP5TXZwWSXew==} engines: {node: '>=16'} @@ -6338,6 +7553,15 @@ packages: wcwidth: 1.0.1 dev: false + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: false + + /outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + dev: false + /p-finally@2.0.1: resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} engines: {node: '>=8'} @@ -6398,6 +7622,10 @@ packages: engines: {node: '>=6'} dev: false + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: false + /pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} dev: false @@ -6428,6 +7656,14 @@ packages: is-hexadecimal: 1.0.4 dev: false + /parse-git-config@3.0.0: + resolution: {integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==} + engines: {node: '>=8'} + dependencies: + git-config-path: 2.0.0 + ini: 1.3.8 + dev: false + /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -6451,12 +7687,32 @@ packages: engines: {node: '>=6'} dev: false + /parse-path@7.0.1: + resolution: {integrity: sha512-6ReLMptznuuOEzLoGEa+I1oWRSj2Zna5jLWC+l6zlfAI4dbbSaIES29ThzuPkbhNahT65dWzfoZEO6cfJw2Ksg==} + dependencies: + protocols: 2.0.2 + dev: false + + /parse-url@9.2.0: + resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} + engines: {node: '>=14.13.0'} + dependencies: + '@types/parse-path': 7.0.3 + parse-path: 7.0.1 + dev: false + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: false + /parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + dependencies: + entities: 4.5.0 + dev: false + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -6467,11 +7723,6 @@ packages: engines: {node: '>=8'} dev: false - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} @@ -6494,6 +7745,14 @@ packages: minipass: 7.1.2 dev: false + /path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + dev: false + /path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} dev: false @@ -6510,6 +7769,10 @@ packages: engines: {node: '>=8'} dev: false + /pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + dev: false + /peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: @@ -6535,6 +7798,11 @@ packages: engines: {node: '>=8.6'} dev: false + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: false + /pidtree@0.3.1: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} engines: {node: '>=0.10'} @@ -6587,6 +7855,13 @@ packages: find-up: 5.0.0 dev: false + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + /pluralize-esm@9.0.5: resolution: {integrity: sha512-Kb2dcpMsIutFw2hYrN0EhsAXOUJTd6FVMIxvNAkZCMQLVt9NGZqQczvGpYDxNWCZeCWLHUPxQIBudWzt1h7VVA==} engines: {node: '>=14.0.0'} @@ -6608,13 +7883,22 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.1.1 - source-map-js: 1.2.0 + source-map-js: 1.2.1 + dev: false + + /postcss@8.5.2: + resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 dev: false /prettier@2.8.8: @@ -6629,6 +7913,17 @@ packages: hasBin: true dev: false + /prettier@3.5.1: + resolution: {integrity: sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false + /pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -6655,6 +7950,14 @@ packages: speedometer: 1.0.0 through2: 2.0.5 + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -6669,6 +7972,14 @@ packages: xtend: 4.0.2 dev: false + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + + /protocols@2.0.2: + resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==} + dev: false + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false @@ -6732,19 +8043,43 @@ packages: performance-now: 2.1.0 dev: false - /react-clientside-effect@1.2.6(react@18.3.1): - resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + + /react-clientside-effect@1.2.7(react@18.3.1): + resolution: {integrity: sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==} peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc dependencies: '@babel/runtime': 7.25.0 react: 18.3.1 dev: false - /react-compiler-runtime@19.0.0-beta-df7b47d-20241124(react@18.3.1): - resolution: {integrity: sha512-HLFbEf5rEhynZNxI/f1y26Hw0SCvFWh9aS0gCaDndak202oOAvRhy0qsUhmVyaeuRYqIxvPeltMvqDfvO+9/Fw==} + /react-compiler-runtime@19.0.0-beta-21e868a-20250216(react@18.3.1): + resolution: {integrity: sha512-iuvC3CeBVNHGdNbyD64+fJG87P0+FT+h0DJrhF43RUqTNklLxnEJC5+B9bWQP65RtLVP6uZkIbbhoOnw5/SXSA==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental + dependencies: + react: 18.3.1 + dev: false + + /react-compiler-runtime@19.0.0-beta-30d8a17-20250209(react@18.3.1): + resolution: {integrity: sha512-lm42SAfsebXiA69sDBIWTFHDFuXWg0m75Fyvl+bzLyBbGKErnTbYfVsSrta811fdbK0A3j+RGjcHOEoRwWICOQ==} peerDependencies: - react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental dependencies: react: 18.3.1 dev: false @@ -6798,23 +8133,23 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /react-focus-lock@2.9.4(@types/react@18.3.12)(react@18.3.1): - resolution: {integrity: sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==} + /react-focus-lock@2.13.6(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true dependencies: '@babel/runtime': 7.25.0 '@types/react': 18.3.12 - focus-lock: 0.11.6 + focus-lock: 1.3.6 prop-types: 15.8.1 react: 18.3.1 - react-clientside-effect: 1.2.6(react@18.3.1) - use-callback-ref: 1.3.0(@types/react@18.3.12)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + react-clientside-effect: 1.2.7(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.12)(react@18.3.1) dev: false /react-hook-form@7.45.1(react@18.3.1): @@ -6857,10 +8192,6 @@ packages: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} dev: false - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - dev: false - /react-redux@7.2.9(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} peerDependencies: @@ -6899,15 +8230,15 @@ packages: engines: {node: '>=0.10.0'} dev: false - /react-rx@4.1.7(react@18.3.1)(rxjs@7.8.1): - resolution: {integrity: sha512-dlvIJdDFb6hRvWLQpLxPmIJs6saVJBdxD3QnW+WCbJq7i/RH1ZdD9sW9LSaSwCf6MJdCD86+zjHv+1O4vAl0rg==} + /react-rx@4.1.20(react@18.3.1)(rxjs@7.8.1): + resolution: {integrity: sha512-Y57RQKcu1mTBray3qicr8Ct0CPze/jgjYLk5tlZhazcoFoTRGbxFEruo7KCGjWDzGABvRH8Of5OnY2Fct7GZ5Q==} peerDependencies: react: ^18.3 || >=19.0.0-0 rxjs: ^7 dependencies: observable-callback: 1.0.3(rxjs@7.8.1) react: 18.3.1 - react-compiler-runtime: 19.0.0-beta-df7b47d-20241124(react@18.3.1) + react-compiler-runtime: 19.0.0-beta-21e868a-20250216(react@18.3.1) rxjs: 7.8.1 use-effect-event: 1.0.2(react@18.3.1) dev: false @@ -6933,12 +8264,6 @@ packages: - '@types/react' dev: false - /react-style-proptype@3.2.2: - resolution: {integrity: sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==} - dependencies: - prop-types: 15.8.1 - dev: false - /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: @@ -7052,6 +8377,22 @@ packages: picomatch: 2.3.1 dev: false + /readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + dev: false + + /recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.6.2 + dev: false + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -7134,6 +8475,20 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: false + /registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.3.1 + dev: false + + /registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + dependencies: + rc: 1.2.8 + dev: false + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -7169,6 +8524,10 @@ packages: engines: {node: '>=8'} dev: false + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -7183,6 +8542,16 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -7196,12 +8565,12 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} hasBin: true dependencies: - glob: 7.2.3 + glob: 9.3.5 dev: false /rimraf@5.0.10: @@ -7211,11 +8580,58 @@ packages: glob: 10.3.12 dev: false - /rollup@3.29.0: - resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} + /rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + dependencies: + glob: 11.0.1 + package-json-from-dist: 1.0.1 + dev: false + + /rollup-plugin-esbuild@6.2.0(esbuild@0.24.2)(rollup@4.34.8): + resolution: {integrity: sha512-LbkHaCahA6ceyWzAd6md2yajNS+HfZmZ5o58ShkZp0cQeZOnZECG2D2xWFNBq5SF6X6pfMK2udkZ+wRtvpzyVQ==} + engines: {node: '>=14.18.0'} + peerDependencies: + esbuild: '>=0.18.0' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + debug: 4.4.0 + es-module-lexer: 1.6.0 + esbuild: 0.24.2 + get-tsconfig: 4.10.0 + rollup: 4.34.8 + unplugin-utils: 0.2.4 + transitivePeerDependencies: + - supports-color + dev: false + + /rollup@4.34.8: + resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.6 optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.8 + '@rollup/rollup-android-arm64': 4.34.8 + '@rollup/rollup-darwin-arm64': 4.34.8 + '@rollup/rollup-darwin-x64': 4.34.8 + '@rollup/rollup-freebsd-arm64': 4.34.8 + '@rollup/rollup-freebsd-x64': 4.34.8 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 + '@rollup/rollup-linux-arm-musleabihf': 4.34.8 + '@rollup/rollup-linux-arm64-gnu': 4.34.8 + '@rollup/rollup-linux-arm64-musl': 4.34.8 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 + '@rollup/rollup-linux-riscv64-gnu': 4.34.8 + '@rollup/rollup-linux-s390x-gnu': 4.34.8 + '@rollup/rollup-linux-x64-gnu': 4.34.8 + '@rollup/rollup-linux-x64-musl': 4.34.8 + '@rollup/rollup-win32-arm64-msvc': 4.34.8 + '@rollup/rollup-win32-ia32-msvc': 4.34.8 + '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 dev: false @@ -7223,6 +8639,10 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: false + /rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -7237,6 +8657,15 @@ packages: rxjs: 7.8.1 dev: false + /rxjs-mergemap-array@0.1.0(rxjs@7.8.1): + resolution: {integrity: sha512-19fXxPXN4X8LPWu7fg/nyX+nr0G97qSNXhEvF32cdgWuoyUVQ4MrFr+UL4HGip6iO5kbZOL4puAjPeQ/D5qSlA==} + engines: {node: '>=18.0.0'} + peerDependencies: + rxjs: 7.x + dependencies: + rxjs: 7.8.1 + dev: false + /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: @@ -7270,14 +8699,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sanity-diff-patch@4.0.0: - resolution: {integrity: sha512-1OOTx/Uw0J3rwNkI4J/4XJfTGb2Rze/gl5jJGRw+M2hRGkp1QEu2wFHiC9adj83ABYthOczBCBpTHHeZluctdw==} - engines: {node: '>=18.2'} - dependencies: - '@sanity/diff-match-patch': 3.1.1 - dev: false - - /sanity-plugin-media@2.3.2(@sanity/ui@2.8.25)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(sanity@3.65.0)(styled-components@6.1.13): + /sanity-plugin-media@2.3.2(@sanity/ui@2.13.4)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(sanity@3.75.1)(styled-components@6.1.15): resolution: {integrity: sha512-5RZJyKuN2SuatWjUEr9x+DOZOPg6+ga/6RD+pc8RK3PgviP+945M+E8k93XwnIzSGNFtix8jf0mUbdbCO7HpjA==} engines: {node: '>=14'} peerDependencies: @@ -7290,7 +8712,7 @@ packages: '@hookform/resolvers': 3.1.1(react-hook-form@7.45.1) '@reduxjs/toolkit': 1.9.3(react-redux@7.2.9)(react@18.3.1) '@sanity/incompatible-plugin': 1.0.4(react-dom@18.3.1)(react@18.3.1) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) + '@sanity/ui': 2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) '@sanity/uuid': 3.0.2 '@tanem/react-nprogress': 5.0.33(react-dom@18.3.1)(react@18.3.1) copy-to-clipboard: 3.3.3 @@ -7312,21 +8734,21 @@ packages: redux: 4.2.1 redux-observable: 2.0.0(redux@4.2.1) rxjs: 7.8.1 - sanity: 3.65.0(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13) - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + sanity: 3.75.1(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.15)(typescript@4.9.5) + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) zod: 3.23.5 transitivePeerDependencies: - '@types/react' - react-native dev: false - /sanity@3.65.0(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.13): - resolution: {integrity: sha512-/p0GhLi4MjTkI26dAfo4aZH0jGf7nhyumU03qdDtoocds9H7ChRXhM7bd9+vKYjYO2savf7IdE2/aXUAdujs8w==} + /sanity@3.75.1(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(styled-components@6.1.15)(typescript@4.9.5): + resolution: {integrity: sha512-3L9Q2ELj4Jzh1/sQRbpcQfkkCGDDyph5gQFLMzrh5H0WPOJyLcDTAgUm067VrFAXSueXg+iAHAtICY7lpG3ePw==} engines: {node: '>=18'} hasBin: true peerDependencies: - react: ^18 - react-dom: ^18 + react: ^18 || ^19.0.0 + react-dom: ^18 || ^19.0.0 styled-components: ^6.1 dependencies: '@dnd-kit/core': 6.0.8(react-dom@18.3.1)(react@18.3.1) @@ -7334,52 +8756,54 @@ packages: '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.0.8)(react@18.3.1) '@dnd-kit/utilities': 3.2.1(react@18.3.1) '@juggle/resize-observer': 3.4.0 - '@portabletext/editor': 1.12.0(@sanity/block-tools@3.65.0)(@sanity/schema@3.65.0)(@sanity/types@3.65.0)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(rxjs@7.8.1)(styled-components@6.1.13) + '@portabletext/block-tools': 1.1.8(@sanity/types@3.75.1)(@types/react@18.3.12) + '@portabletext/editor': 1.33.6(@sanity/schema@3.75.1)(@sanity/types@3.75.1)(@types/react@18.3.12)(react-dom@18.3.1)(react@18.3.1)(rxjs@7.8.1) '@portabletext/react': 3.0.11(react@18.3.1) - '@rexxars/react-json-inspector': 8.0.1(react@18.3.1) + '@portabletext/toolkit': 2.0.17 + '@rexxars/react-json-inspector': 9.0.1(react@18.3.1) '@sanity/asset-utils': 2.2.0 '@sanity/bifur-client': 0.4.1 - '@sanity/block-tools': 3.65.0(debug@4.3.4) - '@sanity/cli': 3.65.0(react@18.3.1) - '@sanity/client': 6.22.5(debug@4.3.4) + '@sanity/cli': 3.75.1(@types/react@18.3.12)(react@18.3.1)(typescript@4.9.5) + '@sanity/client': 6.28.0(debug@4.3.4) '@sanity/color': 3.0.6 - '@sanity/diff': 3.65.0 + '@sanity/comlink': 3.0.1 + '@sanity/diff': 3.75.1 '@sanity/diff-match-patch': 3.1.1 + '@sanity/diff-patch': 5.0.0 '@sanity/eventsource': 5.0.2 - '@sanity/export': 3.41.0 - '@sanity/icons': 3.4.0(react@18.3.1) + '@sanity/export': 3.42.2(@types/react@18.3.12) + '@sanity/icons': 3.6.0(react@18.3.1) '@sanity/image-url': 1.0.2 - '@sanity/import': 3.37.3 - '@sanity/insert-menu': 1.0.13(@sanity/types@3.65.0)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - '@sanity/logos': 2.1.11(@sanity/color@3.0.6)(react@18.3.1) - '@sanity/migrate': 3.65.0 - '@sanity/mutator': 3.65.0 - '@sanity/presentation': 1.18.5(@sanity/client@6.22.5)(@sanity/color@3.0.6)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - '@sanity/schema': 3.65.0(debug@4.3.4) + '@sanity/import': 3.37.9(@types/react@18.3.12) + '@sanity/insert-menu': 1.1.2(@sanity/types@3.75.1)(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) + '@sanity/logos': 2.1.13(@sanity/color@3.0.6)(react@18.3.1) + '@sanity/migrate': 3.75.1(@types/react@18.3.12) + '@sanity/mutator': 3.75.1(@types/react@18.3.12) + '@sanity/presentation-comlink': 1.0.7(@sanity/client@6.28.0)(@sanity/types@3.75.1) + '@sanity/preview-url-secret': 2.1.4(@sanity/client@6.28.0) + '@sanity/schema': 3.75.1(@types/react@18.3.12)(debug@4.3.4) '@sanity/telemetry': 0.7.9(react@18.3.1) - '@sanity/types': 3.65.0(debug@4.3.4) - '@sanity/ui': 2.8.25(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.13) - '@sanity/util': 3.65.0(debug@4.3.4) + '@sanity/types': 3.75.1(@types/react@18.3.12)(debug@4.3.4) + '@sanity/ui': 2.13.4(react-dom@18.3.1)(react-is@18.3.1)(react@18.3.1)(styled-components@6.1.15) + '@sanity/util': 3.75.1(@types/react@18.3.12)(debug@4.3.4) '@sanity/uuid': 3.0.2 - '@sentry/react': 8.26.0(react@18.3.1) + '@sentry/react': 8.55.0(react@18.3.1) '@tanstack/react-table': 8.20.1(react-dom@18.3.1)(react@18.3.1) - '@tanstack/react-virtual': 3.0.0-beta.54(react@18.3.1) - '@types/react-copy-to-clipboard': 5.0.4 - '@types/react-is': 18.3.0 + '@tanstack/react-virtual': 3.13.0(react-dom@18.3.1)(react@18.3.1) + '@types/react-is': 19.0.0 '@types/shallow-equals': 1.0.0 '@types/speakingurl': 13.0.3 '@types/tar-stream': 3.1.3 '@types/use-sync-external-store': 0.0.6 - '@vitejs/plugin-react': 4.3.4(vite@4.5.1) + '@vitejs/plugin-react': 4.3.4(vite@6.1.0) archiver: 7.0.1 - arrify: 1.0.1 + arrify: 2.0.1 async-mutex: 0.4.1 chalk: 4.1.2 chokidar: 3.5.3 classnames: 2.3.2 color2k: 2.0.2 configstore: 5.0.1 - connect-history-api-fallback: 1.6.0 console-table-printer: 2.11.1 dataloader: 2.2.2 date-fns: 2.29.3 @@ -7388,15 +8812,17 @@ packages: esbuild-register: 3.6.0(esbuild@0.21.5) execa: 2.1.0 exif-component: 1.0.1 + fast-deep-equal: 3.1.3 form-data: 4.0.0 - framer-motion: 11.0.8(react-dom@18.3.1)(react@18.3.1) - get-it: 8.6.5(debug@4.3.4) + framer-motion: 12.4.3(react-dom@18.3.1)(react@18.3.1) + get-it: 8.6.7(debug@4.3.4) get-random-values-esm: 1.0.2 - groq-js: 1.14.0 + groq-js: 1.15.0 history: 5.3.0 i18next: 23.7.9 import-fresh: 3.3.0 is-hotkey-esm: 1.0.0 + isomorphic-dompurify: 2.21.0 jsdom: 23.2.0 jsdom-global: 3.0.2(jsdom@23.2.0) json-lexer: 1.2.0 @@ -7413,6 +8839,7 @@ packages: oneline: 1.0.3 open: 8.4.2 p-map: 7.0.1 + path-to-regexp: 6.3.0 pirates: 4.0.6 pluralize-esm: 9.0.5 polished: 4.2.2 @@ -7420,49 +8847,60 @@ packages: quick-lru: 5.1.1 raf: 3.4.1 react: 18.3.1 - react-compiler-runtime: 19.0.0-beta-df7b47d-20241124(react@18.3.1) - react-copy-to-clipboard: 5.1.0(react@18.3.1) + react-compiler-runtime: 19.0.0-beta-30d8a17-20250209(react@18.3.1) react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-focus-lock: 2.9.4(@types/react@18.3.12)(react@18.3.1) + react-focus-lock: 2.13.6(@types/react@18.3.12)(react@18.3.1) react-i18next: 14.0.2(i18next@23.7.9)(react-dom@18.3.1)(react@18.3.1) react-is: 18.3.1 react-refractor: 2.2.0(react@18.3.1) - react-rx: 4.1.7(react@18.3.1)(rxjs@7.8.1) + react-rx: 4.1.20(react@18.3.1)(rxjs@7.8.1) read-pkg-up: 7.0.1 refractor: 3.6.0 resolve-from: 5.0.0 resolve.exports: 2.0.2 - rimraf: 3.0.2 + rimraf: 5.0.10 rxjs: 7.8.1 rxjs-exhaustmap-with-trailing: 2.1.1(rxjs@7.8.1) - sanity-diff-patch: 4.0.0 + rxjs-mergemap-array: 0.1.0(rxjs@7.8.1) scroll-into-view-if-needed: 3.1.0 semver: 7.5.4 shallow-equals: 1.0.0 speakingurl: 14.0.1 - styled-components: 6.1.13(react-dom@18.3.1)(react@18.3.1) + styled-components: 6.1.15(react-dom@18.3.1)(react@18.3.1) + suspend-react: 0.1.3(react@18.3.1) tar-fs: 2.1.1 tar-stream: 3.1.7 use-device-pixel-ratio: 1.1.2(react@18.3.1) + use-effect-event: 1.0.2(react@18.3.1) use-hot-module-reload: 2.0.0(react@18.3.1) use-sync-external-store: 1.2.0(react@18.3.1) - vite: 4.5.1 + uuid: 11.0.5 + valibot: 0.31.1 + vite: 6.1.0 yargs: 17.7.1 transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/babel__core' - '@types/node' - '@types/react' + - babel-plugin-react-compiler - bufferutil - canvas + - jiti - less - lightningcss - react-native - sass + - sass-embedded - stylus - sugarss - supports-color - terser + - tsx + - typescript - utf-8-validate + - yaml dev: false /saxes@6.0.0: @@ -7509,6 +8947,12 @@ packages: lru-cache: 6.0.0 dev: false + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -7588,21 +9032,21 @@ packages: engines: {node: '>=14'} dev: false - /silver-fleece@1.1.0: - resolution: {integrity: sha512-V3vShUiLRVPMu9aSWpU5kLDoU/HO7muJKE236EO663po3YxivAkMLbRg+amV/FhbIfF5bWXX5TVX+VYmRaOBFA==} - dev: false - /simple-wcswidth@1.0.1: resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} dev: false + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: false - /slate-dom@0.111.0(slate@0.110.2): - resolution: {integrity: sha512-VjeBh2xIRvP6ToEhrO1TPahc5fPezxbeSUhsRTppBPtHfidEdyp/MTI9TjUrZnlznJiVZ7QKrORXilFq8hsbtQ==} + /slate-dom@0.112.2(slate@0.112.0): + resolution: {integrity: sha512-cozITMlpcBxrov854reM6+TooiHiqpfM/nZPrnjpN1wSiDsAQmYbWUyftC+jlwcpFj80vywfDHzlG6hXIc5h6A==} peerDependencies: slate: '>=0.99.0' dependencies: @@ -7612,12 +9056,12 @@ packages: is-plain-object: 5.0.0 lodash: 4.17.21 scroll-into-view-if-needed: 3.1.0 - slate: 0.110.2 + slate: 0.112.0 tiny-invariant: 1.3.1 dev: false - /slate-react@0.111.0(react-dom@18.3.1)(react@18.3.1)(slate-dom@0.111.0)(slate@0.110.2): - resolution: {integrity: sha512-DiiVSYn+dilx0j40FjaaHiG2KbaX4lZfTdEnYvUJMnpc+d9evcuO2nV6KCDQOtS6xr4w0sBzQMxrpGlA5alKww==} + /slate-react@0.112.1(react-dom@18.3.1)(react@18.3.1)(slate-dom@0.112.2)(slate@0.112.0): + resolution: {integrity: sha512-V9b+waxPweXqAkSQmKQ1afG4Me6nVQACPpxQtHPIX02N7MXa5f5WilYv+bKt7vKKw+IZC2F0Gjzhv5BekVgP/A==} peerDependencies: react: '>=18.2.0' react-dom: '>=18.2.0' @@ -7632,24 +9076,33 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 - slate: 0.110.2 - slate-dom: 0.111.0(slate@0.110.2) + slate: 0.112.0 + slate-dom: 0.112.2(slate@0.112.0) tiny-invariant: 1.3.1 dev: false - /slate@0.110.2: - resolution: {integrity: sha512-4xGULnyMCiEQ0Ml7JAC1A6HVE6MNpPJU7Eq4cXh1LxlrR0dFXC3XC+rNfQtUJ7chHoPkws57x7DDiWiZAt+PBA==} + /slate@0.112.0: + resolution: {integrity: sha512-PRnfFgDA3tSop4OH47zu4M1R4Uuhm/AmASu29Qp7sGghVFb713kPBKEnSf1op7Lx/nCHkRlCa3ThfHtCBy+5Yw==} dependencies: immer: 10.0.3 is-plain-object: 5.0.0 tiny-warning: 1.0.3 dev: false + /smob@1.5.0: + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + dev: false + /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: false + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: false + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -7706,6 +9159,10 @@ packages: engines: {node: '>= 10.x'} dev: false + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false + /stream-each@1.2.3: resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} dependencies: @@ -7726,6 +9183,11 @@ packages: bare-events: 2.2.2 dev: false + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: false + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -7830,12 +9292,22 @@ packages: min-indent: 1.0.1 dev: false + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false + /style-mod@4.1.0: resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} dev: false - /styled-components@6.1.13(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==} + /styled-components@6.1.15(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-PpOTEztW87Ua2xbmLa7yssjNyUF9vE7wdldRfn1I2E6RTkqknkBYpj771OxM/xrvRGinLy2oysa7GOd7NcZZIA==} engines: {node: '>= 16'} peerDependencies: react: '>= 16.8.0' @@ -7846,7 +9318,7 @@ packages: '@types/stylis': 4.2.5 css-to-react-native: 3.2.0 csstype: 3.1.3 - postcss: 8.4.38 + postcss: 8.4.49 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) shallowequal: 1.1.0 @@ -7876,6 +9348,13 @@ packages: has-flag: 4.0.0 dev: false + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -7946,6 +9425,17 @@ packages: yallist: 5.0.0 dev: false + /terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: @@ -7967,10 +9457,33 @@ packages: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: false + /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false + /tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + dev: false + + /tldts-core@6.1.77: + resolution: {integrity: sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==} + dev: false + + /tldts@6.1.77: + resolution: {integrity: sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==} + hasBin: true + dependencies: + tldts-core: 6.1.77 + dev: false + /to-buffer@1.1.1: resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} dev: false @@ -8001,6 +9514,13 @@ packages: url-parse: 1.5.10 dev: false + /tough-cookie@5.1.1: + resolution: {integrity: sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA==} + engines: {node: '>=16'} + dependencies: + tldts: 6.1.77 + dev: false + /tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} @@ -8008,6 +9528,11 @@ packages: punycode: 2.3.1 dev: false + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -8038,6 +9563,11 @@ packages: dependencies: safe-buffer: 5.2.1 + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -8111,7 +9641,12 @@ packages: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: true + + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: false /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -8129,6 +9664,13 @@ packages: through: 2.3.8 dev: false + /undici@5.28.5: + resolution: {integrity: sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.1 + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -8176,33 +9718,56 @@ packages: unist-util-is: 4.1.0 dev: false + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: false + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + dev: false + + /update-browserslist-db@1.1.1(browserslist@4.24.2): + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.23.0 - escalade: 3.1.1 + browserslist: 4.24.2 + escalade: 3.2.0 picocolors: 1.1.1 dev: false - /update-browserslist-db@1.1.1(browserslist@4.24.2): + /update-browserslist-db@1.1.1(browserslist@4.24.4): resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.2 + browserslist: 4.24.4 escalade: 3.2.0 picocolors: 1.1.1 dev: false + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: false + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: @@ -8210,12 +9775,12 @@ packages: requires-port: 1.0.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.3.12)(react@18.3.1): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + /use-callback-ref@1.3.3(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -8262,12 +9827,12 @@ packages: react: 18.3.1 dev: false - /use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + /use-sidecar@1.1.3(@types/react@18.3.12)(react@18.3.1): + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -8286,11 +9851,18 @@ packages: react: 18.3.1 dev: false + /user-home@2.0.0: + resolution: {integrity: sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + /uuid@11.0.5: + resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} hasBin: true dev: false @@ -8304,6 +9876,10 @@ packages: hasBin: true dev: false + /valibot@0.31.1: + resolution: {integrity: sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q==} + dev: false + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -8317,37 +9893,49 @@ packages: builtins: 1.0.3 dev: false - /vite@4.5.1: - resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@6.1.0: + resolution: {integrity: sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true dependencies: - esbuild: 0.18.20 - postcss: 8.4.38 - rollup: 3.29.0 + esbuild: 0.24.2 + postcss: 8.5.2 + rollup: 4.34.8 optionalDependencies: fsevents: 2.3.3 dev: false @@ -8399,6 +9987,14 @@ packages: webidl-conversions: 7.0.0 dev: false + /whatwg-url@14.1.1: + resolution: {integrity: sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -8479,6 +10075,19 @@ packages: optional: true dev: false + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /xdg-basedir@4.0.0: resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} engines: {node: '>=8'} @@ -8497,8 +10106,8 @@ packages: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: false - /xstate@5.19.0: - resolution: {integrity: sha512-Juh1MjeRaVWr1IRxXYvQMMRFMrei6vq6+AfP6Zk9D9YV0ZuvubN0aM6s2ITwUrq+uWtP1NTO8kOZmsM/IqeOiQ==} + /xstate@5.19.2: + resolution: {integrity: sha512-B8fL2aP0ogn5aviAXFzI5oZseAMqN00fg/TeDa3ZtatyDcViYLIfuQl4y8qmHCiKZgGEzmnTyNtNQL9oeJE2gw==} dev: false /xtend@4.0.2: @@ -8534,6 +10143,12 @@ packages: hasBin: true dev: false + /yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + dev: false + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -8549,7 +10164,7 @@ packages: engines: {node: '>=12'} dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -8578,6 +10193,19 @@ packages: readable-stream: 4.5.2 dev: false + /zod-validation-error@3.4.0(zod@3.24.1): + resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + dependencies: + zod: 3.24.1 + dev: false + /zod@3.23.5: resolution: {integrity: sha512-fkwiq0VIQTksNNA131rDOsVJcns0pfVUjHzLrNBiF/O/Xxb5lQyEXkhZWcJ7npWsYlvs+h0jFWXXy4X46Em1JA==} dev: false + + /zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + dev: false diff --git a/sanity/sanity.config.ts b/sanity/sanity.config.ts index 7fe5f6de6..c7d56b384 100644 --- a/sanity/sanity.config.ts +++ b/sanity/sanity.config.ts @@ -6,19 +6,19 @@ import { BlockElementIcon, BookIcon, ClipboardImageIcon, ComponentIcon, CubeIcon, DiamondIcon, DocumentIcon, DocumentsIcon, MasterDetailIcon, PresentationIcon, SparklesIcon, ThListIcon } from "@sanity/icons"; -import { presentationTool } from "@sanity/presentation"; import { defineConfig, isDev } from "sanity"; import { visionTool } from "@sanity/vision"; import { media } from "sanity-plugin-media"; import { deskTool } from "sanity/desk"; import { StructureBuilder } from "sanity/lib/exports/desk"; +import { presentationTool } from "sanity/presentation"; import { featuresPageSchemaName, homePageSchemaName, sectionIconSchemaName, philosophyPageSchemaName, linkSchemaName, schemaTypes, topnavSchemaNames, solutionPageSchemaName, lecturesPageSchemaName, footerSchemaName, communityResourcesSchemaName, formsSchemaName, videoEmbedSchemaName, organisationSchemaName, imageIllustrationSchemaName, codeSnippetSchemaName, polyglotSnippetSchemaName, graphVisualisationSchemaName, - splitPaneIllustrationSchemaName, referenceMaterialSchemaName, genericPageSchemaName, deploymentPageSchemaName, + splitPaneIllustrationSchemaName, referenceMaterialSchemaName, genericPageSchemaName, personSchemaName, lectureSchemaName, papersPageSchemaName, paperSchemaName, siteBannerSchemaName, requestTechTalkPageSchemaName, liveEventSchemaName, eventsPageSchemaName, supportPageSchemaName, servicesPageSchemaName, testimonialSchemaName, featureGridSchemaName, fundamentalArticleSchemaName, @@ -55,7 +55,6 @@ export default defineConfig({ singletonListItem(s, philosophyPageSchemaName, { title: "Philosophy", icon: DocumentIcon }), singletonListItem(s, genericPageSchemaName, { title: "Cloud", icon: DocumentIcon, documentID: "cloudPage" }), singletonListItem(s, genericPageSchemaName, { title: "Studio", icon: DocumentIcon, documentID: "studioPage" }), - singletonListItem(s, deploymentPageSchemaName, { title: "Deploy", icon: DocumentIcon }), s.divider(), singletonListItem(s, learningCenterSchemaName, { title: "Learning Center", icon: DocumentIcon }), singletonListItem(s, fundamentalsPageSchemaName, { title: "Fundamentals", icon: DocumentIcon }), diff --git a/schema/button.ts b/schema/button.ts index f532e305a..10d8eb079 100644 --- a/schema/button.ts +++ b/schema/button.ts @@ -4,12 +4,13 @@ import { SanityDataset, SanityReference } from "./sanity-core"; import { PropsOf } from "./util"; export const buttonStyles = { - primary: "Primary", - secondary: "Secondary", + greenSolid: "Green (solid)", + greenHollow: "Green (hollow)", + water: "Water", + fire: "Fire", + frameless: "Frameless", } as const; -export const buttonStyleList = Object.keys(buttonStyles); - export type ButtonStyle = keyof typeof buttonStyles; export interface SanityButton { @@ -68,14 +69,13 @@ const buttonSchema = defineType({ defineField({ name: "style", title: "Style", - description: "Primary (solid) buttons stand out more than secondary (hollow) ones", type: "string", options: { - list: buttonStyleList, + list: Object.entries(buttonStyles).map(([value, title]) => ({ title, value })), layout: "radio", direction: "horizontal", }, - initialValue: "primary", + initialValue: "greenHollow", }), ...textLinkSchema.fields, ], diff --git a/schema/navigation/topnav.ts b/schema/navigation/topnav.ts index fc2148406..6472f8690 100644 --- a/schema/navigation/topnav.ts +++ b/schema/navigation/topnav.ts @@ -199,7 +199,7 @@ export class NavPanelCta { linkButton: new LinkButton({ text: data.link.text, link: Link.fromSanityLinkRef(data.link.link, db), - style: "secondary", + style: "greenHollow", comingSoon: data.link.comingSoon, }), }); diff --git a/website/src/framework/dialog/add-to-calendar/add-to-calendar-dialog.component.ts b/website/src/framework/dialog/add-to-calendar/add-to-calendar-dialog.component.ts index efe7bdf19..f1f92c714 100644 --- a/website/src/framework/dialog/add-to-calendar/add-to-calendar-dialog.component.ts +++ b/website/src/framework/dialog/add-to-calendar/add-to-calendar-dialog.component.ts @@ -27,7 +27,7 @@ export class AddToCalendarDialogComponent implements OnInit { ngOnInit() { this.actions = [ new LinkButton({ - style: "secondary", + style: "greenHollow", text: "Google", comingSoon: false, link: new Link({ @@ -37,7 +37,7 @@ export class AddToCalendarDialogComponent implements OnInit { }), }), new LinkButton({ - style: "secondary", + style: "greenHollow", text: "Apple / Outlook", comingSoon: false, download: { filename: `${this.data.event.slug}.ics` }, diff --git a/website/src/framework/form/actions/form-actions.component.html b/website/src/framework/form/actions/form-actions.component.html index c82818154..1bc150f0e 100644 --- a/website/src/framework/form/actions/form-actions.component.html +++ b/website/src/framework/form/actions/form-actions.component.html @@ -1,6 +1,6 @@ @if (this.cancellable) { - + } - diff --git a/website/src/framework/link-panels/link-panels.component.scss b/website/src/framework/link-panels/link-panels.component.scss index f0efa7d03..973bb604f 100644 --- a/website/src/framework/link-panels/link-panels.component.scss +++ b/website/src/framework/link-panels/link-panels.component.scss @@ -88,11 +88,6 @@ &:hover h3 { text-decoration: none; } - - &:hover ::ng-deep .button-secondary { - background: var(--color-green); - color: var(--color-purple); - } } td-button { @@ -108,7 +103,7 @@ td-button { flex-grow: 1; gap: 20px; - .button-secondary { + .button-frameless { margin-top: 8px; width: unset; } diff --git a/website/src/framework/link-panels/resource-panels.component.html b/website/src/framework/link-panels/resource-panels.component.html index 9f45e698a..4a0805b5f 100644 --- a/website/src/framework/link-panels/resource-panels.component.html +++ b/website/src/framework/link-panels/resource-panels.component.html @@ -15,7 +15,7 @@ }

{{ resource.title }}

-

{{ resource.linkText }}

+

{{ resource.linkText }}

} diff --git a/website/src/framework/link-panels/resource-panels.component.scss b/website/src/framework/link-panels/resource-panels.component.scss index 0a8dce915..42fe049c3 100644 --- a/website/src/framework/link-panels/resource-panels.component.scss +++ b/website/src/framework/link-panels/resource-panels.component.scss @@ -133,11 +133,6 @@ &:hover h3 { text-decoration: none; } - - &:hover ::ng-deep .button-secondary { - background: var(--color-green); - color: var(--color-purple); - } } td-button { @@ -157,7 +152,7 @@ td-button { text-align: start; } - .button-secondary { + .button-frameless { margin-top: 8px; width: unset; } diff --git a/website/src/page/blog/blog-post-page.component.ts b/website/src/page/blog/blog-post-page.component.ts index 8a9d3b27d..35df583a6 100644 --- a/website/src/page/blog/blog-post-page.component.ts +++ b/website/src/page/blog/blog-post-page.component.ts @@ -47,7 +47,7 @@ export class BlogPostPageComponent implements OnInit { readonly categories$: Observable; readonly relatedPostGroups$?: Observable; readonly subscribeToNewsletterButton = new LinkButton({ - style: "secondary", + style: "greenHollow", link: Link.fromAddress("?dialog=newsletter"), text: "Subscribe to Newsletter", comingSoon: false, diff --git a/website/src/page/events/event-details-page.component.html b/website/src/page/events/event-details-page.component.html index 0898db2af..b60eb86bf 100644 --- a/website/src/page/events/event-details-page.component.html +++ b/website/src/page/events/event-details-page.component.html @@ -37,7 +37,9 @@

Register to {{ event.tag }}

- + @if (getEventImageUrl(event); as imageURL) { + + } @if (event.externalUrlButton) { diff --git a/website/src/page/events/event-details-page.component.ts b/website/src/page/events/event-details-page.component.ts index 6e1ca5761..7f3158538 100644 --- a/website/src/page/events/event-details-page.component.ts +++ b/website/src/page/events/event-details-page.component.ts @@ -18,7 +18,6 @@ import { ButtonComponent } from "../../framework/button/button.component"; import { EventDatePipe } from "../../framework/date/event-date.pipe"; import { EventDurationPipe } from "../../framework/date/event-duration.pipe"; import { FurtherLearningComponent } from "../../framework/further-learning/further-learning.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { PersonInfoComponent } from "../../framework/person/person.component"; import { RichTextComponent } from "../../framework/text/rich-text.component"; import { HeadingWithHighlightsComponent } from "../../framework/text/text-with-highlights.component"; @@ -31,7 +30,7 @@ import { PageComponentBase } from "../page-component-base"; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, HeadingWithHighlightsComponent, MatIconModule, AspectRatioComponent, + HeadingWithHighlightsComponent, MatIconModule, AspectRatioComponent, ButtonComponent, RichTextComponent, PersonInfoComponent, FurtherLearningComponent, AsyncPipe, EventDatePipe, EventDurationPipe ], @@ -62,6 +61,6 @@ export class EventDetailsPageComponent extends PageComponentBase { } getEventImageUrl(event: LiveEvent) { - return this.imageBuilder.image(event.imageURL).width(494).url(); + return event.imageURL ? this.imageBuilder.image(event.imageURL).width(494).url() : undefined; } } diff --git a/website/src/page/events/events-page.component.ts b/website/src/page/events/events-page.component.ts index f2995c1be..4d27e133c 100644 --- a/website/src/page/events/events-page.component.ts +++ b/website/src/page/events/events-page.component.ts @@ -51,7 +51,7 @@ export class EventsPageComponent extends PageComponentBase { } getEventListImageUrl(event: LiveEvent) { - return this.imageBuilder.image(event.imageURL).width(731).url(); + return event.imageURL ? this.imageBuilder.image(event.imageURL).width(731).url() : undefined; } eventDetailsButtonId(event: LiveEvent): string { diff --git a/website/src/page/lectures/lecture-details-page.component.ts b/website/src/page/lectures/lecture-details-page.component.ts index 533d95d11..8c7cc9e74 100644 --- a/website/src/page/lectures/lecture-details-page.component.ts +++ b/website/src/page/lectures/lecture-details-page.component.ts @@ -73,7 +73,7 @@ export class LectureDetailsPageComponent implements OnInit { shareReplay(1), ); const subscribeButton = new LinkButton({ - style: "secondary", + style: "greenHollow", text: "Subscribe to lectures", link: Link.fromAddress("?dialog=newsletter"), comingSoon: false, @@ -84,7 +84,7 @@ export class LectureDetailsPageComponent implements OnInit { return [ subscribeButton, new ActionButton({ - style: "primary", + style: "greenHollow", text: "Add to calendar", onClick: () => { this.dialog.open( @@ -99,7 +99,7 @@ export class LectureDetailsPageComponent implements OnInit { return [ subscribeButton, new LinkButton({ - style: "primary", + style: "greenHollow", text: "Download slides", link: Object.assign(Link.fromAddress(lecture.lectureSlidesURL), { opensNewTab: false, diff --git a/website/src/page/papers/paper-details-page.component.ts b/website/src/page/papers/paper-details-page.component.ts index 44753cae5..c647c7ffd 100644 --- a/website/src/page/papers/paper-details-page.component.ts +++ b/website/src/page/papers/paper-details-page.component.ts @@ -44,7 +44,7 @@ export class PaperDetailsPageComponent extends PageComponentBase { readonly isSubmitting$: Observable; private readonly _isSubmitting$ = new BehaviorSubject(false); private readonly subscribeButton = new LinkButton({ - style: "secondary", + style: "greenHollow", text: "Subscribe to updates", link: Link.fromAddress("?dialog=newsletter"), comingSoon: false, @@ -53,7 +53,7 @@ export class PaperDetailsPageComponent extends PageComponentBase { filter(paper => !!paper), map(paper => paper!), map(paper => new ActionButton({ - style: "primary", + style: "greenHollow", text: "Download paper", onClick: () => this.download(paper), comingSoon: false, diff --git a/website/src/page/papers/papers-page.component.html b/website/src/page/papers/papers-page.component.html index 1b94ae865..3497bc0b8 100644 --- a/website/src/page/papers/papers-page.component.html +++ b/website/src/page/papers/papers-page.component.html @@ -19,7 +19,7 @@

{{ page.featuredPaper.title |
@@ -38,7 +38,7 @@

{{ paper.title | plainText }}

diff --git a/website/src/page/resource-hub/learning-article.component.ts b/website/src/page/resource-hub/learning-article.component.ts index 007e68d4f..d65dc2d63 100644 --- a/website/src/page/resource-hub/learning-article.component.ts +++ b/website/src/page/resource-hub/learning-article.component.ts @@ -42,7 +42,7 @@ export class LearningArticleComponent implements OnInit { resourceHubLink$!: Observable; readonly subscribeToNewsletterButton = new LinkButton({ - style: "secondary", + style: "greenHollow", link: Link.fromAddress("?dialog=newsletter"), text: "Subscribe to Newsletter", comingSoon: false, diff --git a/website/src/styles/styles.scss b/website/src/styles/styles.scss index fad4f070a..b36dc6c7d 100644 --- a/website/src/styles/styles.scss +++ b/website/src/styles/styles.scss @@ -214,7 +214,7 @@ table { .cc-btn { @include button; - @include button-primary; + @include button-greenHollow; &.cc-btn { height: auto; From 851e3d6886fab072a3c9f7f9d5458afd743f5b6d Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Mon, 3 Mar 2025 14:34:08 +0000 Subject: [PATCH 2/7] Home page - hot topics --- schema/component/technicolor-block.ts | 3 -- schema/page/home.ts | 44 +++++++++++++++++-- schema/page/solution.ts | 2 - schema/resource/article.ts | 5 --- schema/resource/base.ts | 10 ++++- schema/resource/event-base.ts | 3 -- schema/resource/lecture.ts | 8 +--- schema/resource/live-event.ts | 8 +--- schema/resource/sanity.ts | 3 +- schema/resource/section.ts | 1 - .../hot-topics/hot-topics.component.html | 21 +++++++++ .../hot-topics/hot-topics.component.scss | 40 +++++++++++++++++ .../hot-topics/hot-topics.component.ts | 23 ++++++++++ .../src/page/home/home-page.component.html | 3 ++ website/src/page/home/home-page.component.ts | 27 +++++++++--- 15 files changed, 162 insertions(+), 39 deletions(-) create mode 100644 website/src/framework/hot-topics/hot-topics.component.html create mode 100644 website/src/framework/hot-topics/hot-topics.component.scss create mode 100644 website/src/framework/hot-topics/hot-topics.component.ts diff --git a/schema/component/technicolor-block.ts b/schema/component/technicolor-block.ts index 6721595e5..986d656ae 100644 --- a/schema/component/technicolor-block.ts +++ b/schema/component/technicolor-block.ts @@ -9,14 +9,12 @@ export interface SanityTechnicolorBlock extends SanityTitleBodyActions, SanityIc export class TechnicolorBlock implements Partial { readonly title: ParagraphWithHighlights; readonly body?: PortableText; - readonly iconURL: string; readonly actions?: LinkButton[]; readonly sectionId: string; constructor(props: PropsOf) { this.title = props.title; this.body = props.body; - this.iconURL = props.iconURL; this.actions = props.actions; this.sectionId = props.sectionId; } @@ -27,7 +25,6 @@ export class TechnicolorBlock implements Partial { title: title, body: data.body, actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - iconURL: db.resolveImageRef(data.icon).url, sectionId: title.toSectionID(), }); } diff --git a/schema/page/home.ts b/schema/page/home.ts index c423f1487..e74061441 100644 --- a/schema/page/home.ts +++ b/schema/page/home.ts @@ -6,12 +6,14 @@ import { resourceSectionSchemaName, SanityCoreSection, SanityLinkPanelsSection } import { TechnicolorBlock } from "../component/technicolor-block"; import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, - keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, + keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, titleField, } from "../common-fields"; import { SanityContentTextTab, ContentTextTab, contentTextTabSchemaName } from "../component/content-text-panel"; import { KeyPointWithIcon, SanityKeyPointWithIcon } from "../key-point"; import { Organisation, organisationLogosField, SanityOrganisation } from "../organisation"; -import { SanityResourceSection } from "../resource/sanity"; +import { resourceLinkOf } from "../resource"; +import { ResourceLink } from "../resource/base"; +import { SanityResource, SanityResourceSection } from "../resource/sanity"; import { ResourceSection } from "../resource/section"; import { SanityDataset, SanityReference } from "../sanity-core"; import { SocialMediaID, socialMediaLinksField } from "../social-media"; @@ -23,6 +25,7 @@ import { metaTagsField } from "./meta-tags"; const sections = { intro: { id: "introSection", title: "Intro" }, + hotTopics: { id: "hotTopicsSection", title: "Hot Topics" }, impact: { id: "impactSection", title: "Impact" }, resources: { id: "resourcesSection", title: "Resources" }, tooling: { id: "toolingSection", title: "Tooling" }, @@ -37,6 +40,7 @@ type SectionID = (typeof sections)[SectionKey]["id"]; export interface SanityHomePage extends SanityPage { [sections.intro.id]: SanityIntroSection; + [sections.hotTopics.id]: SanityHotTopicsSection; impactSections: SanityImpactSection[]; [sections.resources.id]: SanityResourceSection; [sections.tooling.id]: SanityLinkPanelsSection; @@ -53,6 +57,10 @@ interface SanityIntroSection extends SanityCoreSection { contentTabs: SanityContentTextTab[]; } +interface SanityHotTopicsSection extends SanityCoreSection { + hotTopics: SanityReference[]; +} + interface SanityImpactSection extends SanityCoreSection { impactTabs: SanityContentTextTab[]; } @@ -73,6 +81,7 @@ interface SanityTestimonialsSection extends SanityCoreSection { export class HomePage extends Page { readonly [sections.intro.id]?: IntroSection; + readonly [sections.hotTopics.id]?: HotTopicsSection; readonly impactSections: ImpactSection[]; readonly [sections.resources.id]?: ResourceSection; readonly [sections.tooling.id]?: ToolingSection; @@ -85,6 +94,7 @@ export class HomePage extends Page { constructor(data: SanityHomePage, db: SanityDataset) { super(data, db); this.introSection = data.introSection.isVisible ? IntroSection.fromSanity(data.introSection, db) : undefined; + this.hotTopicsSection = data.hotTopicsSection.isVisible ? HotTopicsSection.fromSanity(data.hotTopicsSection, db) : undefined; this.impactSections = data.impactSections .filter((x) => x.isVisible) .map((x) => ImpactSection.fromSanity(x, db)); @@ -132,6 +142,21 @@ class IntroSection extends TechnicolorBlock { } } +class HotTopicsSection extends TechnicolorBlock { + readonly hotTopics: ResourceLink[]; + + constructor(props: PropsOf) { + super(props); + this.hotTopics = props.hotTopics; + } + + static override fromSanity(data: SanityHotTopicsSection, db: SanityDataset) { + return new HotTopicsSection(Object.assign(TechnicolorBlock.fromSanity(data, db), { + hotTopics: data.hotTopics?.map(x => ResourceLink.fromSanity(db.resolveRef(x), db, true)) || [], + })); + } +} + class ImpactSection extends TechnicolorBlock { readonly impactTabs: ContentTextTab[]; @@ -254,6 +279,11 @@ const sectionSchemas = [ }), isVisibleField, ]), + sectionSchema("hotTopics", [ + titleFieldWithHighlights, + Object.assign({}, resourcesField, { name: "hotTopics", title: "Hot Topics" }), + isVisibleField, + ]), sectionSchema("impact", [ ...titleBodyIconFields, actionsFieldOptional, @@ -313,6 +343,13 @@ const introSectionField = defineField({ options: collapsibleOptions, }); +const hotTopicsSectionField = defineField({ + name: sections.hotTopics.id, + title: `${sections.hotTopics.title} Section`, + type: sectionSchemaName("hotTopics"), + options: collapsibleOptions, +}); + const impactSectionsField = defineField({ name: "impactSections", title: "Impact Sections", @@ -321,7 +358,7 @@ const impactSectionsField = defineField({ }); const otherSectionFields = (Object.keys(sections) as SectionKey[]) - .filter((key) => !["intro", "impact", "resources"].includes(key)) + .filter((key) => !["intro", "impact", "hotTopics", "resources"].includes(key)) .map((key) => defineField({ name: sections[key].id, @@ -338,6 +375,7 @@ const homePageSchema = defineType({ fields: [ metaTagsField, introSectionField, + hotTopicsSectionField, impactSectionsField, defineField({ name: "resourcesSection", diff --git a/schema/page/solution.ts b/schema/page/solution.ts index 6754a15ef..a747961fc 100644 --- a/schema/page/solution.ts +++ b/schema/page/solution.ts @@ -145,7 +145,6 @@ class KeyPointsSection extends TechnicolorBlock { title: title, body: data.body, actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - iconURL: iconURL, keyPoints: data.keyPoints.map((x) => new KeyPoint(x)), sectionId: title.toSectionID(), }); @@ -171,7 +170,6 @@ class SolutionSection extends TechnicolorBlock { }), body: data.body, actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - iconURL: "https://cdn.sanity.io/images/xndl14mc/production/19628ad84b647bdbc783df17ce2ea89c8fd507a3-98x108.svg", keyPoints: data.keyPoints.map((x) => new KeyPointWithIcon(x, db)), sectionId: "typedb-solution", }); diff --git a/schema/resource/article.ts b/schema/resource/article.ts index 68f6d4ab5..c4bb4f2e0 100644 --- a/schema/resource/article.ts +++ b/schema/resource/article.ts @@ -36,12 +36,10 @@ export interface WordpressPost { export class BlogPostLink extends ResourceLink { readonly author: Person; - readonly imageURL: string; constructor(props: PropsOf) { super(props); this.author = props.author; - this.imageURL = props.imageURL; } static override fromSanity(data: SanityBlogPost, db: SanityDataset): BlogPostLink { @@ -123,7 +121,6 @@ export class BlogPost extends Article { readonly author: Person; readonly categories: BlogCategoryID[]; readonly date: Date; - readonly imageURL?: string; constructor(props: PropsOf) { super(props); @@ -131,7 +128,6 @@ export class BlogPost extends Article { this.author = props.author; this.categories = props.categories; this.date = props.date; - this.imageURL = props.imageURL; } static fromApi(data: SanityBlogPost, db: SanityDataset, wordpressPost: WordpressPost): BlogPost { @@ -265,7 +261,6 @@ const blogPostSchema = Object.assign({}, articleSchemaBase, { validation: requiredRule, initialValue: ["engineering"], }), - imageFieldOptional, ], }); diff --git a/schema/resource/base.ts b/schema/resource/base.ts index d54d937fd..0af90477e 100644 --- a/schema/resource/base.ts +++ b/schema/resource/base.ts @@ -1,5 +1,5 @@ import { defineField } from "@sanity/types"; -import { descriptionFieldRichText, requiredRule, titleFieldWithHighlights } from "../common-fields"; +import { descriptionFieldRichText, imageFieldOptional, requiredRule, titleFieldWithHighlights } from "../common-fields"; import { Link } from "../link"; import { MetaTags, metaTagsField } from "../page/meta-tags"; import { SanityDataset } from "../sanity-core"; @@ -16,6 +16,7 @@ export abstract class SiteResource { readonly shortTitle: string; readonly shortDescription: string; readonly furtherLearning?: ResourceSection; + readonly imageURL?: string; protected constructor(props: PropsOf) { this.slug = props.slug; @@ -25,6 +26,7 @@ export abstract class SiteResource { this.shortTitle = props.shortTitle; this.shortDescription = props.shortDescription; this.furtherLearning = props.furtherLearning; + this.imageURL = props.imageURL; } } @@ -39,6 +41,7 @@ export function resourcePropsFromSanity(data: SanitySiteResource, db: SanityData furtherLearning: data.furtherLearning?.isVisible ? ResourceSection.fromSanityFurtherLearningSection(data.furtherLearning, db) : undefined, + imageURL: data.image ? db.resolveRef(data.image.asset).url : undefined, }; } @@ -47,12 +50,14 @@ export class ResourceLink { readonly description: string; readonly link?: Link; readonly linkText: string; + readonly imageURL?: string; constructor(props: PropsOf) { this.title = props.title; this.description = props.description; this.link = props.link; this.linkText = props.linkText; + this.imageURL = props.imageURL; } static fromSanity(data: SanityResource, db: SanityDataset, useLongTitle: boolean = false): ResourceLink { @@ -61,11 +66,13 @@ export class ResourceLink { description: data.description, link: Link.fromSanityLinkRef(data.link, db), linkText: data.linkText, + imageURL: data.image ? db.resolveRef(data.image.asset).url : undefined, }); else return new ResourceLink({ title: useLongTitle ? ParagraphWithHighlights.fromSanity(data.title).toPlainText() : data.shortTitle, description: data.shortDescription, link: new Link({ destination: siteResourceUrl(data), type: "route", opensNewTab: false }), linkText: resourceLinkText(data), + imageURL: data.image ? db.resolveRef(data.image.asset).url : undefined, }); } } @@ -107,5 +114,6 @@ export const resourceCommonFields = [ description: "Displayed in link panels, etc.", type: "text", }), + imageFieldOptional, furtherLearningFieldOptional, ]; diff --git a/schema/resource/event-base.ts b/schema/resource/event-base.ts index 72c835ff1..0038d5547 100644 --- a/schema/resource/event-base.ts +++ b/schema/resource/event-base.ts @@ -5,20 +5,17 @@ import { SiteResource, resourcePropsFromSanity } from "./base"; import { SanityEventBase } from "./sanity"; export abstract class EventBase extends SiteResource { - readonly imageURL: string; readonly speakers: Person[]; readonly cioFormID?: string; protected constructor(props: PropsOf) { super(props); - this.imageURL = props.imageURL; this.speakers = props.speakers; this.cioFormID = props.cioFormID; } static fromSanity(data: SanityEventBase, db: SanityDataset): PropsOf { return Object.assign(resourcePropsFromSanity(data, db), { - imageURL: db.resolveRef(data.image.asset).url, speakers: data.speakers.map((x) => Person.fromSanity(db.resolveRef(x), db)), cioFormID: data.cioFormID, }); diff --git a/schema/resource/lecture.ts b/schema/resource/lecture.ts index 9c0b244fb..63fcb0f50 100644 --- a/schema/resource/lecture.ts +++ b/schema/resource/lecture.ts @@ -62,7 +62,7 @@ export class Lecture extends EventBase { registrationButton(): LinkButton { return new LinkButton({ - style: this.isFinished() || this.comingSoon ? "secondary" : "primary", + style: "greenHollow", text: this.comingSoon ? "Coming soon!" : this.isStarted() ? "Watch now" : "Register", link: this.comingSoon ? undefined @@ -111,12 +111,6 @@ const lectureSchema = defineType({ type: "number", validation: (rule: NumberRule) => rule.required().positive(), }), - defineField({ - name: "image", - title: "Image", - type: "image", - validation: requiredRule, - }), defineField({ name: "speakers", title: "Speakers", diff --git a/schema/resource/live-event.ts b/schema/resource/live-event.ts index 4ae58fe89..d24707b66 100644 --- a/schema/resource/live-event.ts +++ b/schema/resource/live-event.ts @@ -51,7 +51,7 @@ export class LiveEvent extends EventBase { registrationButton(): LinkButton { return new LinkButton({ - style: "primary", + style: "greenHollow", text: "Register Now", link: this.detailsPageLink(), comingSoon: false, @@ -92,12 +92,6 @@ export const liveEventSchema = defineType({ type: "string", validation: requiredRule, }), - defineField({ - name: "image", - title: "Image", - type: "image", - validation: requiredRule, - }), defineField({ name: "speakers", title: "Speakers", diff --git a/schema/resource/sanity.ts b/schema/resource/sanity.ts index e7eeb5874..db36bd7b0 100644 --- a/schema/resource/sanity.ts +++ b/schema/resource/sanity.ts @@ -21,6 +21,7 @@ export interface SanitySiteResource extends SanityDocument { description: PortableText; shortTitle: string; shortDescription: string; + image?: SanityImage; furtherLearning?: SanityResourceSection; } @@ -30,6 +31,7 @@ export interface SanityGenericResource extends SanityDocument { description: string; link: SanityReference; linkText: string; + image?: SanityImage; } export interface SanityArticle extends SanitySiteResource { @@ -50,7 +52,6 @@ export interface SanityBlogPost extends SanityArticle { author: SanityReference; date: string; categories: BlogCategoryID[]; - image?: SanityImage; } export type BlogPostLevel = "primary" | "secondary" | "tertiary"; diff --git a/schema/resource/section.ts b/schema/resource/section.ts index 37a700174..613b7e63a 100644 --- a/schema/resource/section.ts +++ b/schema/resource/section.ts @@ -27,7 +27,6 @@ export class ResourceSection extends TechnicolorBlock { title: new ParagraphWithHighlights({ spans: [{ text: "Further Learning", highlight: true }]}), body: data.body, actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - iconURL: "https://cdn.sanity.io/images/xndl14mc/production/5cc35cf9f1d71af32a5d65426f2a6409cb0f72da-89x98.svg", resources: data.resources?.map(x => ResourceLink.fromSanity(db.resolveRef(x), db)) || [], sectionId: "further-learning", }); diff --git a/website/src/framework/hot-topics/hot-topics.component.html b/website/src/framework/hot-topics/hot-topics.component.html new file mode 100644 index 000000000..f0b1df878 --- /dev/null +++ b/website/src/framework/hot-topics/hot-topics.component.html @@ -0,0 +1,21 @@ + + + + diff --git a/website/src/framework/hot-topics/hot-topics.component.scss b/website/src/framework/hot-topics/hot-topics.component.scss new file mode 100644 index 000000000..3174b31e7 --- /dev/null +++ b/website/src/framework/hot-topics/hot-topics.component.scss @@ -0,0 +1,40 @@ +@use "media"; +@use "mixins" as *; +@use "shapes"; + +:host { + overflow-x: visible; + display: flex; + gap: 32px; +} + +td-heading-with-highlights { + display: block; + flex: 0 0 400px; +} + +.td-cards { + display: flex; + gap: 24px; +} + +.td-card { + @include card-appearance; + flex: 0 0 360px; + height: 480px; + display: flex; + flex-direction: column; +} + +.td-hero { + width: 100%; + border-radius: var(--border-radius) var(--border-radius) 0 0; + border-bottom: 1px solid var(--content-border-color); +} + +.td-card-body { + flex: 1; + display: flex; + flex-direction: column; + gap: 12px; +} diff --git a/website/src/framework/hot-topics/hot-topics.component.ts b/website/src/framework/hot-topics/hot-topics.component.ts new file mode 100644 index 000000000..886705849 --- /dev/null +++ b/website/src/framework/hot-topics/hot-topics.component.ts @@ -0,0 +1,23 @@ +import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; +import { ParagraphWithHighlights, ResourceLink } from "typedb-web-schema"; +import { LinkDirective } from "../link/link.directive"; +import { ScrollShadowComponent } from "../scroll-shadow/scroll-shadow.component"; +import { RichTextComponent } from "../text/rich-text.component"; +import { HeadingWithHighlightsComponent } from "../text/text-with-highlights.component"; + +@Component({ + selector: "td-hot-topics", + templateUrl: "hot-topics.component.html", + styleUrls: ["hot-topics.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + ScrollShadowComponent, HeadingWithHighlightsComponent, LinkDirective, RichTextComponent, + ], +}) +export class HotTopicsComponent { + @Input() title!: ParagraphWithHighlights; + @Input() hotTopics!: ResourceLink[]; + + @HostBinding("class") clazz = "section section-margin"; +} diff --git a/website/src/page/home/home-page.component.html b/website/src/page/home/home-page.component.html index f14674dd1..c15ef4395 100644 --- a/website/src/page/home/home-page.component.html +++ b/website/src/page/home/home-page.component.html @@ -8,6 +8,9 @@ /> } + @if (page.hotTopicsSection) { + + } @for (impactSection of page.impactSections; track impactSection; let idx = $index) { diff --git a/website/src/page/home/home-page.component.ts b/website/src/page/home/home-page.component.ts index 2d7bbe169..e4cd70ba8 100644 --- a/website/src/page/home/home-page.component.ts +++ b/website/src/page/home/home-page.component.ts @@ -3,20 +3,25 @@ import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; import { Title } from "@angular/platform-browser"; import { ActivatedRoute, Router } from "@angular/router"; + + import { IdleMonitorService } from "@scullyio/ng-lib"; import Prism from "prismjs"; import { combineLatest, map, Observable, of } from "rxjs"; -import { - HomePage, homePageSchemaName, Organisation, SanityDataset, SanityHomePage, SocialMediaLink, -} from "typedb-web-schema"; +import { HomePage, homePageSchemaName, Organisation, SanityDataset, SanityHomePage, SocialMediaLink } from "typedb-web-schema"; import { TechnicolorBlock } from "typedb-web-schema"; + + import { ContentService } from "src/service/content.service"; import { MetaTagsService } from "src/service/meta-tags.service"; + + import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { ContentTabsComponent } from "../../framework/content-tabs/content-tabs.component"; import { FeatureGridComponent } from "../../framework/feature-grid/feature-grid.component"; +import { HotTopicsComponent } from "../../framework/hot-topics/hot-topics.component"; import { KeyPointTableComponent } from "../../framework/key-point/key-point.component"; import { LinkPanelsComponent, ResourcePanelsComponent } from "../../framework/link-panels/link-panels.component"; import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; @@ -25,6 +30,7 @@ import { TechnicolorBlockComponent } from "../../framework/technicolor-block/tec import { TestimonialsCarouselComponent } from "../../framework/testimonials-carousel/testimonials-carousel.component"; import { PageComponentBase } from "../page-component-base"; + @Component({ selector: "td-home-page-technicolor-block", template: ` { From 776569321a2977b6e255bda341979414499ad497 Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Tue, 4 Mar 2025 14:06:53 +0000 Subject: [PATCH 3/7] Rename TechnicolorBlock to SectionCore, dissolve all its wrappers --- common/src/styles/_footer.scss | 14 -- common/src/styles/_mixins.scss | 2 +- common/src/styles/base.scss | 26 +--- schema/button.ts | 8 +- schema/component/conclusion-panel.ts | 17 +-- schema/component/feature-grid.ts | 8 +- schema/component/feature-table.ts | 54 ++++++- schema/component/index.ts | 2 +- schema/component/pricing-panel.ts | 4 +- schema/component/publication-panel.ts | 8 +- .../component/{page-section.ts => section.ts} | 39 ++++- schema/component/technicolor-block.ts | 31 ---- schema/index.ts | 4 +- schema/navigation/footer.ts | 4 +- schema/navigation/topnav.ts | 4 +- schema/page/generic.ts | 2 +- schema/page/home.ts | 57 +++---- schema/page/learn.ts | 2 +- schema/page/lectures.ts | 16 +- schema/page/pricing.ts | 56 ++----- schema/page/services.ts | 42 +----- schema/page/solution.ts | 8 +- schema/page/startup-program.ts | 2 +- schema/page/support.ts | 78 ++-------- schema/resource/sanity.ts | 8 +- schema/resource/section.ts | 6 +- schema/testimonial.ts | 50 +++++- .../feature-table.component.scss | 2 +- .../further-learning.component.html | 2 +- .../further-learning.component.ts | 4 +- .../pricing-table.component.scss | 2 +- .../section/section-core.component.html | 15 ++ .../section-core.component.scss} | 4 +- .../section/section-core.component.ts | 33 ++++ .../technicolor-block.component.html | 15 -- .../technicolor-block.component.ts | 142 ------------------ .../features/features-page.component.html | 4 +- .../page/features/features-page.component.ts | 30 +--- .../page/generic/generic-page.component.html | 4 +- .../page/generic/generic-page.component.ts | 38 +---- .../src/page/home/home-page.component.html | 33 ++-- .../src/page/home/home-page.component.scss | 6 +- website/src/page/home/home-page.component.ts | 80 +--------- .../lectures/lectures-page.component.html | 19 +-- .../page/lectures/lectures-page.component.ts | 4 +- .../philosophy/philosophy-page.component.html | 8 +- .../philosophy/philosophy-page.component.ts | 44 +----- .../page/pricing/pricing-page.component.html | 8 +- .../page/pricing/pricing-page.component.scss | 2 +- .../page/pricing/pricing-page.component.ts | 28 +--- .../resource-hub/resource-hub.component.html | 4 +- .../resource-hub/resource-hub.component.ts | 24 +-- .../services/services-page.component.html | 8 +- .../page/services/services-page.component.ts | 62 +------- .../solutions/solution-page.component.html | 8 +- .../page/solutions/solution-page.component.ts | 37 +---- .../startup-program-page.component.html | 4 +- .../startup-program-page.component.scss | 8 +- .../startup-program-page.component.ts | 37 +---- .../page/support/support-page.component.html | 18 +-- .../page/support/support-page.component.ts | 48 +----- 61 files changed, 391 insertions(+), 946 deletions(-) rename schema/component/{page-section.ts => section.ts} (70%) delete mode 100644 schema/component/technicolor-block.ts create mode 100644 website/src/framework/section/section-core.component.html rename website/src/framework/{technicolor-block/technicolor-block.component.scss => section/section-core.component.scss} (97%) create mode 100644 website/src/framework/section/section-core.component.ts delete mode 100644 website/src/framework/technicolor-block/technicolor-block.component.html delete mode 100644 website/src/framework/technicolor-block/technicolor-block.component.ts diff --git a/common/src/styles/_footer.scss b/common/src/styles/_footer.scss index 627569c85..f726e49a3 100644 --- a/common/src/styles/_footer.scss +++ b/common/src/styles/_footer.scss @@ -147,20 +147,6 @@ } } - .td-footer-section-copyright { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: flex-end; - - @media (max-width: media.$max-width-mobile) { - flex-direction: column; - align-items: center; - text-align: center; - gap: 16px; - } - } - .td-footer-credits { display: flex; flex-direction: row; diff --git a/common/src/styles/_mixins.scss b/common/src/styles/_mixins.scss index 5d9477e98..f06f0316d 100644 --- a/common/src/styles/_mixins.scss +++ b/common/src/styles/_mixins.scss @@ -187,7 +187,7 @@ -webkit-mask-size: 100%; } -@mixin color-gradient($color1, $color2) { +@mixin text-gradient($color1, $color2) { background: linear-gradient(105deg, #{$color1} 0%, #{$color2} 100%); background-clip: text; -webkit-text-fill-color: transparent; diff --git a/common/src/styles/base.scss b/common/src/styles/base.scss index f2e98e198..629f427c4 100644 --- a/common/src/styles/base.scss +++ b/common/src/styles/base.scss @@ -3,8 +3,7 @@ @use "mixins" as *; @use "shapes"; -html, -body { +html, body { color-scheme: dark; background-color: var(--body-background); color: var(--body-font-color); @@ -19,20 +18,16 @@ body { scroll-padding-top: var(--scroll-padding); } -*, -*::before, -*::after { +*, *::before, *::after { box-sizing: border-box; } -code, -kbd, -pre { +code, kbd, pre { font-family: var(--code-font-family); } @each $tag in (h1, h2, h3, h4, h5, h6) { - #{$tag} { + #{$tag}, .text-#{$tag} { font-size: var(--font-size-#{$tag}); line-height: var(--line-height-#{$tag}); } @@ -42,20 +37,17 @@ pre { } } -.text-p1, -.text-p1 p { +.text-p1, .text-p1 p { font-size: var(--font-size-p1); line-height: var(--line-height-p1); } -p, -.text-p2 { +p, .text-p2 { font-size: var(--font-size-p2); line-height: var(--line-height-p2); } -.text-blog, -.text-blog p { +.text-blog, .text-blog p { font-size: var(--font-size-blog); line-height: var(--line-height-blog); } @@ -89,9 +81,7 @@ button { font-family: var(--default-font-family); } -input, -select, -textarea { +input, select, textarea { font-family: var(--default-font-family); &::placeholder { color: rgba(colors.$secondary-light-grey, 0.8); diff --git a/schema/button.ts b/schema/button.ts index 10d8eb079..83b1ff3ab 100644 --- a/schema/button.ts +++ b/schema/button.ts @@ -13,14 +13,14 @@ export const buttonStyles = { export type ButtonStyle = keyof typeof buttonStyles; -export interface SanityButton { +export interface SanityLinkButton { style: ButtonStyle; text: string; comingSoon: boolean; link?: SanityReference; } -export type SanityButtons = SanityButton[]; +export type SanityLinkButtons = SanityLinkButton[]; export class ActionButton { readonly style: ButtonStyle; @@ -46,7 +46,7 @@ export class LinkButton extends ActionButton { this.download = props.download; } - static fromSanity(data: SanityButton, db: SanityDataset) { + static fromSanity(data: SanityLinkButton, db: SanityDataset) { return new LinkButton({ style: data.style, text: data.text, comingSoon: data.comingSoon, link: data.link ? Link.fromSanityLinkRef(data.link, db) : undefined }); } } @@ -56,7 +56,7 @@ export interface LinkButtonDownload { } export interface SanityOptionalActions { - actions?: SanityButtons; + actions?: SanityLinkButtons; } export const buttonSchemaName = "button"; diff --git a/schema/component/conclusion-panel.ts b/schema/component/conclusion-panel.ts index 0c885972a..9e4f35344 100644 --- a/schema/component/conclusion-panel.ts +++ b/schema/component/conclusion-panel.ts @@ -2,25 +2,20 @@ import { defineField, defineType } from "@sanity/types"; import { LinkButton, SanityOptionalActions } from "../button"; import { SanityTextLink, TextLink, textLinkSchemaName } from "../link"; import { - bodyFieldRichText, - isVisibleField, - actionsFieldOptional, - requiredRule, - SanityVisibleToggle, - titleBodyIconFields, - titleField, + bodyFieldRichText, isVisibleField, actionsFieldOptional, requiredRule, SanityVisibleToggle, + titleBodyIconFields, titleField, } from "../common-fields"; import { SanityDataset } from "../sanity-core"; import { BodyTextField, PortableText, SanityBodyTextField, SanityTitleField } from "../text"; import { PropsOf } from "../util"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "./technicolor-block"; +import { SanitySectionBase, SectionBase } from "./section"; export interface SanityConclusionPanel extends SanityTitleField, SanityBodyTextField, SanityOptionalActions { resourceListTitle: string; resources: SanityTextLink[]; } -export interface SanityConclusionSection extends SanityTechnicolorBlock, SanityVisibleToggle { +export interface SanityConclusionSection extends SanitySectionBase, SanityVisibleToggle { panel: SanityConclusionPanel; } @@ -50,7 +45,7 @@ export class ConclusionPanel implements Partial { } } -export class ConclusionSection extends TechnicolorBlock { +export class ConclusionSection extends SectionBase { readonly panel: ConclusionPanel; constructor(props: PropsOf) { @@ -60,7 +55,7 @@ export class ConclusionSection extends TechnicolorBlock { static override fromSanity(data: SanityConclusionSection, db: SanityDataset) { return new ConclusionSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { panel: ConclusionPanel.fromSanity(data.panel, db), }) ); diff --git a/schema/component/feature-grid.ts b/schema/component/feature-grid.ts index 2734b89b7..1fe4d49fa 100644 --- a/schema/component/feature-grid.ts +++ b/schema/component/feature-grid.ts @@ -8,9 +8,9 @@ import { SanityTextLink, TextLink, textLinkSchemaName } from "../link"; import { SanityDataset, SanityReference } from "../sanity-core"; import { BodyTextField, PortableText } from "../text"; import { PropsOf } from "../util"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "./technicolor-block"; +import { SanitySectionBase, SectionBase } from "./section"; -export interface SanityFeatureGridSection extends SanityTechnicolorBlock, SanityVisibleToggle { +export interface SanityFeatureGridSection extends SanitySectionBase, SanityVisibleToggle { featureGrid: SanityReference; } @@ -102,7 +102,7 @@ export class FeatureGrid { // not used in FeatureGridSection to flatten the stru } } -export class FeatureGridSection extends TechnicolorBlock { +export class FeatureGridSection extends SectionBase { readonly featureGridLayout: FeatureGridLayout; readonly features: FeatureGridCell[][]; readonly illustration?: Illustration; @@ -123,7 +123,7 @@ export class FeatureGridSection extends TechnicolorBlock { featureCells.push(chunk); } return new FeatureGridSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { featureGridLayout: featureGrid.featureGridLayout, features: featureCells, illustration: featureGrid.illustration diff --git a/schema/component/feature-table.ts b/schema/component/feature-table.ts index 1bf9ae35e..9799943c1 100644 --- a/schema/component/feature-table.ts +++ b/schema/component/feature-table.ts @@ -1,8 +1,9 @@ import { ArrayRule, defineField, defineType } from "@sanity/types"; -import { buttonSchemaName, LinkButton, SanityButton } from "../button"; -import { buttonField, descriptionField, nameField, plainTextField, requiredRule } from "../common-fields"; +import { buttonSchemaName, LinkButton, SanityLinkButton } from "../button"; +import { buttonField, descriptionField, isVisibleField, nameField, plainTextField, requiredRule, titleBodyIconFields } from "../common-fields"; import { SanityDataset } from "../sanity-core"; import { PropsOf } from "../util"; +import { SanitySectionBase, SectionBase } from "./section"; export interface SanityFeatureTable { products: SanityProduct[]; @@ -12,7 +13,7 @@ export interface SanityFeatureTable { interface SanityProduct { name: string; priceString: string; - button: SanityButton; + button: SanityLinkButton; } interface SanityFeatureTableRow { @@ -29,7 +30,7 @@ interface SanityFeatureTableTextCell { text: string; } -type SanityFeatureTableCell = SanityFeatureTableBooleanCell | SanityFeatureTableTextCell | SanityButton; +type SanityFeatureTableCell = SanityFeatureTableBooleanCell | SanityFeatureTableTextCell | SanityLinkButton; function isBooleanCell(cell: SanityFeatureTableCell): cell is SanityFeatureTableBooleanCell { return "isChecked" in cell; @@ -39,10 +40,16 @@ function isTextCell(cell: SanityFeatureTableCell): cell is SanityFeatureTableTex return !isBooleanCell(cell) && !isButtonCell(cell); } -function isButtonCell(cell: SanityFeatureTableCell): cell is SanityButton { +function isButtonCell(cell: SanityFeatureTableCell): cell is SanityLinkButton { return "link" in cell; } +export interface SanityFeatureTableSection extends SanitySectionBase { + featureTable: SanityFeatureTable; +} + +export const featureTableSectionSchemaName = `featureTableSection`; + export class FeatureTable { readonly products: Product[]; readonly rows: FeatureTableRow[]; @@ -109,6 +116,23 @@ function featureTableCellFromSanity(data: SanityFeatureTableCell, db: SanityData else throw "Found unexpected value in feature table cell: " + data; } +export class FeatureTableSection extends SectionBase { + readonly featureTable: FeatureTable; + + constructor(props: PropsOf) { + super(props); + this.featureTable = props.featureTable; + } + + static override fromSanity(data: SanityFeatureTableSection, db: SanityDataset) { + return new FeatureTableSection( + Object.assign(SectionBase.fromSanity(data, db), { + featureTable: FeatureTable.fromSanity(data.featureTable, db), + }) + ); + } +} + const booleanCellSchemaName = "featureTableBooleanCell"; const textCellSchemaName = "featureTableTextCell"; const productSchemaName = "featureTableProduct"; @@ -216,4 +240,22 @@ const featureTableSchema = defineType({ ], }); -export const featureTableSchemas = [featureTableSchema, productSchema, rowSchema, booleanCellSchema, textCellSchema]; +const featureTableSectionSchema = defineType({ + name: featureTableSectionSchemaName, + title: "Feature Table Section", + type: "object", + fields: [ + ...titleBodyIconFields, + defineField({ + name: "featureTable", + title: "Feature Table", + type: featureTableSchemaName, + validation: requiredRule, + }), + isVisibleField, + ], +}); + +export const featureTableSchemas = [ + featureTableSchema, productSchema, rowSchema, booleanCellSchema, textCellSchema, featureTableSectionSchema +]; diff --git a/schema/component/index.ts b/schema/component/index.ts index e616a64c3..84b5359a4 100644 --- a/schema/component/index.ts +++ b/schema/component/index.ts @@ -3,7 +3,7 @@ import { contentTextPanelSchemas } from "./content-text-panel"; import { featureGridSchemas } from "./feature-grid"; import { featureTableSchemas } from "./feature-table"; import { linkPanelSchemas } from "./link-panel"; -import { pageSectionSchemas } from "./page-section"; +import { pageSectionSchemas } from "./section"; import { pricingPanelSchemas } from "./pricing-panel"; import { publicationSchemas } from "./publication-panel"; diff --git a/schema/component/pricing-panel.ts b/schema/component/pricing-panel.ts index 149815690..65b57efcf 100644 --- a/schema/component/pricing-panel.ts +++ b/schema/component/pricing-panel.ts @@ -1,5 +1,5 @@ import { defineField, defineType } from "@sanity/types"; -import { LinkButton, SanityButton } from "../button"; +import { LinkButton, SanityLinkButton } from "../button"; import { bodyFieldRichText, buttonField, keyPointsFieldName, textLinkFieldOptional, titleField, titleFieldOptional } from "../common-fields"; import { SanityTextLink, TextLink } from "../link"; import { SanityDataset } from "../sanity-core"; @@ -12,7 +12,7 @@ export interface SanityPricingPanel { priceString: string; priceStringDetail: string; body: PortableText; - button: SanityButton; + button: SanityLinkButton; keyPoints: string[]; bottomLink?: SanityTextLink; } diff --git a/schema/component/publication-panel.ts b/schema/component/publication-panel.ts index 011e93fa9..ee1c9a44e 100644 --- a/schema/component/publication-panel.ts +++ b/schema/component/publication-panel.ts @@ -9,7 +9,7 @@ import { SanityDataset, SanityReference } from "../sanity-core"; import { PortableText, SanityTitleField } from "../text"; import { PropsOf } from "../util"; import { FeatureGrid, featureGridSchemaName, SanityFeatureGrid } from "./feature-grid"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "./technicolor-block"; +import { SanitySectionBase, SectionBase } from "./section"; export interface SanityPublicationTextBlock extends SanityDocument { // required as we can't mix primitive + object types in Sanity union types content: PortableText; @@ -32,7 +32,7 @@ function isContentRow(item: SanityPublicationItem): item is SanityPublicationCon return item._type === publicationContentRowSchemaName; } -export interface SanityPublicationSection extends SanityTechnicolorBlock, SanityVisibleToggle { +export interface SanityPublicationSection extends SanitySectionBase, SanityVisibleToggle { panelItems: SanityPublicationItem[]; } @@ -78,7 +78,7 @@ function publicationItemFromSanity(data: SanityPublicationItem, db: SanityDatase else return FeatureGrid.fromSanity(data, db); } -export class PublicationSection extends TechnicolorBlock { +export class PublicationSection extends SectionBase { readonly panelItems: PublicationPanelItem[]; constructor(props: PropsOf) { @@ -88,7 +88,7 @@ export class PublicationSection extends TechnicolorBlock { static override fromSanity(data: SanityPublicationSection, db: SanityDataset) { return new PublicationSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { panelItems: data.panelItems.map(x => publicationItemFromSanity(x, db)), }) ); diff --git a/schema/component/page-section.ts b/schema/component/section.ts similarity index 70% rename from schema/component/page-section.ts rename to schema/component/section.ts index ae1b2aec4..261e9d5a5 100644 --- a/schema/component/page-section.ts +++ b/schema/component/section.ts @@ -1,14 +1,17 @@ import { defineField, defineType } from "@sanity/types"; +import { LinkButton } from "../button"; import { - isVisibleField, actionsFieldOptional, resourcesFieldOptional, SanityVisibleToggle, titleBodyIconFields, + isVisibleField, actionsFieldOptional, resourcesFieldOptional, SanityVisibleToggle, titleBodyIconFields, SanityIconField, } from "../common-fields"; import { SanityDataset } from "../sanity-core"; +import { BodyTextField, ParagraphWithHighlights, PortableText, SanityTitleBodyActions } from "../text"; import { PropsOf } from "../util"; import { LinkPanelWithIcon, linkPanelWithIconSchemaName, SanityLinkPanelWithIcon } from "./link-panel"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "./technicolor-block"; import { ContentTextPanel, contentTextPanelSchemaName, SanityContentTextPanel } from "./content-text-panel"; -export interface SanityCoreSection extends SanityTechnicolorBlock, SanityVisibleToggle {} +export interface SanitySectionBase extends SanityTitleBodyActions, SanityIconField {} + +export interface SanityCoreSection extends SanitySectionBase, SanityVisibleToggle {} export interface SanityTitleBodyPanelSection extends SanityCoreSection { panel: SanityContentTextPanel; @@ -18,7 +21,31 @@ export interface SanityLinkPanelsSection extends SanityCoreSection { panels: SanityLinkPanelWithIcon[]; } -export class TitleBodyPanelSection extends TechnicolorBlock { +export class SectionBase implements Partial { + readonly title: ParagraphWithHighlights; + readonly body?: PortableText; + readonly actions?: LinkButton[]; + readonly sectionId: string; + + constructor(props: PropsOf) { + this.title = props.title; + this.body = props.body; + this.actions = props.actions; + this.sectionId = props.sectionId; + } + + static fromSanity(data: SanitySectionBase, db: SanityDataset) { + const title = ParagraphWithHighlights.fromSanity(data.title); + return new SectionBase({ + title: title, + body: data.body, + actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), + sectionId: title.toSectionID(), + }); + } +} + +export class TitleBodyPanelSection extends SectionBase { readonly panel: ContentTextPanel; constructor(props: PropsOf) { @@ -28,13 +55,13 @@ export class TitleBodyPanelSection extends TechnicolorBlock { static override fromSanity(data: SanityTitleBodyPanelSection, db: SanityDataset) { return new TitleBodyPanelSection({ - ...TechnicolorBlock.fromSanity(data, db), + ...SectionBase.fromSanity(data, db), panel: new ContentTextPanel(data.panel, db), }); } } -export class LinkPanelsSection extends TechnicolorBlock { +export class LinkPanelsSection extends SectionBase { readonly panels: LinkPanelWithIcon[]; constructor(props: PropsOf) { diff --git a/schema/component/technicolor-block.ts b/schema/component/technicolor-block.ts deleted file mode 100644 index 986d656ae..000000000 --- a/schema/component/technicolor-block.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { LinkButton } from "../button"; -import { SanityIconField } from "../common-fields"; -import { SanityDataset } from "../sanity-core"; -import { BodyTextField, ParagraphWithHighlights, PortableText, SanityTitleBodyActions } from "../text"; -import { PropsOf } from "../util"; - -export interface SanityTechnicolorBlock extends SanityTitleBodyActions, SanityIconField {} - -export class TechnicolorBlock implements Partial { - readonly title: ParagraphWithHighlights; - readonly body?: PortableText; - readonly actions?: LinkButton[]; - readonly sectionId: string; - - constructor(props: PropsOf) { - this.title = props.title; - this.body = props.body; - this.actions = props.actions; - this.sectionId = props.sectionId; - } - - static fromSanity(data: SanityTechnicolorBlock, db: SanityDataset) { - const title = ParagraphWithHighlights.fromSanity(data.title); - return new TechnicolorBlock({ - title: title, - body: data.body, - actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - sectionId: title.toSectionID(), - }); - } -} diff --git a/schema/index.ts b/schema/index.ts index 4e9336523..c5bd93b05 100644 --- a/schema/index.ts +++ b/schema/index.ts @@ -44,12 +44,12 @@ export { } from "./component/feature-grid"; export { FeatureTable, featureTableSchemaName, type FeatureTableCell } from "./component/feature-table"; export { LinkPanel, LinkPanelWithIcon } from "./component/link-panel"; -export { TitleBodyPanelSection } from "./component/page-section"; +export { TitleBodyPanelSection } from "./component/section"; export { PricingPanel, type SanityPricingPanel } from "./component/pricing-panel"; export { PublicationSection, type PublicationPanelItem, PublicationContentRow, type PublicationContentRowItem, } from "./component/publication-panel"; -export { TechnicolorBlock } from "./component/technicolor-block"; +export { SectionBase } from "./component/section"; export { type FormID, type SanityCustomerIoForms, formsSchemaName } from "./form"; export { imageIllustrationSchemaName, videoEmbedSchemaName, graphVisualisationSchemaName, splitPaneIllustrationSchemaName, diff --git a/schema/navigation/footer.ts b/schema/navigation/footer.ts index 89c47fb94..8c116ef0d 100644 --- a/schema/navigation/footer.ts +++ b/schema/navigation/footer.ts @@ -1,5 +1,5 @@ import { defineField, defineType, SanityDocument } from "@sanity/types"; -import { LinkButton, SanityButton } from "../button"; +import { LinkButton, SanityLinkButton } from "../button"; import { SanityTextLink, TextLink, textLinkSchemaName } from "../link"; import { titleField, titleFieldName } from "../common-fields"; import { Document, SanityDataset } from "../sanity-core"; @@ -19,7 +19,7 @@ export const contactMediaList = Object.keys(contactMedias); export type ContactMediaID = keyof typeof contactMedias; export interface SanityFooter extends SanityDocument { - button: SanityButton; + button: SanityLinkButton; socialMediaLinks: SocialMediaID[]; contactSectionTitle: string; contactMediaLinks: ContactMediaID[]; diff --git a/schema/navigation/topnav.ts b/schema/navigation/topnav.ts index 6472f8690..0d2f834c6 100644 --- a/schema/navigation/topnav.ts +++ b/schema/navigation/topnav.ts @@ -1,6 +1,6 @@ import { BlockElementIcon, ComponentIcon, SquareIcon } from "@sanity/icons"; import { defineField, defineType, SanityDocument } from "@sanity/types"; -import { LinkButton, buttonSchemaName, SanityButton } from "../button"; +import { LinkButton, buttonSchemaName, SanityLinkButton } from "../button"; import { Link, SanityLink, SanityTextLink } from "../link"; import { descriptionField, linkFieldOptional, requiredRule, textLinkFieldOptional, titleField } from "../common-fields"; import { Document, SanityDataset, SanityReference } from "../sanity-core"; @@ -22,7 +22,7 @@ export const topnavSchemaNames = { export interface SanityTopnav extends SanityDocument { primaryItems: SanityNavItem[]; secondaryItems: SanityNavItem[]; - cta: SanityButton; + cta: SanityLinkButton; } interface SanityNavItem { diff --git a/schema/page/generic.ts b/schema/page/generic.ts index e3548c409..8b30e0099 100644 --- a/schema/page/generic.ts +++ b/schema/page/generic.ts @@ -5,7 +5,7 @@ import { SanityTitleBodyPanelSection, TitleBodyPanelSection, titleBodyPanelSectionSchemaName, -} from "../component/page-section"; +} from "../component/section"; import { SanityDataset } from "../sanity-core"; import { SanityTitleBodyActions, TitleBodyActions, titleBodyActionsSectionSchemaName } from "../text"; import { Page, SanityPage } from "./common"; diff --git a/schema/page/home.ts b/schema/page/home.ts index e74061441..062e07429 100644 --- a/schema/page/home.ts +++ b/schema/page/home.ts @@ -2,24 +2,21 @@ import { ArrayRule, defineField, defineType } from "@sanity/types"; import { ConclusionSection, conclusionSectionSchemaName, SanityConclusionSection } from "../component/conclusion-panel"; import { featureGridSchemaName, FeatureGridSection, SanityFeatureGridSection } from "../component/feature-grid"; import { LinkPanelWithIcon, linkPanelWithIconSchemaName } from "../component/link-panel"; -import { resourceSectionSchemaName, SanityCoreSection, SanityLinkPanelsSection } from "../component/page-section"; -import { TechnicolorBlock } from "../component/technicolor-block"; +import { resourceSectionSchemaName, SanityCoreSection, SanityLinkPanelsSection, SectionBase } from "../component/section"; import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, - keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, titleField, + keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, } from "../common-fields"; import { SanityContentTextTab, ContentTextTab, contentTextTabSchemaName } from "../component/content-text-panel"; import { KeyPointWithIcon, SanityKeyPointWithIcon } from "../key-point"; import { Organisation, organisationLogosField, SanityOrganisation } from "../organisation"; -import { resourceLinkOf } from "../resource"; import { ResourceLink } from "../resource/base"; import { SanityResource, SanityResourceSection } from "../resource/sanity"; import { ResourceSection } from "../resource/section"; import { SanityDataset, SanityReference } from "../sanity-core"; import { SocialMediaID, socialMediaLinksField } from "../social-media"; -import { SanityTestimonial, Testimonial, testimonialSchemaName } from "../testimonial"; +import { SanityTestimonialsSection, testimonialSchemaName, TestimonialsSection, testimonialsSectionField } from "../testimonial"; import { PropsOf } from "../util"; - import { Page, SanityPage } from "./common"; import { metaTagsField } from "./meta-tags"; @@ -75,10 +72,6 @@ interface SanityCommunitySection extends SanityCoreSection { socialMediaLinks: SocialMediaID[]; } -interface SanityTestimonialsSection extends SanityCoreSection { - testimonials: SanityReference[]; -} - export class HomePage extends Page { readonly [sections.intro.id]?: IntroSection; readonly [sections.hotTopics.id]?: HotTopicsSection; @@ -120,7 +113,7 @@ export class HomePage extends Page { } } -class IntroSection extends TechnicolorBlock { +class IntroSection extends SectionBase { readonly userLogos: Organisation[]; readonly contentTabs: ContentTextTab[]; @@ -132,7 +125,7 @@ class IntroSection extends TechnicolorBlock { static override fromSanity(data: SanityIntroSection, db: SanityDataset) { return new IntroSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { userLogos: data.displayUserLogos ? data.userLogos.map((x) => new Organisation(db.resolveRef(x), db)) : [], @@ -142,7 +135,7 @@ class IntroSection extends TechnicolorBlock { } } -class HotTopicsSection extends TechnicolorBlock { +class HotTopicsSection extends SectionBase { readonly hotTopics: ResourceLink[]; constructor(props: PropsOf) { @@ -151,13 +144,13 @@ class HotTopicsSection extends TechnicolorBlock { } static override fromSanity(data: SanityHotTopicsSection, db: SanityDataset) { - return new HotTopicsSection(Object.assign(TechnicolorBlock.fromSanity(data, db), { + return new HotTopicsSection(Object.assign(SectionBase.fromSanity(data, db), { hotTopics: data.hotTopics?.map(x => ResourceLink.fromSanity(db.resolveRef(x), db, true)) || [], })); } } -class ImpactSection extends TechnicolorBlock { +class ImpactSection extends SectionBase { readonly impactTabs: ContentTextTab[]; constructor(props: PropsOf) { @@ -167,14 +160,14 @@ class ImpactSection extends TechnicolorBlock { static override fromSanity(data: SanityImpactSection, db: SanityDataset) { return new ImpactSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { impactTabs: data.impactTabs.map((x) => new ContentTextTab(x, db)), }) ); } } -class ToolingSection extends TechnicolorBlock { +class ToolingSection extends SectionBase { readonly panels: LinkPanelWithIcon[]; constructor(props: PropsOf) { @@ -184,14 +177,14 @@ class ToolingSection extends TechnicolorBlock { static override fromSanity(data: SanityLinkPanelsSection, db: SanityDataset) { return new ToolingSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { panels: data.panels.map((x) => LinkPanelWithIcon.fromSanity(x, db)), }) ); } } -class CloudSection extends TechnicolorBlock { +class CloudSection extends SectionBase { readonly keyPoints: KeyPointWithIcon[]; constructor(props: PropsOf) { @@ -201,14 +194,14 @@ class CloudSection extends TechnicolorBlock { static override fromSanity(data: SanityKeyPointsSection, db: SanityDataset) { return new CloudSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { keyPoints: data.keyPoints.map((x) => new KeyPointWithIcon(x, db)), }) ); } } -class CommunitySection extends TechnicolorBlock { +class CommunitySection extends SectionBase { readonly socialMedias: SocialMediaID[]; constructor(props: PropsOf) { @@ -218,30 +211,13 @@ class CommunitySection extends TechnicolorBlock { static override fromSanity(data: SanityCommunitySection, db: SanityDataset) { return new CommunitySection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { socialMedias: data.socialMediaLinks, }) ); } } -class TestimonialsSection extends TechnicolorBlock { - readonly testimonials: Testimonial[]; - - constructor(props: PropsOf) { - super(props); - this.testimonials = props.testimonials; - } - - static override fromSanity(data: SanityTestimonialsSection, db: SanityDataset) { - return new TestimonialsSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { - testimonials: data.testimonials.map((x) => new Testimonial(db.resolveRef(x), db)), - }) - ); - } -} - export const homePageSchemaName = "homePage"; const sectionSchemaName = (key: SectionKey) => `${homePageSchemaName}_${sections[key].id}`; @@ -358,7 +334,7 @@ const impactSectionsField = defineField({ }); const otherSectionFields = (Object.keys(sections) as SectionKey[]) - .filter((key) => !["intro", "impact", "hotTopics", "resources"].includes(key)) + .filter((key) => !["intro", "impact", "hotTopics", "resources", "testimonials"].includes(key)) .map((key) => defineField({ name: sections[key].id, @@ -385,6 +361,7 @@ const homePageSchema = defineType({ validation: requiredRule, }), ...otherSectionFields, + testimonialsSectionField, defineField({ name: "conclusionSection", title: "Conclusion Section", diff --git a/schema/page/learn.ts b/schema/page/learn.ts index 360c85c20..4d2a23e39 100644 --- a/schema/page/learn.ts +++ b/schema/page/learn.ts @@ -1,7 +1,7 @@ import { defineField, defineType } from "@sanity/types"; import { ConclusionSection, conclusionSectionSchemaName, SanityConclusionSection } from "../component/conclusion-panel"; import { collapsibleOptions, requiredRule } from "../common-fields"; -import { resourceSectionSchemaName } from "../component/page-section"; +import { resourceSectionSchemaName } from "../component/section"; import { SanityResourceSection } from "../resource/sanity"; import { ResourceSection } from "../resource/section"; import { SanityDataset } from "../sanity-core"; diff --git a/schema/page/lectures.ts b/schema/page/lectures.ts index ab471f565..842af150c 100644 --- a/schema/page/lectures.ts +++ b/schema/page/lectures.ts @@ -8,7 +8,7 @@ import { sectionIconField, titleAndBodyFields, } from "../common-fields"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "../component/technicolor-block"; +import { SanitySectionBase, SectionBase } from "../component/section"; import { SanityLecture, lectureSchemaName } from "../resource/sanity"; import { SanityDataset, SanityReference } from "../sanity-core"; import { SanityTitleAndBody, TitleAndBody } from "../text"; @@ -27,11 +27,11 @@ export interface SanityIntroSection extends SanityTitleAndBody { featuredLecture?: SanityReference; } -export interface SanityFeaturedLecturesSection extends SanityTechnicolorBlock, SanityVisibleToggle { +export interface SanityFeaturedLecturesSection extends SanitySectionBase, SanityVisibleToggle { featuredLectures?: SanityReference[]; } -export interface SanityExploreLecturesSection extends SanityTechnicolorBlock, SanityVisibleToggle {} +export interface SanityExploreLecturesSection extends SanitySectionBase, SanityVisibleToggle {} export class LecturesPage extends Page { readonly introSection: IntroSection; @@ -69,7 +69,7 @@ export class IntroSection extends TitleAndBody { } } -export class FeaturedLecturesSection extends TechnicolorBlock { +export class FeaturedLecturesSection extends SectionBase { featuredLectures?: Lecture[]; constructor(props: PropsOf) { @@ -79,7 +79,7 @@ export class FeaturedLecturesSection extends TechnicolorBlock { static override fromSanity(data: SanityFeaturedLecturesSection, db: SanityDataset) { return new FeaturedLecturesSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { featuredLectures: data.featuredLectures ? data.featuredLectures.map((x) => Lecture.fromSanity(db.resolveRef(x), db)) : undefined, @@ -88,13 +88,13 @@ export class FeaturedLecturesSection extends TechnicolorBlock { } } -export class ExploreLecturesSection extends TechnicolorBlock { +export class ExploreLecturesSection extends SectionBase { constructor(props: PropsOf) { super(props); } - static override fromSanity(data: SanityTechnicolorBlock, db: SanityDataset) { - return new ExploreLecturesSection(Object.assign(TechnicolorBlock.fromSanity(data, db), {})); + static override fromSanity(data: SanitySectionBase, db: SanityDataset) { + return new ExploreLecturesSection(Object.assign(SectionBase.fromSanity(data, db), {})); } } diff --git a/schema/page/pricing.ts b/schema/page/pricing.ts index 461d4be50..2e9d10f64 100644 --- a/schema/page/pricing.ts +++ b/schema/page/pricing.ts @@ -1,9 +1,9 @@ import { defineField, defineType, DocumentRule } from "@sanity/types"; import { collapsibleOptions, isVisibleField, requiredRule, titleBodyIconFields } from "../common-fields"; -import { FeatureTable, featureTableSchemaName, SanityFeatureTable } from "../component/feature-table"; -import { coreSectionSchemaName, SanityCoreSection, SanityTitleBodyPanelSection, TitleBodyPanelSection, titleBodyPanelSectionSchemaName } from "../component/page-section"; +import { FeatureTableSection, featureTableSectionSchemaName, SanityFeatureTableSection } from "../component/feature-table"; +import { coreSectionSchemaName, SanityCoreSection, SanityTitleBodyPanelSection, TitleBodyPanelSection, titleBodyPanelSectionSchemaName } from "../component/section"; import { PricingPanel, pricingPanelSchemaName, SanityPricingPanel } from "../component/pricing-panel"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "../component/technicolor-block"; +import { SanitySectionBase, SectionBase } from "../component/section"; import { SanityDataset } from "../sanity-core"; import { PropsOf } from "../util"; import { Page, SanityPage } from "./common"; @@ -16,31 +16,27 @@ export interface SanityPricingPage extends SanityPage { contactSection: SanityCoreSection; } -export interface SanityIntroSection extends SanityTechnicolorBlock { +export interface SanityIntroSection extends SanitySectionBase { panelsCaption?: string; panels: SanityPricingPanel[]; } -export interface SanityFeatureTableSection extends SanityTechnicolorBlock { - featureTable: SanityFeatureTable; -} - export class PricingPage extends Page { readonly introSection: IntroSection; readonly providersSection: TitleBodyPanelSection; readonly featureTableSection: FeatureTableSection; - readonly contactSection: TechnicolorBlock; + readonly contactSection: SectionBase; constructor(data: SanityPricingPage, db: SanityDataset) { super(data, db); this.introSection = IntroSection.fromSanity(data.introSection, db); this.providersSection = TitleBodyPanelSection.fromSanity(data.providersSection, db); this.featureTableSection = FeatureTableSection.fromSanity(data.featureTableSection, db); - this.contactSection = TechnicolorBlock.fromSanity(data.contactSection, db); + this.contactSection = SectionBase.fromSanity(data.contactSection, db); } } -export class IntroSection extends TechnicolorBlock { +export class IntroSection extends SectionBase { readonly panelsCaption?: string; readonly panels: PricingPanel[]; @@ -52,7 +48,7 @@ export class IntroSection extends TechnicolorBlock { static override fromSanity(data: SanityIntroSection, db: SanityDataset) { return new IntroSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { + Object.assign(SectionBase.fromSanity(data, db), { panelsCaption: data.panelsCaption, panels: data.panels.map((x) => PricingPanel.fromSanity(x, db)), }) @@ -60,27 +56,9 @@ export class IntroSection extends TechnicolorBlock { } } -export class FeatureTableSection extends TechnicolorBlock { - readonly featureTable: FeatureTable; - - constructor(props: PropsOf) { - super(props); - this.featureTable = props.featureTable; - } - - static override fromSanity(data: SanityFeatureTableSection, db: SanityDataset) { - return new FeatureTableSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { - featureTable: FeatureTable.fromSanity(data.featureTable, db), - }) - ); - } -} - export const pricingPageSchemaName = "pricingPage"; const introSectionSchemaName = `${pricingPageSchemaName}_introSection`; -const featureTableSectionSchemaName = `${pricingPageSchemaName}_featureTableSection`; const introSectionSchema = defineType({ name: introSectionSchemaName, @@ -103,22 +81,6 @@ const introSectionSchema = defineType({ ], }); -const featureTableSectionSchema = defineType({ - name: featureTableSectionSchemaName, - title: "Feature Table Section", - type: "object", - fields: [ - ...titleBodyIconFields, - defineField({ - name: "featureTable", - title: "Feature Table", - type: featureTableSchemaName, - validation: requiredRule, - }), - isVisibleField, - ], -}); - const pricingPageSchema = defineType({ name: pricingPageSchemaName, title: "Pricing Page", @@ -173,4 +135,4 @@ const pricingPageSchema = defineType({ }), }); -export const pricingPageSchemas = [introSectionSchema, featureTableSectionSchema, pricingPageSchema]; +export const pricingPageSchemas = [introSectionSchema, pricingPageSchema]; diff --git a/schema/page/services.ts b/schema/page/services.ts index eb01ee822..77d3e0754 100644 --- a/schema/page/services.ts +++ b/schema/page/services.ts @@ -1,16 +1,11 @@ import { defineField, defineType } from "@sanity/types"; import { SanityOptionalActions } from "../button"; import { - collapsibleOptions, - isVisibleField, - actionsFieldOptional, - - titleBodyIconFields, - SanityVisibleToggle, + collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, SanityVisibleToggle, } from "../common-fields"; -import { SanityTechnicolorBlock, TechnicolorBlock } from "../component/technicolor-block"; -import { SanityDataset, SanityReference } from "../sanity-core"; -import { SanityTestimonial, Testimonial, testimonialSchemaName } from "../testimonial"; +import { SanitySectionBase, SectionBase } from "../component/section"; +import { SanityDataset } from "../sanity-core"; +import { SanityTestimonialsSection, testimonialSchemaName, TestimonialsSection } from "../testimonial"; import { SanityTitleBodyActions } from "../text"; import { PropsOf } from "../util"; import { Page, SanityPage } from "./common"; @@ -33,20 +28,16 @@ export interface SanityServicesPage extends SanityPage { interface SanitySection extends SanityTitleBodyActions, SanityVisibleToggle {} -interface SanityCoreSection extends SanitySection, SanityTechnicolorBlock {} +interface SanityCoreSection extends SanitySection, SanitySectionBase {} interface SanityIntroSection extends SanityCoreSection, SanityOptionalActions { keyPoints: SanityServicesKeyPoint[]; } -interface SanityTestimonialsSection extends SanityCoreSection, SanityOptionalActions { - testimonials: SanityReference[]; -} - export class ServicesPage extends Page { readonly [sections.intro.id]?: IntroSection; readonly [sections.testimonials.id]?: TestimonialsSection; - readonly [sections.contact.id]?: TechnicolorBlock; + readonly [sections.contact.id]?: SectionBase; constructor(data: SanityServicesPage, db: SanityDataset) { super(data, db); @@ -62,7 +53,7 @@ export class ServicesPage extends Page { } } -class IntroSection extends TechnicolorBlock { +class IntroSection extends SectionBase { readonly keyPoints: ServicesKeyPoint[]; constructor(props: PropsOf) { @@ -78,24 +69,7 @@ class IntroSection extends TechnicolorBlock { } } -class TestimonialsSection extends TechnicolorBlock { - readonly testimonials: Testimonial[]; - - constructor(props: PropsOf) { - super(props); - this.testimonials = props.testimonials; - } - - static override fromSanity(data: SanityTestimonialsSection, db: SanityDataset) { - return new TestimonialsSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { - testimonials: data.testimonials.map((x) => new Testimonial(db.resolveRef(x), db)), - }) - ); - } -} - -class ContactSection extends TechnicolorBlock {} +class ContactSection extends SectionBase {} export const servicesPageSchemaName = "servicesPage"; diff --git a/schema/page/solution.ts b/schema/page/solution.ts index a747961fc..e1a392269 100644 --- a/schema/page/solution.ts +++ b/schema/page/solution.ts @@ -1,8 +1,8 @@ import { DocumentIcon } from "@sanity/icons"; import { defineField, defineType, Slug } from "@sanity/types"; import { LinkButton } from "../button"; -import { SanityCoreSection } from "../component/page-section"; -import { TechnicolorBlock } from "../component/technicolor-block"; +import { SanityCoreSection } from "../component/section"; +import { SectionBase } from "../component/section"; import { SanityLink } from "../link"; import { bodyFieldRichText, collapsibleOptions, isVisibleField, keyPointsField, keyPointsWithIconsField, @@ -126,7 +126,7 @@ class IntroSection extends TitleAndBody { } } -class KeyPointsSection extends TechnicolorBlock { +class KeyPointsSection extends SectionBase { readonly keyPoints: KeyPoint[]; constructor(props: PropsOf) { @@ -151,7 +151,7 @@ class KeyPointsSection extends TechnicolorBlock { } } -class SolutionSection extends TechnicolorBlock { +class SolutionSection extends SectionBase { readonly keyPoints: KeyPointWithIcon[]; constructor(props: PropsOf) { diff --git a/schema/page/startup-program.ts b/schema/page/startup-program.ts index 13a5b2714..e32e09d2f 100644 --- a/schema/page/startup-program.ts +++ b/schema/page/startup-program.ts @@ -1,7 +1,7 @@ import { defineField, defineType } from "@sanity/types"; import { collapsibleOptions, requiredRule } from "../common-fields"; import { ConclusionSection, conclusionSectionSchemaName, SanityConclusionSection } from "../component/conclusion-panel"; -import { LinkPanelsSection, linkPanelsSectionSchemaName, SanityLinkPanelsSection, SanityTitleBodyPanelSection, TitleBodyPanelSection, titleBodyPanelSectionSchemaName } from "../component/page-section"; +import { LinkPanelsSection, linkPanelsSectionSchemaName, SanityLinkPanelsSection, SanityTitleBodyPanelSection, TitleBodyPanelSection, titleBodyPanelSectionSchemaName } from "../component/section"; import { SanityDataset } from "../sanity-core"; import { Page, SanityPage } from "./common"; import { metaTagsField } from "./meta-tags"; diff --git a/schema/page/support.ts b/schema/page/support.ts index efcb55208..4873b09dd 100644 --- a/schema/page/support.ts +++ b/schema/page/support.ts @@ -2,13 +2,11 @@ import { defineField, defineType } from "@sanity/types"; import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, } from "../common-fields"; -import { FeatureTable, SanityFeatureTable, featureTableSchemaName } from "../component/feature-table"; +import { featureTableSchemaName, FeatureTableSection, SanityFeatureTableSection } from "../component/feature-table"; import { linkPanelWithIconSchemaName } from "../component/link-panel"; -import { LinkPanelsSection, SanityCoreSection, SanityLinkPanelsSection } from "../component/page-section"; -import { TechnicolorBlock } from "../component/technicolor-block"; -import { SanityDataset, SanityReference } from "../sanity-core"; -import { SanityTestimonial, Testimonial, testimonialSchemaName } from "../testimonial"; -import { PropsOf } from "../util"; +import { LinkPanelsSection, SanityCoreSection, SanityLinkPanelsSection, SectionBase } from "../component/section"; +import { SanityDataset } from "../sanity-core"; +import { SanityTestimonialsSection, TestimonialsSection, testimonialsSectionField } from "../testimonial"; import { Page, SanityPage } from "./common"; import { metaTagsField } from "./meta-tags"; @@ -28,70 +26,27 @@ export interface SanitySupportPage extends SanityPage { [sections.contact.id]: SanityCoreSection; } -interface SanityFeatureTableSection extends SanityCoreSection { - featureTable: SanityFeatureTable; -} - -interface SanityTestimonialsSection extends SanityCoreSection { - testimonials: SanityReference[]; -} - export class SupportPage extends Page { readonly [sections.intro.id]?: LinkPanelsSection; readonly [sections.featureTable.id]?: FeatureTableSection; readonly [sections.testimonials.id]?: TestimonialsSection; - readonly [sections.contact.id]?: TechnicolorBlock; + readonly [sections.contact.id]?: SectionBase; constructor(data: SanitySupportPage, db: SanityDataset) { super(data, db); this[sections.intro.id] = data.introSection.isVisible ? LinkPanelsSection.fromSanity(data.introSection, db) : undefined; - this[sections.featureTable.id] = data.featureTableSection.isVisible - ? FeatureTableSection.fromSanity(data.featureTableSection, db) - : undefined; + this[sections.featureTable.id] = FeatureTableSection.fromSanity(data.featureTableSection, db); this[sections.testimonials.id] = data.testimonialsSection.isVisible ? TestimonialsSection.fromSanity(data.testimonialsSection, db) : undefined; this[sections.contact.id] = data.contactSection.isVisible - ? TechnicolorBlock.fromSanity(data.contactSection, db) + ? SectionBase.fromSanity(data.contactSection, db) : undefined; } } -class FeatureTableSection extends TechnicolorBlock { - readonly featureTable: FeatureTable; - - constructor(props: PropsOf) { - super(props); - this.featureTable = props.featureTable; - } - - static override fromSanity(data: SanityFeatureTableSection, db: SanityDataset) { - return new FeatureTableSection({ - ...super.fromSanity(data, db), - featureTable: FeatureTable.fromSanity(data.featureTable, db), - }); - } -} - -class TestimonialsSection extends TechnicolorBlock { - readonly testimonials: Testimonial[]; - - constructor(props: PropsOf) { - super(props); - this.testimonials = props.testimonials; - } - - static override fromSanity(data: SanityTestimonialsSection, db: SanityDataset) { - return new TestimonialsSection( - Object.assign(TechnicolorBlock.fromSanity(data, db), { - testimonials: data.testimonials.map((x) => new Testimonial(db.resolveRef(x), db)), - }) - ); - } -} - export const supportPageSchemaName = "supportPage"; const sectionSchemaName = (key: SectionKey) => `${supportPageSchemaName}_${sections[key].id}`; @@ -126,24 +81,13 @@ const sectionSchemas = [ type: featureTableSchemaName, validation: requiredRule, }), - isVisibleField, - ]), - sectionSchema("testimonials", [ - ...titleBodyIconFields, - actionsFieldOptional, - defineField({ - name: "testimonials", - title: "Testimonials", - type: "array", - of: [{ type: "reference", to: [{ type: testimonialSchemaName }] }], - }), - isVisibleField, ]), sectionSchema("contact", [...titleBodyIconFields, actionsFieldOptional, isVisibleField]), ]; -const sectionFields = (Object.keys(sections) as SectionKey[]).map((key) => - defineField({ +const sectionFields = (Object.keys(sections) as SectionKey[]) + .filter((key) => !["testimonials"].includes(key)) + .map((key) => defineField({ name: sections[key].id, title: `${sections[key].title} Section`, type: sectionSchemaName(key), @@ -155,7 +99,7 @@ const supportPageSchema = defineType({ name: supportPageSchemaName, title: "Support Page", type: "document", - fields: [metaTagsField, ...sectionFields], + fields: [metaTagsField, ...sectionFields, testimonialsSectionField], preview: { prepare: (_selection) => ({ title: "Support Page" }) }, }); diff --git a/schema/resource/sanity.ts b/schema/resource/sanity.ts index db36bd7b0..2a897ee97 100644 --- a/schema/resource/sanity.ts +++ b/schema/resource/sanity.ts @@ -1,7 +1,7 @@ import { SanityDocument, Slug } from "@sanity/types"; -import { SanityButton } from "../button"; +import { SanityLinkButton } from "../button"; import { SanityVisibleToggle } from "../common-fields"; -import { SanityTechnicolorBlock } from "../component/technicolor-block"; +import { SanitySectionBase } from "../component/section"; import { SanityLink } from "../link"; import { SanityMetaTags } from "../page/meta-tags"; import { SanityPerson } from "../person"; @@ -100,10 +100,10 @@ export interface SanityLiveEvent extends SanityEventBase { venue: string; dateOptions: SanityEventDate; signupMethod: EventSignupMethod; - externalUrlButton?: SanityButton; + externalUrlButton?: SanityLinkButton; } -export interface SanityResourceSection extends SanityTechnicolorBlock, SanityVisibleToggle { +export interface SanityResourceSection extends SanitySectionBase, SanityVisibleToggle { resources?: SanityReference[]; } diff --git a/schema/resource/section.ts b/schema/resource/section.ts index 613b7e63a..1a5b00d30 100644 --- a/schema/resource/section.ts +++ b/schema/resource/section.ts @@ -1,14 +1,14 @@ import { defineField, defineType } from "@sanity/types"; import { LinkButton } from "../button"; import { bodyFieldRichText, isVisibleField, requiredRule, resourcesField } from "../common-fields"; -import { TechnicolorBlock } from "../component/technicolor-block"; +import { SectionBase } from "../component/section"; import { SanityDataset } from "../sanity-core"; import { ParagraphWithHighlights } from "../text"; import { PropsOf } from "../util"; import { ResourceLink } from "./base"; import { SanityResourceSection } from "./sanity"; -export class ResourceSection extends TechnicolorBlock { +export class ResourceSection extends SectionBase { readonly resources: ResourceLink[]; constructor(props: PropsOf) { @@ -17,7 +17,7 @@ export class ResourceSection extends TechnicolorBlock { } static override fromSanity(data: SanityResourceSection, db: SanityDataset): ResourceSection { - return new ResourceSection(Object.assign(TechnicolorBlock.fromSanity(data, db), { + return new ResourceSection(Object.assign(SectionBase.fromSanity(data, db), { resources: data.resources?.map(x => ResourceLink.fromSanity(db.resolveRef(x), db, true)) || [], })); } diff --git a/schema/testimonial.ts b/schema/testimonial.ts index 9b36bd959..1c57f4b44 100644 --- a/schema/testimonial.ts +++ b/schema/testimonial.ts @@ -1,14 +1,20 @@ import { BookIcon, HeartIcon } from "@sanity/icons"; import { defineField, defineType, SanityDocument } from "@sanity/types"; -import { authorField } from "./common-fields"; +import { actionsFieldOptional, authorField, collapsibleOptions, isVisibleField, SanityVisibleToggle, titleBodyIconFields } from "./common-fields"; +import { SanityCoreSection, SectionBase } from "./component/section"; import { Person, personSchemaName, SanityPerson } from "./person"; import { Document, SanityDataset, SanityReference } from "./sanity-core"; +import { PropsOf } from "./util"; export interface SanityTestimonial extends SanityDocument { author: SanityReference; body: string; } +export interface SanityTestimonialsSection extends SanityCoreSection, SanityVisibleToggle { + testimonials: SanityReference[]; +} + export class Testimonial extends Document { readonly author: Person; readonly body: string; @@ -20,7 +26,25 @@ export class Testimonial extends Document { } } +export class TestimonialsSection extends SectionBase { + readonly testimonials: Testimonial[]; + + constructor(props: PropsOf) { + super(props); + this.testimonials = props.testimonials; + } + + static override fromSanity(data: SanityTestimonialsSection, db: SanityDataset) { + return new TestimonialsSection( + Object.assign(SectionBase.fromSanity(data, db), { + testimonials: data.testimonials.map((x) => new Testimonial(db.resolveRef(x), db)), + }) + ); + } +} + export const testimonialSchemaName = "testimonial"; +export const testimonialsSectionSchemaName = "testimonialsSection"; export const testimonialSchema = defineType({ name: testimonialSchemaName, @@ -44,3 +68,27 @@ export const testimonialSchema = defineType({ }), }, }); + +export const testimonialsSectionField = defineField({ + name: testimonialsSectionSchemaName, + title: `Testimonials Section`, + type: testimonialsSectionSchemaName, + options: collapsibleOptions, +}); + +const testimonialsSectionSchema = defineType({ + name: testimonialsSectionSchemaName, + title: `Testimonials Section`, + type: "object", + fields: [ + ...titleBodyIconFields, + actionsFieldOptional, + defineField({ + name: "testimonials", + title: "Testimonials", + type: "array", + of: [{ type: "reference", to: [{ type: testimonialSchemaName }] }], + }), + isVisibleField, + ], +}); diff --git a/website/src/framework/feature-table/feature-table.component.scss b/website/src/framework/feature-table/feature-table.component.scss index 0d52e4406..a80978f12 100644 --- a/website/src/framework/feature-table/feature-table.component.scss +++ b/website/src/framework/feature-table/feature-table.component.scss @@ -65,7 +65,7 @@ thead { &:nth-of-type(4) { p { - @include color-gradient(#F96480, #FDD257); + @include text-gradient(#F96480, #FDD257); } td-button ::ng-deep a { diff --git a/website/src/framework/further-learning/further-learning.component.html b/website/src/framework/further-learning/further-learning.component.html index 08ae95eeb..bec0eeadd 100644 --- a/website/src/framework/further-learning/further-learning.component.html +++ b/website/src/framework/further-learning/further-learning.component.html @@ -1,2 +1,2 @@ - + diff --git a/website/src/framework/further-learning/further-learning.component.ts b/website/src/framework/further-learning/further-learning.component.ts index 234754993..4d21b1bef 100644 --- a/website/src/framework/further-learning/further-learning.component.ts +++ b/website/src/framework/further-learning/further-learning.component.ts @@ -3,14 +3,14 @@ import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; import { ResourceSection } from "typedb-web-schema"; import { ResourcePanelsComponent } from "../link-panels/link-panels.component"; -import { TechnicolorBlockComponent } from "../technicolor-block/technicolor-block.component"; +import { SectionCoreComponent } from "../section/section-core.component"; @Component({ selector: "td-further-learning", templateUrl: "./further-learning.component.html", changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [TechnicolorBlockComponent, ResourcePanelsComponent], + imports: [SectionCoreComponent, ResourcePanelsComponent], }) export class FurtherLearningComponent { @Input() value!: ResourceSection; diff --git a/website/src/framework/pricing-table/pricing-table.component.scss b/website/src/framework/pricing-table/pricing-table.component.scss index 8d1de8488..3ba5a9582 100644 --- a/website/src/framework/pricing-table/pricing-table.component.scss +++ b/website/src/framework/pricing-table/pricing-table.component.scss @@ -51,7 +51,7 @@ table:nth-of-type(3), td:nth-of-type(2) { table:nth-of-type(4), td:nth-of-type(3) { h3 { - @include color-gradient(#F96480, #FDD257); + @include text-gradient(#F96480, #FDD257); } td-button ::ng-deep a { diff --git a/website/src/framework/section/section-core.component.html b/website/src/framework/section/section-core.component.html new file mode 100644 index 000000000..bc46ede53 --- /dev/null +++ b/website/src/framework/section/section-core.component.html @@ -0,0 +1,15 @@ +
+ +
+
+ @if (section.body && !noBody) { + + } + @if (section.actions) { + + } + @if (organisationLogos?.length) { + + } +
+
diff --git a/website/src/framework/technicolor-block/technicolor-block.component.scss b/website/src/framework/section/section-core.component.scss similarity index 97% rename from website/src/framework/technicolor-block/technicolor-block.component.scss rename to website/src/framework/section/section-core.component.scss index d74f134e6..e32e588a6 100644 --- a/website/src/framework/technicolor-block/technicolor-block.component.scss +++ b/website/src/framework/section/section-core.component.scss @@ -1,5 +1,5 @@ -@use "colors"; -@use "media"; +@use "../../../node_modules/typedb-web-common/src/styles/colors"; +@use "../../../node_modules/typedb-web-common/src/styles/media"; @mixin graphic-line-gradient($base-color) { background: linear-gradient( diff --git a/website/src/framework/section/section-core.component.ts b/website/src/framework/section/section-core.component.ts new file mode 100644 index 000000000..6798142ed --- /dev/null +++ b/website/src/framework/section/section-core.component.ts @@ -0,0 +1,33 @@ +import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; +import { Organisation, SectionBase } from "../../../../schema"; +import { ActionsComponent } from "../actions/actions.component"; +import { OrganisationLogosComponent } from "../organisation-logos/organisation-logos.component"; +import { RichTextComponent } from "../text/rich-text.component"; +import { HeadingWithHighlightsComponent } from "../text/text-with-highlights.component"; + +@Component({ + selector: "td-section-core", + templateUrl: "section-core.component.html", + styleUrls: ["./section-core.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + HeadingWithHighlightsComponent, RichTextComponent, ActionsComponent, OrganisationLogosComponent + ], +}) +export class SectionCoreComponent { + @Input() section!: SectionBase; + @Input() level: "h1" | "h2" = "h2"; + @Input() noBody?: boolean; + @Input() organisationLogos?: Organisation[]; + themeColorHex = "#02DAC9"; + + @HostBinding("class") + get clazz(): string { + return `section ${this.levelClass}`; + } + + private get levelClass(): string { + return `tb-level-${this.level}`; + } +} diff --git a/website/src/framework/technicolor-block/technicolor-block.component.html b/website/src/framework/technicolor-block/technicolor-block.component.html deleted file mode 100644 index ab5442f5b..000000000 --- a/website/src/framework/technicolor-block/technicolor-block.component.html +++ /dev/null @@ -1,15 +0,0 @@ -
- -
-
- @if (block.body && !noBody) { - - } - @if (block.actions) { - - } - @if (organisationLogos?.length) { - - } -
-
diff --git a/website/src/framework/technicolor-block/technicolor-block.component.ts b/website/src/framework/technicolor-block/technicolor-block.component.ts deleted file mode 100644 index 8f80da6a1..000000000 --- a/website/src/framework/technicolor-block/technicolor-block.component.ts +++ /dev/null @@ -1,142 +0,0 @@ - -import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; - -import { Organisation, TechnicolorBlock } from "typedb-web-schema"; - -import { ActionsComponent } from "../actions/actions.component"; -import { LinkDirective } from "../link/link.directive"; -import { OrganisationLogosComponent } from "../organisation-logos/organisation-logos.component"; -import { RichTextComponent } from "../text/rich-text.component"; -import { HeadingWithHighlightsComponent } from "../text/text-with-highlights.component"; - -@Component({ - selector: "td-technicolor-block", - templateUrl: "technicolor-block.component.html", - styleUrls: ["./technicolor-block.component.scss"], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [ - LinkDirective, HeadingWithHighlightsComponent, RichTextComponent, ActionsComponent, OrganisationLogosComponent - ], -}) -export class TechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() index!: number; - @Input() level: "h1" | "h2" = "h2"; - @Input() @HostBinding("class.tb-no-upper") noUpperLine?: boolean; - @Input() noBody?: boolean; - @Input() @HostBinding("class.tb-long-upper") longUpperLine?: boolean; - @Input() organisationLogos?: Organisation[]; - - // private readonly opacityChangeDistance = 15; - - // constructor( - // private destroyRef: DestroyRef, - // private elementRef: ElementRef, - // private ngZone: NgZone, - // ) {} - - // ngAfterViewInit(): void { - // this.ngZone.runOutsideAngular(() => { - // const { cleanupDotListeners } = this.initDotListeners(); - // this.destroyRef.onDestroy(() => { - // cleanupDotListeners(); - // }); - // }); - // } - - @HostBinding("class") - get clazz(): string { - return `section ${this.levelClass} ${this.colorClass}`; - } - - private get colorClass(): string { - switch (this.index % 3) { - case 0: - return "tb-green"; - case 1: - return "tb-pink"; - case 2: - return "tb-yellow"; - default: - throw "Unreachable code"; - } - } - - private get levelClass(): string { - return `tb-level-${this.level}`; - } - - get themeColorHex(): string { - switch (this.index % 3) { - case 0: - return "#02DAC9"; // TODO: parametrise - case 1: - return "#FF87DC"; - case 2: - return "#FFE49E"; - default: - throw "Unreachable code"; - } - } - - // private initDotListeners() { - // const dotEls = this.elementRef.nativeElement.querySelectorAll(".tb-graphic-dot"); - // const handleScroll = () => dotEls.forEach((dotEl) => this.updateDotPosition(dotEl)); - // window.addEventListener("scroll", handleScroll); - // window.addEventListener("resize", handleScroll); - // handleScroll(); - // const cleanupDotListeners = () => { - // window.removeEventListener("scroll", handleScroll); - // window.removeEventListener("resize", handleScroll); - // }; - // return { cleanupDotListeners }; - // } - - // private updateDotPosition(dotEl: HTMLElement): void { - // if (dotEl.parentElement) { - // const { height: parentHeight, top: parentOffset } = dotEl.parentElement.getBoundingClientRect(); - // const initialOffset = dotEl.offsetTop; - // const keyframes = this.calculateDotAnimationKeyframes({ initialOffset, parentHeight, parentOffset }); - // const { top: finalOffset, opacity: finalOpacity } = keyframes[keyframes.length - 1]; - - // dotEl.animate(keyframes, { duration: 300, easing: "ease" }); - // dotEl.style.top = `${finalOffset}`; - // dotEl.style.opacity = `${finalOpacity}`; - // } - // } - - // private calculateDotAnimationKeyframes({ - // initialOffset, - // parentHeight, - // parentOffset, - // }: { - // initialOffset: number; - // parentHeight: number; - // parentOffset: number; - // }): Keyframe[] { - // const finalOffset = window.innerHeight / 2 - parentOffset; - // const opacity = 1 + (parentHeight / 2 - Math.abs(parentHeight / 2 - finalOffset)) / this.opacityChangeDistance; - // const finalOpacity = Math.max(Math.min(opacity, 1), 0); - - // const topHiddenOffset = (-this.opacityChangeDistance - initialOffset) / (finalOffset - initialOffset); - // const topVisibleOffset = (0 - initialOffset) / (finalOffset - initialOffset); - // const bottomVisibleOffset = (parentHeight - initialOffset) / (finalOffset - initialOffset); - // const bottomHiddenOffset = - // (parentHeight + this.opacityChangeDistance - initialOffset) / (finalOffset - initialOffset); - - // const calculatedKeyframes: (Keyframe & { offset: number })[] = [ - // { opacity: 0, top: `${-this.opacityChangeDistance}px`, offset: topHiddenOffset }, - // { opacity: 1, top: `0px`, offset: topVisibleOffset }, - // { opacity: 1, top: `${parentHeight}px`, offset: bottomVisibleOffset }, - // { opacity: 0, top: `${parentHeight + this.opacityChangeDistance}px`, offset: bottomHiddenOffset }, - // ].filter(({ offset }) => offset > 0 && offset < 1); - - // const allKeyframes = calculatedKeyframes.concat( - // { top: `${initialOffset}px`, offset: 0 }, - // { top: `${finalOffset}px`, opacity: finalOpacity, offset: 1 }, - // ); - - // return allKeyframes.sort((a, b) => a.offset - b.offset); - // } -} diff --git a/website/src/page/features/features-page.component.html b/website/src/page/features/features-page.component.html index 971c7bbc3..705ff745a 100644 --- a/website/src/page/features/features-page.component.html +++ b/website/src/page/features/features-page.component.html @@ -6,13 +6,13 @@ [title]="page.introSection.title" [body]="page.introSection.body" [actions]="page.introSection.actions" /> @for (section of page.featureSections; track section; let idx = $index) { - + } - + } diff --git a/website/src/page/features/features-page.component.ts b/website/src/page/features/features-page.component.ts index dfc4ef356..1b95671f1 100644 --- a/website/src/page/features/features-page.component.ts +++ b/website/src/page/features/features-page.component.ts @@ -1,15 +1,11 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, forwardRef, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; import { FeaturesPage, featuresPageSchemaName, SanityDataset, SanityFeaturesPage } from "typedb-web-schema"; -import { TechnicolorBlock } from "typedb-web-schema"; - import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { FeatureGridComponent } from "../../framework/feature-grid/feature-grid.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { TitleBodyActionsSectionComponent } from "../../framework/section/title-body-actions-section.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; import { PageComponentBase } from "../page-component-base"; @Component({ @@ -19,13 +15,9 @@ import { PageComponentBase } from "../page-component-base"; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, - TitleBodyActionsSectionComponent, - forwardRef(() => FeaturesPageTechnicolorBlockComponent), - FeatureGridComponent, - ConclusionPanelComponent, - AsyncPipe -], + TitleBodyActionsSectionComponent, FeatureGridComponent, ConclusionPanelComponent, AsyncPipe, + SectionCoreComponent, + ], }) export class FeaturesPageComponent extends PageComponentBase { protected override getPage(data: SanityDataset) { @@ -33,15 +25,3 @@ export class FeaturesPageComponent extends PageComponentBase { return of(page ? new FeaturesPage(page, data) : null); } } - -@Component({ - selector: "td-features-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class FeaturesPageTechnicolorBlockComponent { - @Input() section!: TechnicolorBlock; - @Input() index!: number; -} diff --git a/website/src/page/generic/generic-page.component.html b/website/src/page/generic/generic-page.component.html index a983efde6..6fb6bbbee 100644 --- a/website/src/page/generic/generic-page.component.html +++ b/website/src/page/generic/generic-page.component.html @@ -6,10 +6,10 @@ [title]="page.introSection.title" [body]="page.introSection.body" [actions]="page.introSection.actions" /> @for (section of page.coreSections; track section; let idx = $index) { - + } - + } diff --git a/website/src/page/generic/generic-page.component.ts b/website/src/page/generic/generic-page.component.ts index 7b34125e9..4e6c6252e 100644 --- a/website/src/page/generic/generic-page.component.ts +++ b/website/src/page/generic/generic-page.component.ts @@ -1,41 +1,13 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { map } from "rxjs"; -import { - GenericPage, - SanityDataset, - SanityGenericPage, - TechnicolorBlock, - TitleBodyPanelSection, -} from "typedb-web-schema"; - +import { GenericPage, SanityDataset, SanityGenericPage } from "typedb-web-schema"; import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { ContentPanelComponent } from "../../framework/content-panel/content-panel.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { TitleBodyActionsSectionComponent } from "../../framework/section/title-body-actions-section.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; -import { FeaturesPageTechnicolorBlockComponent } from "../features/features-page.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { PageComponentBase } from "../page-component-base"; -@Component({ - selector: "td-generic-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class GenericPageTechnicolorBlockComponent implements OnInit { - @Input() section!: TitleBodyPanelSection; - @Input() index!: number; - - block!: TechnicolorBlock; - - ngOnInit() { - this.block = new TechnicolorBlock(this.section); - } -} - @Component({ selector: "td-generic-page", templateUrl: "./generic-page.component.html", @@ -43,8 +15,8 @@ export class GenericPageTechnicolorBlockComponent implements OnInit { changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, TitleBodyActionsSectionComponent, GenericPageTechnicolorBlockComponent, - ContentPanelComponent, FeaturesPageTechnicolorBlockComponent, ConclusionPanelComponent, AsyncPipe + TitleBodyActionsSectionComponent, ContentPanelComponent, ConclusionPanelComponent, AsyncPipe, + SectionCoreComponent ], }) export class GenericPageComponent extends PageComponentBase { diff --git a/website/src/page/home/home-page.component.html b/website/src/page/home/home-page.component.html index c15ef4395..9d7a71678 100644 --- a/website/src/page/home/home-page.component.html +++ b/website/src/page/home/home-page.component.html @@ -2,54 +2,45 @@ @if (page$ | async; as page) {
@if (page.introSection) { - + } @if (page.hotTopicsSection) { } @for (impactSection of page.impactSections; track impactSection; let idx = $index) { - + } @if (page.resourcesSection) { - - + + } @if (page.toolingSection) { - + } @if (page.driversSection) { - + } @if (page.cloudSection) { - + } @if (page.communitySection) { - - + + } @if (page.testimonialsSection) { - - + + } @if (page.conclusionSection) { - + }
diff --git a/website/src/page/home/home-page.component.scss b/website/src/page/home/home-page.component.scss index 39079b997..db7548040 100644 --- a/website/src/page/home/home-page.component.scss +++ b/website/src/page/home/home-page.component.scss @@ -1,9 +1,9 @@ @import "mixins"; -td-home-page-technicolor-block.td-intro ::ng-deep td-heading-with-highlights h1 { - @include color-gradient(#AC79EE, #03D0BF); +td-section-core.td-intro ::ng-deep td-heading-with-highlights h1 { + @include text-gradient(#AC79EE, #03D0BF); } -td-home-page-technicolor-block.td-intro ::ng-deep td-button a { +td-section-core.td-intro ::ng-deep td-button a { @include border-gradient(#AC79EE, #03D0BF, var(--color-black-purple)); } diff --git a/website/src/page/home/home-page.component.ts b/website/src/page/home/home-page.component.ts index e4cd70ba8..ea07808f2 100644 --- a/website/src/page/home/home-page.component.ts +++ b/website/src/page/home/home-page.component.ts @@ -1,75 +1,24 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { Title } from "@angular/platform-browser"; import { ActivatedRoute, Router } from "@angular/router"; - - - import { IdleMonitorService } from "@scullyio/ng-lib"; import Prism from "prismjs"; import { combineLatest, map, Observable, of } from "rxjs"; -import { HomePage, homePageSchemaName, Organisation, SanityDataset, SanityHomePage, SocialMediaLink } from "typedb-web-schema"; -import { TechnicolorBlock } from "typedb-web-schema"; - - - +import { HomePage, homePageSchemaName, SanityDataset, SanityHomePage, SocialMediaLink } from "typedb-web-schema"; import { ContentService } from "src/service/content.service"; import { MetaTagsService } from "src/service/meta-tags.service"; - - - import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { ContentTabsComponent } from "../../framework/content-tabs/content-tabs.component"; import { FeatureGridComponent } from "../../framework/feature-grid/feature-grid.component"; import { HotTopicsComponent } from "../../framework/hot-topics/hot-topics.component"; import { KeyPointTableComponent } from "../../framework/key-point/key-point.component"; import { LinkPanelsComponent, ResourcePanelsComponent } from "../../framework/link-panels/link-panels.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { SocialMediaPanelsComponent } from "../../framework/social-media/social-media-panels.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; import { TestimonialsCarouselComponent } from "../../framework/testimonials-carousel/testimonials-carousel.component"; import { PageComponentBase } from "../page-component-base"; - -@Component({ - selector: "td-home-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class HomePageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() page!: HomePage; - @Input() variant: "none" | "intro" | "conclusion" = "none"; - @Input() organisationLogos?: Organisation[]; - - get allBlocks(): TechnicolorBlock[] { - return [ - this.page.introSection, - ...this.page.impactSections, - this.page.resourcesSection, - this.page.toolingSection, - this.page.driversSection, - this.page.cloudSection, - this.page.communitySection, - this.page.testimonialsSection, - this.page.conclusionSection, - ].filter((x) => !!x) as TechnicolorBlock[]; - } - - get level(): TechnicolorBlockComponent["level"] { - return this.block === this.page.introSection ? "h1" : "h2"; - } - - get index() { - return this.allBlocks.indexOf(this.block); - } -} - @Component({ selector: "td-home-page", templateUrl: "./home-page.component.html", @@ -77,30 +26,17 @@ export class HomePageTechnicolorBlockComponent { changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, - HomePageTechnicolorBlockComponent, - ContentTabsComponent, - ResourcePanelsComponent, - LinkPanelsComponent, - FeatureGridComponent, - KeyPointTableComponent, - SocialMediaPanelsComponent, - TestimonialsCarouselComponent, - ConclusionPanelComponent, - AsyncPipe, - HotTopicsComponent, + ContentTabsComponent, ResourcePanelsComponent, LinkPanelsComponent, FeatureGridComponent, + KeyPointTableComponent, SocialMediaPanelsComponent, TestimonialsCarouselComponent, + ConclusionPanelComponent, AsyncPipe, HotTopicsComponent, SectionCoreComponent, ], }) export class HomePageComponent extends PageComponentBase { readonly socialMediaLinks$!: Observable; constructor( - activatedRoute: ActivatedRoute, - router: Router, - title: Title, - idleMonitor: IdleMonitorService, - metaTags: MetaTagsService, - contentService: ContentService, + activatedRoute: ActivatedRoute, router: Router, title: Title, idleMonitor: IdleMonitorService, + metaTags: MetaTagsService, contentService: ContentService, ) { super(activatedRoute, router, title, idleMonitor, metaTags, contentService); this.socialMediaLinks$ = combineLatest([this.page$, contentService.data]).pipe( diff --git a/website/src/page/lectures/lectures-page.component.html b/website/src/page/lectures/lectures-page.component.html index 211a50d1e..f455c0f7b 100644 --- a/website/src/page/lectures/lectures-page.component.html +++ b/website/src/page/lectures/lectures-page.component.html @@ -2,10 +2,7 @@ @if (page$ | async; as page) {
- +
@if (!page?.introSection?.featuredLecture) {
@@ -37,14 +34,11 @@

page.featuredLecturesSection.featuredLectures && page.featuredLecturesSection.featuredLectures.length ) { - - + + } @if (page.exploreLecturesSection) { - +
    @for (lecture of allLectures$ | async; track lecture) { @@ -87,10 +81,7 @@

    {{ lecture.title | plainText }}

- + } diff --git a/website/src/page/lectures/lectures-page.component.ts b/website/src/page/lectures/lectures-page.component.ts index 7013a90ee..a9f53e0ce 100644 --- a/website/src/page/lectures/lectures-page.component.ts +++ b/website/src/page/lectures/lectures-page.component.ts @@ -19,7 +19,7 @@ import { OrdinalDatePipe } from "../../framework/date/ordinal-date.pipe"; import { LecturePanelsComponent } from "../../framework/link-panels/link-panels.component"; import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { TitleBodyActionsSectionComponent } from "../../framework/section/title-body-actions-section.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { PlainTextPipe } from "../../framework/text/plain-text.pipe"; import { RichTextComponent } from "../../framework/text/rich-text.component"; import { sanitiseHtmlID } from "../../framework/util"; @@ -33,7 +33,7 @@ import { PageComponentBase } from "../page-component-base"; standalone: true, imports: [ PageBackgroundComponent, TitleBodyActionsSectionComponent, AspectRatioComponent, RichTextComponent, - ButtonComponent, TechnicolorBlockComponent, LecturePanelsComponent, MatIconModule, AsyncPipe, DatePipe, + ButtonComponent, SectionCoreComponent, LecturePanelsComponent, MatIconModule, AsyncPipe, DatePipe, EventDurationPipe, OrdinalDatePipe, PlainTextPipe ], }) diff --git a/website/src/page/philosophy/philosophy-page.component.html b/website/src/page/philosophy/philosophy-page.component.html index f37b420d8..033314497 100644 --- a/website/src/page/philosophy/philosophy-page.component.html +++ b/website/src/page/philosophy/philosophy-page.component.html @@ -6,15 +6,11 @@ [title]="page.introSection.title" [body]="page.introSection.body" [actions]="page.introSection.actions" /> @for (section of page.coreSections; track section; let idx = $index) { - + } @if (page.finalSection) { - + }
diff --git a/website/src/page/philosophy/philosophy-page.component.ts b/website/src/page/philosophy/philosophy-page.component.ts index d0df720ad..391222855 100644 --- a/website/src/page/philosophy/philosophy-page.component.ts +++ b/website/src/page/philosophy/philosophy-page.component.ts @@ -1,22 +1,13 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, forwardRef, Input, OnInit } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; import { - ConclusionSection, - PhilosophyPage, - philosophyPageSchemaName, - PublicationSection, - SanityDataset, - SanityPhilosophyPage, + PhilosophyPage, philosophyPageSchemaName, SanityDataset, SanityPhilosophyPage, } from "typedb-web-schema"; -import { TechnicolorBlock } from "typedb-web-schema"; - import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { PublicationPanelComponent } from "../../framework/publication-panel/publication-panel.component"; import { TitleBodyActionsSectionComponent } from "../../framework/section/title-body-actions-section.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { PageComponentBase } from "../page-component-base"; @Component({ @@ -26,13 +17,9 @@ import { PageComponentBase } from "../page-component-base"; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, - TitleBodyActionsSectionComponent, - forwardRef(() => PhilosophyPageTechnicolorBlockComponent), - PublicationPanelComponent, - ConclusionPanelComponent, - AsyncPipe -], + TitleBodyActionsSectionComponent, PublicationPanelComponent, ConclusionPanelComponent, AsyncPipe, + SectionCoreComponent + ], }) export class PhilosophyPageComponent extends PageComponentBase { protected override getPage(data: SanityDataset) { @@ -40,22 +27,3 @@ export class PhilosophyPageComponent extends PageComponentBase { return of(page ? new PhilosophyPage(page, data) : null); } } - -@Component({ - selector: "td-philosophy-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class PhilosophyPageTechnicolorBlockComponent implements OnInit { - @Input() section!: PublicationSection | ConclusionSection; - @Input() index!: number; - @Input() page!: PhilosophyPage; - - block!: TechnicolorBlock; - - ngOnInit() { - this.block = new TechnicolorBlock(this.section); - } -} diff --git a/website/src/page/pricing/pricing-page.component.html b/website/src/page/pricing/pricing-page.component.html index 467003884..55477db15 100644 --- a/website/src/page/pricing/pricing-page.component.html +++ b/website/src/page/pricing/pricing-page.component.html @@ -1,16 +1,16 @@
@if (page$ | async; as page) {
- + - + - + - +
} diff --git a/website/src/page/pricing/pricing-page.component.scss b/website/src/page/pricing/pricing-page.component.scss index 92373d4ba..dc1fab00e 100644 --- a/website/src/page/pricing/pricing-page.component.scss +++ b/website/src/page/pricing/pricing-page.component.scss @@ -2,7 +2,7 @@ :host { @media (min-width: media.$min-width-tablet) { - td-pricing-page-technicolor-block.td-features ::ng-deep td-technicolor-block .tb-main { + td-section-core.td-features ::ng-deep td-section-core .tb-main { padding: 0 0 16px; } } diff --git a/website/src/page/pricing/pricing-page.component.ts b/website/src/page/pricing/pricing-page.component.ts index b277badd1..f6feaaf34 100644 --- a/website/src/page/pricing/pricing-page.component.ts +++ b/website/src/page/pricing/pricing-page.component.ts @@ -1,34 +1,14 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; -import { PricingPage, pricingPageSchemaName, SanityDataset, SanityPricingPage, TechnicolorBlock } from "typedb-web-schema"; - +import { PricingPage, pricingPageSchemaName, SanityDataset, SanityPricingPage } from "typedb-web-schema"; import { ContactPanelComponent } from "../../framework/contact-panel/contact-panel.component"; import { ContentPanelComponent } from "../../framework/content-panel/content-panel.component"; import { FeatureTableComponent } from "../../framework/feature-table/feature-table.component"; -import { LinkPanelsComponent } from "../../framework/link-panels/link-panels.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { PricingTableComponent } from "../../framework/pricing-table/pricing-table.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { PageComponentBase } from "../page-component-base"; -@Component({ - selector: "td-pricing-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class PricingPageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() index!: number; - - get level(): TechnicolorBlockComponent["level"] { - return this.index === 0 ? "h1" : "h2"; - } -} - @Component({ selector: "td-pricing-page", templateUrl: "./pricing-page.component.html", @@ -36,7 +16,7 @@ export class PricingPageTechnicolorBlockComponent { changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, PricingPageTechnicolorBlockComponent, FeatureTableComponent, LinkPanelsComponent, + FeatureTableComponent, SectionCoreComponent, AsyncPipe, PricingTableComponent, ContactPanelComponent, ContentPanelComponent, ], }) diff --git a/website/src/page/resource-hub/resource-hub.component.html b/website/src/page/resource-hub/resource-hub.component.html index def91986e..5a8958c7f 100644 --- a/website/src/page/resource-hub/resource-hub.component.html +++ b/website/src/page/resource-hub/resource-hub.component.html @@ -6,10 +6,10 @@ [title]="page.introSection.title" [body]="page.introSection.body" [actions]="page.introSection.actions" /> @for (section of page.resourceSections; track section; let idx = $index) { - + } - +
} diff --git a/website/src/page/resource-hub/resource-hub.component.ts b/website/src/page/resource-hub/resource-hub.component.ts index 150d18366..ad24c9344 100644 --- a/website/src/page/resource-hub/resource-hub.component.ts +++ b/website/src/page/resource-hub/resource-hub.component.ts @@ -1,29 +1,13 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { map } from "rxjs"; import { ResourceHub, SanityDataset, SanityResourceHub } from "typedb-web-schema"; -import { TechnicolorBlock } from "typedb-web-schema"; - import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { LinkPanelsCols2Component } from "../../framework/link-panels/link-panels.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { TitleBodyActionsSectionComponent } from "../../framework/section/title-body-actions-section.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; import { PageComponentBase } from "../page-component-base"; -@Component({ - selector: "td-resources-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class ResourcesBlockComponent { - @Input() section!: TechnicolorBlock; - @Input() index!: number; -} - @Component({ selector: "td-resource-hub", templateUrl: "./resource-hub.component.html", @@ -31,8 +15,8 @@ export class ResourcesBlockComponent { changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, TitleBodyActionsSectionComponent, ResourcesBlockComponent, - LinkPanelsCols2Component, ConclusionPanelComponent, AsyncPipe + TitleBodyActionsSectionComponent, LinkPanelsCols2Component, ConclusionPanelComponent, + AsyncPipe, SectionCoreComponent, ], }) export class ResourceHubComponent extends PageComponentBase { diff --git a/website/src/page/services/services-page.component.html b/website/src/page/services/services-page.component.html index f1814e956..8245f6062 100644 --- a/website/src/page/services/services-page.component.html +++ b/website/src/page/services/services-page.component.html @@ -2,15 +2,15 @@ @if (page$ | async; as page) {
@if (page.introSection) { - + } @if (page.testimonialsSection) { - - + + } @if (page.contactSection) { - + }
diff --git a/website/src/page/services/services-page.component.ts b/website/src/page/services/services-page.component.ts index ce9f17528..42d02b75c 100644 --- a/website/src/page/services/services-page.component.ts +++ b/website/src/page/services/services-page.component.ts @@ -1,21 +1,10 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, forwardRef, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; -import { - SanityDataset, - SanityServicesPage, - ServicesPage, - servicesPageSchemaName, - TechnicolorBlock, -} from "typedb-web-schema"; - -import { TechnicolorBlockComponent } from "src/framework/technicolor-block/technicolor-block.component"; - +import { SanityDataset, SanityServicesPage, ServicesPage, servicesPageSchemaName } from "typedb-web-schema"; import { ContactPanelComponent } from "../../framework/contact-panel/contact-panel.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { ServicesTableComponent } from "../../framework/services-table/services-table.component"; -import { TechnicolorBlockComponent as TechnicolorBlockComponent_1 } from "../../framework/technicolor-block/technicolor-block.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { TestimonialsCarouselComponent } from "../../framework/testimonials-carousel/testimonials-carousel.component"; import { PageComponentBase } from "../page-component-base"; @@ -25,13 +14,9 @@ import { PageComponentBase } from "../page-component-base"; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, - forwardRef(() => ServicesPageTechnicolorBlockComponent), - ServicesTableComponent, - TestimonialsCarouselComponent, - ContactPanelComponent, - AsyncPipe -], + ServicesTableComponent, TestimonialsCarouselComponent, ContactPanelComponent, AsyncPipe, + SectionCoreComponent + ], }) export class ServicesPageComponent extends PageComponentBase { protected override getPage(data: SanityDataset) { @@ -39,38 +24,3 @@ export class ServicesPageComponent extends PageComponentBase { return of(page ? new ServicesPage(page, data) : null); } } - -@Component({ - selector: "td-services-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent_1], -}) -export class ServicesPageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() page!: ServicesPage; - - get index(): number { - return this.allBlocks.indexOf(this.block); - } - - get level(): TechnicolorBlockComponent["level"] { - return this.block === this.page.introSection ? "h1" : "h2"; - } - - private get allBlocks(): TechnicolorBlock[] { - const blocks: (TechnicolorBlock | undefined)[] = [ - this.page.introSection, - this.page.testimonialsSection, - this.page.contactSection, - ]; - return blocks.filter((x): x is TechnicolorBlock => x instanceof TechnicolorBlock); - } -} diff --git a/website/src/page/solutions/solution-page.component.html b/website/src/page/solutions/solution-page.component.html index 65df163f9..09e2d1412 100644 --- a/website/src/page/solutions/solution-page.component.html +++ b/website/src/page/solutions/solution-page.component.html @@ -14,19 +14,19 @@ } @if (page.useCasesSection) { - + } @if (page.challengesSection) { - + } @if (page.solutionSection) { - + } @if (page.furtherReadingSection) { - + } diff --git a/website/src/page/solutions/solution-page.component.ts b/website/src/page/solutions/solution-page.component.ts index c00f6d87e..0f9d8ae5a 100644 --- a/website/src/page/solutions/solution-page.component.ts +++ b/website/src/page/solutions/solution-page.component.ts @@ -1,9 +1,6 @@ -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { map } from "rxjs"; import { SanityDataset, SanitySolutionPage, SolutionPage, solutionPageSchemaName } from "typedb-web-schema"; -import { TechnicolorBlock } from "typedb-web-schema"; - import { PageComponentBase } from "../page-component-base"; @Component({ @@ -28,35 +25,3 @@ export class SolutionPageComponent extends PageComponentBase { this.title.setTitle(`TypeDB Solutions: ${page.title}`); } } - -@Component({ - selector: "td-solution-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class SolutionPageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() page!: SolutionPage; - - get allBlocks(): TechnicolorBlock[] { - return [ - this.page.useCasesSection, - this.page.challengesSection, - this.page.solutionSection, - this.page.furtherReadingSection, - ].filter((x) => !!x) as TechnicolorBlock[]; - } - - get index() { - return this.allBlocks.indexOf(this.block); - } - - get noTrailingLine() { - return this.index >= this.allBlocks.length - 1; - } -} diff --git a/website/src/page/startup-program/startup-program-page.component.html b/website/src/page/startup-program/startup-program-page.component.html index 4b6823f64..36c8a7b66 100644 --- a/website/src/page/startup-program/startup-program-page.component.html +++ b/website/src/page/startup-program/startup-program-page.component.html @@ -2,11 +2,11 @@ @if (page$ | async; as page) {
@if (page.introSection) { - + } @if (page.finalSection) { - + }
} diff --git a/website/src/page/startup-program/startup-program-page.component.scss b/website/src/page/startup-program/startup-program-page.component.scss index 3a5d3b1fd..4b33a5d98 100644 --- a/website/src/page/startup-program/startup-program-page.component.scss +++ b/website/src/page/startup-program/startup-program-page.component.scss @@ -1,12 +1,10 @@ @import "mixins"; -td-startup-program-page-technicolor-block ::ng-deep td-heading-with-highlights h1 { - background: linear-gradient(285deg, #03D0BF, #AC79EE); - background-clip: text; - -webkit-text-fill-color: transparent; +td-section-core ::ng-deep td-heading-with-highlights h1 { + @include text-gradient(#AC79EE, #03D0BF); } -td-startup-program-page-technicolor-block ::ng-deep td-button a { +td-section-core ::ng-deep td-button a { border: none; height: 49px; @include border-gradient(#AC79EE, #03D0BF, var(--color-black-purple)); diff --git a/website/src/page/startup-program/startup-program-page.component.ts b/website/src/page/startup-program/startup-program-page.component.ts index de51b3f64..cb974ba3c 100644 --- a/website/src/page/startup-program/startup-program-page.component.ts +++ b/website/src/page/startup-program/startup-program-page.component.ts @@ -1,47 +1,18 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; -import { SanityDataset, SanityStartupProgramPage, StartupProgramPage, startupProgramPageSchemaName, TechnicolorBlock } from "typedb-web-schema"; -import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; - -import { ContactPanelComponent } from "../../framework/contact-panel/contact-panel.component"; -import { ContentPanelComponent } from "../../framework/content-panel/content-panel.component"; -import { FeatureTableComponent } from "../../framework/feature-table/feature-table.component"; +import { SanityDataset, SanityStartupProgramPage, StartupProgramPage, startupProgramPageSchemaName } from "typedb-web-schema"; import { LinkPanelsComponent } from "../../framework/link-panels/link-panels.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; -import { PricingTableComponent } from "../../framework/pricing-table/pricing-table.component"; -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; -import { GenericPageTechnicolorBlockComponent } from "../generic/generic-page.component"; +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { PageComponentBase } from "../page-component-base"; -@Component({ - selector: "td-startup-program-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class StartupProgramPageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() index!: number; - - get level(): TechnicolorBlockComponent["level"] { - return this.index === 0 ? "h1" : "h2"; - } -} - @Component({ selector: "td-startup-program-page", templateUrl: "./startup-program-page.component.html", styleUrls: ["./startup-program-page.component.scss"], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ - PageBackgroundComponent, StartupProgramPageTechnicolorBlockComponent, - FeatureTableComponent, LinkPanelsComponent, AsyncPipe, PricingTableComponent, ContactPanelComponent, - ContentPanelComponent, GenericPageTechnicolorBlockComponent, ConclusionPanelComponent, - ], + imports: [SectionCoreComponent, LinkPanelsComponent, AsyncPipe], }) export class StartupProgramPageComponent extends PageComponentBase { protected override getPage(data: SanityDataset) { diff --git a/website/src/page/support/support-page.component.html b/website/src/page/support/support-page.component.html index 87746954b..60eb51905 100644 --- a/website/src/page/support/support-page.component.html +++ b/website/src/page/support/support-page.component.html @@ -2,22 +2,20 @@ @if (page$ | async; as page) {
@if (page.introSection) { - - + + } @if (page.featureTableSection) { - - + + } @if (page.testimonialsSection) { - - + + } @if (page.contactSection) { - - + + }
} diff --git a/website/src/page/support/support-page.component.ts b/website/src/page/support/support-page.component.ts index 244e7194d..58aed0506 100644 --- a/website/src/page/support/support-page.component.ts +++ b/website/src/page/support/support-page.component.ts @@ -1,62 +1,22 @@ import { AsyncPipe } from "@angular/common"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; - +import { ChangeDetectionStrategy, Component } from "@angular/core"; import { of } from "rxjs"; -import { SanitySupportPage, SupportPage, supportPageSchemaName, TechnicolorBlock } from "typedb-web-schema"; +import { SanitySupportPage, SupportPage, supportPageSchemaName } from "typedb-web-schema"; import { SanityDataset } from "typedb-web-schema"; - -import { TechnicolorBlockComponent } from "../../framework/technicolor-block/technicolor-block.component"; - +import { SectionCoreComponent } from "../../framework/section/section-core.component"; import { ContactPanelComponent } from "../../framework/contact-panel/contact-panel.component"; import { FeatureTableComponent } from "../../framework/feature-table/feature-table.component"; import { LinkPanelsComponent } from "../../framework/link-panels/link-panels.component"; -import { PageBackgroundComponent } from "../../framework/page-background/page-background.component"; import { TestimonialsCarouselComponent } from "../../framework/testimonials-carousel/testimonials-carousel.component"; import { PageComponentBase } from "../page-component-base"; -@Component({ - selector: "td-support-page-technicolor-block", - template: ``, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [TechnicolorBlockComponent], -}) -export class SupportPageTechnicolorBlockComponent { - @Input() block!: TechnicolorBlock; - @Input() page!: SupportPage; - - get index(): number { - return this.allBlocks.indexOf(this.block); - } - - get level(): TechnicolorBlockComponent["level"] { - return this.block === this.page.introSection ? "h1" : "h2"; - } - - private get allBlocks(): TechnicolorBlock[] { - const blocks: (TechnicolorBlock | undefined)[] = [ - this.page.introSection, - this.page.featureTableSection, - this.page.testimonialsSection, - this.page.contactSection, - ]; - return blocks.filter((x): x is TechnicolorBlock => x instanceof TechnicolorBlock); - } -} - @Component({ selector: "td-support-page", templateUrl: "./support-page.component.html", changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - PageBackgroundComponent, SupportPageTechnicolorBlockComponent, LinkPanelsComponent, + LinkPanelsComponent, SectionCoreComponent, FeatureTableComponent, TestimonialsCarouselComponent, ContactPanelComponent, AsyncPipe ], }) From 3e39d42bc7fde888fcb59ebdc151f25dd662dd39 Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Tue, 4 Mar 2025 15:42:10 +0000 Subject: [PATCH 4/7] Feature fusion + more section core simplification --- schema/common-fields.ts | 8 + schema/component/section.ts | 14 +- schema/index.ts | 4 +- schema/testimonial.ts | 4 +- .../feature-fusion.component.html | 9 + .../feature-fusion.component.scss | 48 +++++ .../feature-fusion.component.ts | 16 ++ .../section/section-core.component.html | 23 +-- .../section/section-core.component.scss | 187 +----------------- .../src/page/home/home-page.component.scss | 4 - 10 files changed, 113 insertions(+), 204 deletions(-) create mode 100644 website/src/framework/feature-fusion/feature-fusion.component.html create mode 100644 website/src/framework/feature-fusion/feature-fusion.component.scss create mode 100644 website/src/framework/feature-fusion/feature-fusion.component.ts diff --git a/schema/common-fields.ts b/schema/common-fields.ts index a2cd3600a..307b11ed0 100644 --- a/schema/common-fields.ts +++ b/schema/common-fields.ts @@ -223,6 +223,14 @@ export const keyPointsWithIconsField = (count?: number) => validation: count != null ? (rule: ArrayRule) => rule.length(count) : undefined, }); +export const keywordFieldName = "keyword"; + +export const keywordFieldOptional = defineField({ + name: keywordFieldName, + title: "Keyword (optional)", + type: "string", +}); + export interface SanityVisibleToggle { isVisible: boolean; } diff --git a/schema/component/section.ts b/schema/component/section.ts index 261e9d5a5..982ba2ca6 100644 --- a/schema/component/section.ts +++ b/schema/component/section.ts @@ -1,7 +1,7 @@ import { defineField, defineType } from "@sanity/types"; import { LinkButton } from "../button"; import { - isVisibleField, actionsFieldOptional, resourcesFieldOptional, SanityVisibleToggle, titleBodyIconFields, SanityIconField, + isVisibleField, actionsFieldOptional, resourcesFieldOptional, SanityVisibleToggle, titleBodyIconFields, SanityIconField, keywordFieldOptional, } from "../common-fields"; import { SanityDataset } from "../sanity-core"; import { BodyTextField, ParagraphWithHighlights, PortableText, SanityTitleBodyActions } from "../text"; @@ -9,7 +9,9 @@ import { PropsOf } from "../util"; import { LinkPanelWithIcon, linkPanelWithIconSchemaName, SanityLinkPanelWithIcon } from "./link-panel"; import { ContentTextPanel, contentTextPanelSchemaName, SanityContentTextPanel } from "./content-text-panel"; -export interface SanitySectionBase extends SanityTitleBodyActions, SanityIconField {} +export interface SanitySectionBase extends SanityTitleBodyActions, SanityIconField { + keyword?: string; +} export interface SanityCoreSection extends SanitySectionBase, SanityVisibleToggle {} @@ -26,12 +28,14 @@ export class SectionBase implements Partial { readonly body?: PortableText; readonly actions?: LinkButton[]; readonly sectionId: string; + readonly keyword?: string; constructor(props: PropsOf) { this.title = props.title; this.body = props.body; this.actions = props.actions; this.sectionId = props.sectionId; + this.keyword = props.keyword; } static fromSanity(data: SanitySectionBase, db: SanityDataset) { @@ -41,6 +45,7 @@ export class SectionBase implements Partial { body: data.body, actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), sectionId: title.toSectionID(), + keyword: data.keyword, }); } } @@ -83,7 +88,7 @@ const coreSectionSchema = defineType({ name: coreSectionSchemaName, title: "Section", type: "document", - fields: [...titleBodyIconFields, isVisibleField], + fields: [...titleBodyIconFields, keywordFieldOptional, isVisibleField], }); export const titleBodyPanelSectionSchemaName = "titleBodyPanelSection"; @@ -110,7 +115,7 @@ const resourceSectionSchema = defineType({ name: resourceSectionSchemaName, title: "Resources Section", type: "object", - fields: [...titleBodyIconFields, actionsFieldOptional, resourcesFieldOptional, isVisibleField], + fields: [...titleBodyIconFields, actionsFieldOptional, keywordFieldOptional, resourcesFieldOptional, isVisibleField], }); export const linkPanelsSectionSchemaName = `linkPanelsSection`; @@ -122,6 +127,7 @@ const linkPanelsSectionSchema = defineType({ fields: [ ...titleBodyIconFields, actionsFieldOptional, + keywordFieldOptional, defineField({ name: "panels", title: "Panels", diff --git a/schema/index.ts b/schema/index.ts index c5bd93b05..3d412bff0 100644 --- a/schema/index.ts +++ b/schema/index.ts @@ -15,14 +15,14 @@ import { referenceMaterialSchema } from "./reference-material"; import { resourceSchemas } from "./resource"; import { socialMediaSchemas } from "./social-media"; import { surveySchemas } from "./survey"; -import { testimonialSchema } from "./testimonial"; +import { testimonialSchemas } from "./testimonial"; import { textSchemas } from "./text"; export const schemaTypes: any[] = [ ...actionSchemas, ...codeSchemas, ...linkSchemas, ...cloudPlatformSchemas, ...componentSchemas, ...formSchemas, ...keyPointSchemas, ...illustrationSchemas, ...imageSchemas, ...navigationSchemas, ...organisationSchemas, ...pageSchemas, ...personSchemas, referenceMaterialSchema, ...resourceSchemas, ...socialMediaSchemas, - ...surveySchemas, ...textSchemas, testimonialSchema, + ...surveySchemas, ...textSchemas, ...testimonialSchemas, ]; export { ActionButton, LinkButton, type ButtonStyle } from "./button"; diff --git a/schema/testimonial.ts b/schema/testimonial.ts index 1c57f4b44..c2774f7cf 100644 --- a/schema/testimonial.ts +++ b/schema/testimonial.ts @@ -46,7 +46,7 @@ export class TestimonialsSection extends SectionBase { export const testimonialSchemaName = "testimonial"; export const testimonialsSectionSchemaName = "testimonialsSection"; -export const testimonialSchema = defineType({ +const testimonialSchema = defineType({ name: testimonialSchemaName, title: "Testimonial", type: "document", @@ -92,3 +92,5 @@ const testimonialsSectionSchema = defineType({ isVisibleField, ], }); + +export const testimonialSchemas = [testimonialSchema, testimonialsSectionSchema]; diff --git a/website/src/framework/feature-fusion/feature-fusion.component.html b/website/src/framework/feature-fusion/feature-fusion.component.html new file mode 100644 index 000000000..e1e1fc692 --- /dev/null +++ b/website/src/framework/feature-fusion/feature-fusion.component.html @@ -0,0 +1,9 @@ +@for (feature of features; track feature) { + @if ($index !== 0) { +
+
+ } +
+

{{ feature.title }}

+ +
+} diff --git a/website/src/framework/feature-fusion/feature-fusion.component.scss b/website/src/framework/feature-fusion/feature-fusion.component.scss new file mode 100644 index 000000000..4453c18a9 --- /dev/null +++ b/website/src/framework/feature-fusion/feature-fusion.component.scss @@ -0,0 +1,48 @@ +@use "media"; +@use "shapes"; +@import "mixins"; + +:host { + display: flex; + flex-direction: row; + overflow: hidden; + + @media (max-width: media.$max-width-mobile) { + flex-direction: column; + } +} + +.ff-cell { + @include card-padding; + + &.text-h2 { + line-height: 27px; + + @media (max-width: media.$max-width-mobile) { + line-height: 15px; + margin-bottom: 4px; + } + } +} + +.ff-cell + .ff-cell { + @media (min-width: media.$min-width-tablet) { + border-left: 1px solid var(--content-border-color); + } + + @media (max-width: media.$max-width-mobile) { + border-top: 1px solid var(--content-border-color); + } +} + +td-rich-text { + margin-top: 24px; + + @media (min-width: media.$min-width-tablet) and (max-width: media.$max-width-tablet) { + margin-top: 16px; + } + + @media (max-width: media.$max-width-mobile) { + margin-top: 12px; + } +} diff --git a/website/src/framework/feature-fusion/feature-fusion.component.ts b/website/src/framework/feature-fusion/feature-fusion.component.ts new file mode 100644 index 000000000..cdf01586c --- /dev/null +++ b/website/src/framework/feature-fusion/feature-fusion.component.ts @@ -0,0 +1,16 @@ +import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; +import { KeyPoint } from "typedb-web-schema"; +import { RichTextComponent } from "../text/rich-text.component"; + +@Component({ + selector: "td-feature-fusion", + templateUrl: "./feature-fusion.component.html", + styleUrls: ["./feature-fusion.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [RichTextComponent], +}) +export class FeatureFusionComponent { + @Input() features!: KeyPoint[]; + @HostBinding("class") classes = "section card-appearance"; +} diff --git a/website/src/framework/section/section-core.component.html b/website/src/framework/section/section-core.component.html index bc46ede53..d5db5a55c 100644 --- a/website/src/framework/section/section-core.component.html +++ b/website/src/framework/section/section-core.component.html @@ -1,15 +1,12 @@ -
+
-
-
- @if (section.body && !noBody) { - - } - @if (section.actions) { - - } - @if (organisationLogos?.length) { - - } -
+ @if (section.body && !noBody) { + + } + @if (section.actions) { + + } + @if (organisationLogos?.length) { + + }
diff --git a/website/src/framework/section/section-core.component.scss b/website/src/framework/section/section-core.component.scss index e32e588a6..a83450e49 100644 --- a/website/src/framework/section/section-core.component.scss +++ b/website/src/framework/section/section-core.component.scss @@ -1,96 +1,21 @@ -@use "../../../node_modules/typedb-web-common/src/styles/colors"; -@use "../../../node_modules/typedb-web-common/src/styles/media"; - -@mixin graphic-line-gradient($base-color) { - background: linear-gradient( - transparent 0%, - rgba($base-color, 0.1) 7%, - $base-color 20%, - $base-color 80%, - rgba($base-color, 0.1) 93%, - transparent 100% - ); -} +@use "colors"; +@use "media"; :host { - --icon-size: 72px; - --halo-size: 104px; --graphic-area-width: 120px; display: block; position: relative; + margin-top: 144px; @media (max-width: media.$max-width-mobile) { - --icon-size: 36px; - --halo-size: 52px; --graphic-area-width: 52px; - } - - &.tb-no-upper { - margin-top: 120px; - - @media (max-width: media.$max-width-mobile) { - margin-top: 64px; - } - } - - &:not(.tb-no-upper) .tb-main { - padding-top: 144px; - - @media (max-width: media.$max-width-mobile) { - padding-top: 64px; - } - } - - &.tb-green { - .tb-icon-area { - color: var(--color-green); - } - .tb-background { - @include graphic-line-gradient(colors.$green); - } - } - - &.tb-pink { - .tb-icon-area { - color: var(--color-secondary-pink); - } - .tb-background { - @include graphic-line-gradient(colors.$secondary-pink); - } - } - - &.tb-yellow { - .tb-icon-area { - color: var(--color-secondary-yellow); - } - .tb-background { - @include graphic-line-gradient(colors.$secondary-yellow); - } - } - - &.tb-no-upper .tb-background { - top: 35px; - } - - &.tb-long-upper .tb-background { - top: -100px; - } -} - -.tb-background { - position: absolute; - top: 0; - bottom: 0; - left: calc(var(--icon-size) / 2 - 1px); - width: 3px; - z-index: -1; - - @media (max-width: media.$max-width-mobile) { - width: 2px; + margin-top: 64px; + padding-bottom: 32px; + grid-template-columns: var(--graphic-area-width) auto; } } -.tb-main { +.td-root { max-width: 660px; grid-template-columns: var(--graphic-area-width) minmax(auto, 660px); padding-bottom: 80px; @@ -98,104 +23,6 @@ @media (max-width: media.$max-width-tablet) { padding-bottom: 72px; } - - @media (max-width: media.$max-width-mobile) { - padding-bottom: 32px; - grid-template-columns: var(--graphic-area-width) auto; - } -} - -.tb-icon-area { - position: relative; - - .tb-icon-bg-paper, - .tb-icon-bg-halo, - .tb-icon { - top: 0; - bottom: 0; - margin: auto 0; - } - - .tb-icon-bg-paper { - position: absolute; - width: var(--halo-size); - height: var(--halo-size); - margin-left: -16px; - border-radius: var(--border-radius); - filter: blur(8px); - background: var(--color-black-purple); - } - - .tb-icon-bg-halo { - display: block; - color: unset; - position: absolute; - width: var(--halo-size); - height: var(--halo-size); - margin-left: -16px; - border-radius: 50%; - filter: blur(15px); - transform: translate3d(0, 0, 0); /* patch for Safari ignoring border-radius on hover */ - opacity: 0.15; - background: currentColor; - z-index: 4; - transition: opacity 200ms ease; - - &:hover { - opacity: 0.3; - } - } - - .tb-icon { - position: absolute; - width: var(--icon-size); - height: var(--icon-size); - z-index: 3; - } -} - -.tb-graphic-dot { - display: none !important; // temporary patch to hide dot pending QA review - position: absolute; - width: 9px; - height: 9px; - background: currentColor; - border-radius: 50%; - top: 0; - opacity: 0; - left: -3px; - pointer-events: none; - - @media (max-width: media.$max-width-mobile) { - left: -2px; - width: 6px; - height: 6px; - } - - .tb-graphic-dot-blur { - position: absolute; - top: -8px; - left: -8px; - width: 25px; - height: 25px; - background: currentColor; - border-radius: 50%; - filter: blur(15px); - - @media (max-width: media.$max-width-tablet) { - top: -7px; - left: -7px; - width: 23px; - height: 23px; - } - - @media (max-width: media.$max-width-mobile) { - top: -5px; - left: -5px; - width: 16px; - height: 16px; - } - } } td-heading-with-highlights { diff --git a/website/src/page/home/home-page.component.scss b/website/src/page/home/home-page.component.scss index db7548040..ec3ee33be 100644 --- a/website/src/page/home/home-page.component.scss +++ b/website/src/page/home/home-page.component.scss @@ -3,7 +3,3 @@ td-section-core.td-intro ::ng-deep td-heading-with-highlights h1 { @include text-gradient(#AC79EE, #03D0BF); } - -td-section-core.td-intro ::ng-deep td-button a { - @include border-gradient(#AC79EE, #03D0BF, var(--color-black-purple)); -} From 69c3052bb7ce6f8051944a0956fe953747da93d1 Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Tue, 4 Mar 2025 18:20:38 +0000 Subject: [PATCH 5/7] Home page - feature fusion section --- schema/key-point.ts | 50 ++++++++++++++++- schema/page/home.ts | 55 ++++++++++--------- schema/page/solution.ts | 45 +-------------- .../section/section-core.component.html | 1 + .../section/section-core.component.scss | 8 +++ .../src/page/home/home-page.component.html | 4 ++ website/src/page/home/home-page.component.ts | 34 ++++++++++-- 7 files changed, 122 insertions(+), 75 deletions(-) diff --git a/schema/key-point.ts b/schema/key-point.ts index 4af0be57f..208f86932 100644 --- a/schema/key-point.ts +++ b/schema/key-point.ts @@ -1,8 +1,11 @@ import { defineField, defineType } from "@sanity/types"; +import { LinkButton } from "./button"; import { bodyFieldRichText, sectionIconField, titleField } from "./common-fields"; +import { SanityCoreSection, SectionBase } from "./component/section"; import { SanityImageRef } from "./image"; import { SanityDataset, SanityReference } from "./sanity-core"; -import { BodyTextField, PortableText, SanityBodyTextField, SanityTitleField } from "./text"; +import { BodyTextField, ParagraphWithHighlights, PortableText, SanityBodyTextField, SanityTitleField } from "./text"; +import { PropsOf } from "./util"; export type SanityKeyPoint = SanityTitleField & SanityBodyTextField; @@ -14,6 +17,14 @@ export interface SanityServicesKeyPoint extends SanityKeyPointWithIcon { checklist: string[]; } +export interface SanityKeyPointsSection extends SanityCoreSection { + keyPoints: SanityKeyPoint[]; +} + +export interface SanityKeyPointsWithIconsSection extends SanityCoreSection { + keyPoints: SanityKeyPointWithIcon[]; +} + export class KeyPoint implements BodyTextField { readonly title: string; readonly body: PortableText; @@ -42,6 +53,43 @@ export class ServicesKeyPoint extends KeyPointWithIcon { } } +export class KeyPointsSection extends SectionBase { + readonly keyPoints: KeyPoint[]; + + constructor(props: PropsOf) { + super(props); + this.keyPoints = props.keyPoints; + } + + static fromSanityKeyPointsSection(data: SanityKeyPointsSection, db: SanityDataset) { + return new KeyPointsSection({ + title: ParagraphWithHighlights.fromSanity(data.title), + body: data.body, + actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), + keyword: data.keyword, + keyPoints: data.keyPoints.map((x) => new KeyPoint(x)), + sectionId: ParagraphWithHighlights.fromSanity(data.title).toSectionID(), + }); + } +} + +export class KeyPointsWithIconsSection extends SectionBase { + readonly keyPoints: KeyPointWithIcon[]; + + constructor(props: PropsOf) { + super(props); + this.keyPoints = props.keyPoints; + } + + static override fromSanity(data: SanityKeyPointsWithIconsSection, db: SanityDataset) { + return new KeyPointsWithIconsSection( + Object.assign(SectionBase.fromSanity(data, db), { + keyPoints: data.keyPoints.map((x) => new KeyPointWithIcon(x, db)), + }) + ); + } +} + export const keyPointSchemaName = "keyPoint"; const keyPointSchema = defineType({ diff --git a/schema/page/home.ts b/schema/page/home.ts index 062e07429..2f06dce86 100644 --- a/schema/page/home.ts +++ b/schema/page/home.ts @@ -5,10 +5,10 @@ import { LinkPanelWithIcon, linkPanelWithIconSchemaName } from "../component/lin import { resourceSectionSchemaName, SanityCoreSection, SanityLinkPanelsSection, SectionBase } from "../component/section"; import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, - keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, + keyPointsWithIconsField, titleFieldWithHighlights, bodyFieldRichText, sectionIconField, resourcesField, keywordFieldOptional, keyPointsField, } from "../common-fields"; import { SanityContentTextTab, ContentTextTab, contentTextTabSchemaName } from "../component/content-text-panel"; -import { KeyPointWithIcon, SanityKeyPointWithIcon } from "../key-point"; +import { KeyPointsSection, KeyPointsWithIconsSection, SanityKeyPointsSection, SanityKeyPointsWithIconsSection } from "../key-point"; import { Organisation, organisationLogosField, SanityOrganisation } from "../organisation"; import { ResourceLink } from "../resource/base"; import { SanityResource, SanityResourceSection } from "../resource/sanity"; @@ -23,6 +23,7 @@ import { metaTagsField } from "./meta-tags"; const sections = { intro: { id: "introSection", title: "Intro" }, hotTopics: { id: "hotTopicsSection", title: "Hot Topics" }, + featureFusion: { id: "featureFusionSection", title: "Feature Fusion" }, impact: { id: "impactSection", title: "Impact" }, resources: { id: "resourcesSection", title: "Resources" }, tooling: { id: "toolingSection", title: "Tooling" }, @@ -38,11 +39,12 @@ type SectionID = (typeof sections)[SectionKey]["id"]; export interface SanityHomePage extends SanityPage { [sections.intro.id]: SanityIntroSection; [sections.hotTopics.id]: SanityHotTopicsSection; + [sections.featureFusion.id]: SanityKeyPointsSection; impactSections: SanityImpactSection[]; [sections.resources.id]: SanityResourceSection; [sections.tooling.id]: SanityLinkPanelsSection; [sections.drivers.id]: SanityDriversSection; - [sections.cloud.id]: SanityKeyPointsSection; + [sections.cloud.id]: SanityKeyPointsWithIconsSection; [sections.community.id]: SanityCommunitySection; [sections.testimonials.id]: SanityTestimonialsSection; conclusionSection: SanityConclusionSection; @@ -64,10 +66,6 @@ interface SanityImpactSection extends SanityCoreSection { type SanityDriversSection = SanityFeatureGridSection; -interface SanityKeyPointsSection extends SanityCoreSection { - keyPoints: SanityKeyPointWithIcon[]; -} - interface SanityCommunitySection extends SanityCoreSection { socialMediaLinks: SocialMediaID[]; } @@ -75,11 +73,12 @@ interface SanityCommunitySection extends SanityCoreSection { export class HomePage extends Page { readonly [sections.intro.id]?: IntroSection; readonly [sections.hotTopics.id]?: HotTopicsSection; + readonly [sections.featureFusion.id]?: KeyPointsSection; readonly impactSections: ImpactSection[]; readonly [sections.resources.id]?: ResourceSection; readonly [sections.tooling.id]?: ToolingSection; readonly [sections.drivers.id]?: FeatureGridSection; - readonly [sections.cloud.id]?: CloudSection; + readonly [sections.cloud.id]?: KeyPointsWithIconsSection; readonly [sections.community.id]?: CommunitySection; readonly [sections.testimonials.id]?: TestimonialsSection; readonly conclusionSection?: ConclusionSection; @@ -88,6 +87,9 @@ export class HomePage extends Page { super(data, db); this.introSection = data.introSection.isVisible ? IntroSection.fromSanity(data.introSection, db) : undefined; this.hotTopicsSection = data.hotTopicsSection.isVisible ? HotTopicsSection.fromSanity(data.hotTopicsSection, db) : undefined; + this.featureFusionSection = data.featureFusionSection.isVisible + ? KeyPointsSection.fromSanityKeyPointsSection(data.featureFusionSection, db) + : undefined; this.impactSections = data.impactSections .filter((x) => x.isVisible) .map((x) => ImpactSection.fromSanity(x, db)); @@ -100,7 +102,7 @@ export class HomePage extends Page { this.driversSection = data.driversSection.isVisible ? FeatureGridSection.fromSanity(data.driversSection, db) : undefined; - this.cloudSection = data.cloudSection.isVisible ? CloudSection.fromSanity(data.cloudSection, db) : undefined; + this.cloudSection = data.cloudSection.isVisible ? KeyPointsWithIconsSection.fromSanity(data.cloudSection, db) : undefined; this.communitySection = data.communitySection.isVisible ? CommunitySection.fromSanity(data.communitySection, db) : undefined; @@ -184,23 +186,6 @@ class ToolingSection extends SectionBase { } } -class CloudSection extends SectionBase { - readonly keyPoints: KeyPointWithIcon[]; - - constructor(props: PropsOf) { - super(props); - this.keyPoints = props.keyPoints; - } - - static override fromSanity(data: SanityKeyPointsSection, db: SanityDataset) { - return new CloudSection( - Object.assign(SectionBase.fromSanity(data, db), { - keyPoints: data.keyPoints.map((x) => new KeyPointWithIcon(x, db)), - }) - ); - } -} - class CommunitySection extends SectionBase { readonly socialMedias: SocialMediaID[]; @@ -260,9 +245,17 @@ const sectionSchemas = [ Object.assign({}, resourcesField, { name: "hotTopics", title: "Hot Topics" }), isVisibleField, ]), + sectionSchema("featureFusion", [ + ...titleBodyIconFields, + actionsFieldOptional, + keywordFieldOptional, + keyPointsField(3), + isVisibleField, + ]), sectionSchema("impact", [ ...titleBodyIconFields, actionsFieldOptional, + keywordFieldOptional, defineField({ name: "impactTabs", title: "Impact Tabs", @@ -326,6 +319,13 @@ const hotTopicsSectionField = defineField({ options: collapsibleOptions, }); +const featureFusionSectionField = defineField({ + name: sections.featureFusion.id, + title: `${sections.featureFusion.title} Section`, + type: sectionSchemaName("featureFusion"), + options: collapsibleOptions, +}) + const impactSectionsField = defineField({ name: "impactSections", title: "Impact Sections", @@ -334,7 +334,7 @@ const impactSectionsField = defineField({ }); const otherSectionFields = (Object.keys(sections) as SectionKey[]) - .filter((key) => !["intro", "impact", "hotTopics", "resources", "testimonials"].includes(key)) + .filter((key) => !["intro", "impact", "hotTopics", "featureFusion", "resources", "testimonials"].includes(key)) .map((key) => defineField({ name: sections[key].id, @@ -352,6 +352,7 @@ const homePageSchema = defineType({ metaTagsField, introSectionField, hotTopicsSectionField, + featureFusionSectionField, impactSectionsField, defineField({ name: "resourcesSection", diff --git a/schema/page/solution.ts b/schema/page/solution.ts index e1a392269..a258519a5 100644 --- a/schema/page/solution.ts +++ b/schema/page/solution.ts @@ -10,7 +10,7 @@ import { titleAndBodyFields, titleField, videoEmbedField, } from "../common-fields"; import { LinkPanel, SanityLinkPanel } from "../component/link-panel"; -import { KeyPoint, KeyPointWithIcon, SanityKeyPoint, SanityKeyPointWithIcon } from "../key-point"; +import { KeyPointsSection, KeyPointWithIcon, SanityKeyPointsSection, SanityKeyPointWithIcon } from "../key-point"; import { SanityResourceSection } from "../resource/sanity"; import { furtherLearningField, ResourceSection } from "../resource/section"; import { SanityDataset, SanityReference } from "../sanity-core"; @@ -48,10 +48,6 @@ interface SanityIntroSection extends SanityTitleWithHighlights, SanityBodyTextFi links: SanityLinkPanel[]; } -interface SanityKeyPointsSection extends SanityCoreSection { - keyPoints: SanityKeyPoint[]; -} - interface SanitySolutionSection extends SanityKeyPointsSection { keyPoints: SanityKeyPointWithIcon[]; } @@ -80,20 +76,10 @@ export class SolutionPage extends Page { ? IntroSection.fromSanityIntroSection(data.introSection, db) : undefined; if (data.useCasesSection.isVisible) { - this.useCasesSection = KeyPointsSection.fromSanityKeyPointsSection({ - data: data.useCasesSection, - db: db, - title: new ParagraphWithHighlights({ spans: [{ text: "Requirements", highlight: true }] }), - iconURL: "https://cdn.sanity.io/images/xndl14mc/production/ddb3754b63563cba578a2d5aa4c2de94468ef650-66x98.svg", - }); + this.useCasesSection = KeyPointsSection.fromSanityKeyPointsSection(data.useCasesSection, db); } if (data.challengesSection.isVisible) { - this.challengesSection = KeyPointsSection.fromSanityKeyPointsSection({ - data: data.challengesSection, - db: db, - title: new ParagraphWithHighlights({ spans: [{ text: "Challenges", highlight: true }] }), - iconURL: "https://cdn.sanity.io/images/xndl14mc/production/76cadf76e36fef7eac8a9b700a088a2e1ed10f1c-98x98.svg", - }); + this.challengesSection = KeyPointsSection.fromSanityKeyPointsSection(data.challengesSection, db); } this.solutionSection = data.solutionSection.isVisible ? SolutionSection.fromSanitySolutionSection({ data: data.solutionSection, db: db }) @@ -126,31 +112,6 @@ class IntroSection extends TitleAndBody { } } -class KeyPointsSection extends SectionBase { - readonly keyPoints: KeyPoint[]; - - constructor(props: PropsOf) { - super(props); - this.keyPoints = props.keyPoints; - } - - static fromSanityKeyPointsSection(props: { - data: SanityKeyPointsSection; - db: SanityDataset; - title: ParagraphWithHighlights; - iconURL: string; - }) { - const { data, db, title, iconURL } = props; - return new KeyPointsSection({ - title: title, - body: data.body, - actions: data.actions?.map((x) => LinkButton.fromSanity(x, db)), - keyPoints: data.keyPoints.map((x) => new KeyPoint(x)), - sectionId: title.toSectionID(), - }); - } -} - class SolutionSection extends SectionBase { readonly keyPoints: KeyPointWithIcon[]; diff --git a/website/src/framework/section/section-core.component.html b/website/src/framework/section/section-core.component.html index d5db5a55c..dbe9149b9 100644 --- a/website/src/framework/section/section-core.component.html +++ b/website/src/framework/section/section-core.component.html @@ -1,4 +1,5 @@
+ @if (section.keyword) {

{{ section.keyword }}

} @if (section.body && !noBody) { diff --git a/website/src/framework/section/section-core.component.scss b/website/src/framework/section/section-core.component.scss index a83450e49..cecf07e5a 100644 --- a/website/src/framework/section/section-core.component.scss +++ b/website/src/framework/section/section-core.component.scss @@ -25,6 +25,14 @@ } } +.td-keyword { + color: var(--color-secondary-pink); + font-family: var(--code-font-family); + font-weight: var(--font-weight-regular); + text-transform: uppercase; + margin-bottom: 0.5em; +} + td-heading-with-highlights { display: block; margin: 24px 0; diff --git a/website/src/page/home/home-page.component.html b/website/src/page/home/home-page.component.html index 9d7a71678..d545e0dcf 100644 --- a/website/src/page/home/home-page.component.html +++ b/website/src/page/home/home-page.component.html @@ -8,6 +8,10 @@ @if (page.hotTopicsSection) { } + @if (page.featureFusionSection) { + + + } @for (impactSection of page.impactSections; track impactSection; let idx = $index) { diff --git a/website/src/page/home/home-page.component.ts b/website/src/page/home/home-page.component.ts index ea07808f2..6da30c052 100644 --- a/website/src/page/home/home-page.component.ts +++ b/website/src/page/home/home-page.component.ts @@ -2,14 +2,24 @@ import { AsyncPipe } from "@angular/common"; import { ChangeDetectionStrategy, Component } from "@angular/core"; import { Title } from "@angular/platform-browser"; import { ActivatedRoute, Router } from "@angular/router"; + + + import { IdleMonitorService } from "@scullyio/ng-lib"; import Prism from "prismjs"; import { combineLatest, map, Observable, of } from "rxjs"; import { HomePage, homePageSchemaName, SanityDataset, SanityHomePage, SocialMediaLink } from "typedb-web-schema"; + + + import { ContentService } from "src/service/content.service"; import { MetaTagsService } from "src/service/meta-tags.service"; + + + import { ConclusionPanelComponent } from "../../framework/conclusion-panel/conclusion-panel.component"; import { ContentTabsComponent } from "../../framework/content-tabs/content-tabs.component"; +import { FeatureFusionComponent } from "../../framework/feature-fusion/feature-fusion.component"; import { FeatureGridComponent } from "../../framework/feature-grid/feature-grid.component"; import { HotTopicsComponent } from "../../framework/hot-topics/hot-topics.component"; import { KeyPointTableComponent } from "../../framework/key-point/key-point.component"; @@ -19,6 +29,7 @@ import { SocialMediaPanelsComponent } from "../../framework/social-media/social- import { TestimonialsCarouselComponent } from "../../framework/testimonials-carousel/testimonials-carousel.component"; import { PageComponentBase } from "../page-component-base"; + @Component({ selector: "td-home-page", templateUrl: "./home-page.component.html", @@ -26,17 +37,30 @@ import { PageComponentBase } from "../page-component-base"; changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - ContentTabsComponent, ResourcePanelsComponent, LinkPanelsComponent, FeatureGridComponent, - KeyPointTableComponent, SocialMediaPanelsComponent, TestimonialsCarouselComponent, - ConclusionPanelComponent, AsyncPipe, HotTopicsComponent, SectionCoreComponent, + ContentTabsComponent, + ResourcePanelsComponent, + LinkPanelsComponent, + FeatureGridComponent, + KeyPointTableComponent, + SocialMediaPanelsComponent, + TestimonialsCarouselComponent, + ConclusionPanelComponent, + AsyncPipe, + HotTopicsComponent, + SectionCoreComponent, + FeatureFusionComponent, ], }) export class HomePageComponent extends PageComponentBase { readonly socialMediaLinks$!: Observable; constructor( - activatedRoute: ActivatedRoute, router: Router, title: Title, idleMonitor: IdleMonitorService, - metaTags: MetaTagsService, contentService: ContentService, + activatedRoute: ActivatedRoute, + router: Router, + title: Title, + idleMonitor: IdleMonitorService, + metaTags: MetaTagsService, + contentService: ContentService, ) { super(activatedRoute, router, title, idleMonitor, metaTags, contentService); this.socialMediaLinks$ = combineLatest([this.page$, contentService.data]).pipe( From c9f9b90cd4fda45b2064c226fe09cc499889a776 Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Thu, 6 Mar 2025 20:16:42 +0000 Subject: [PATCH 6/7] Cursed changes --- common/src/styles/_mixins.scss | 6 +- .../content-tabs-v2.component.html | 20 ++++++ .../content-tabs-v2.component.scss | 69 +++++++++++++++++++ .../content-tabs-v2.component.ts | 69 +++++++++++++++++++ .../feature-fusion.component.scss | 21 +++++- .../feature-fusion.component.ts | 2 +- .../hot-topics/hot-topics.component.html | 1 + .../hot-topics/hot-topics.component.scss | 25 +++++++ .../src/page/home/home-page.component.scss | 9 ++- 9 files changed, 218 insertions(+), 4 deletions(-) create mode 100644 website/src/framework/content-tabs-v2/content-tabs-v2.component.html create mode 100644 website/src/framework/content-tabs-v2/content-tabs-v2.component.scss create mode 100644 website/src/framework/content-tabs-v2/content-tabs-v2.component.ts diff --git a/common/src/styles/_mixins.scss b/common/src/styles/_mixins.scss index f06f0316d..a737f83cf 100644 --- a/common/src/styles/_mixins.scss +++ b/common/src/styles/_mixins.scss @@ -188,7 +188,7 @@ } @mixin text-gradient($color1, $color2) { - background: linear-gradient(105deg, #{$color1} 0%, #{$color2} 100%); + background: linear-gradient(105deg, #{$color1} 0%, #{$color2} 50%, #{$color1} 100%); background-clip: text; -webkit-text-fill-color: transparent; } @@ -213,3 +213,7 @@ conic-gradient(from 120deg, $color2, $color1, $color2) border-box; } } + +@mixin light-source-gradient($light-source-color, $background-color, $left: 80px, $top: 50px) { + background: $background-color radial-gradient(ellipse at $left $top, $light-source-color 0%, 60%, rgba($background-color, 0)); +} diff --git a/website/src/framework/content-tabs-v2/content-tabs-v2.component.html b/website/src/framework/content-tabs-v2/content-tabs-v2.component.html new file mode 100644 index 000000000..de13efd01 --- /dev/null +++ b/website/src/framework/content-tabs-v2/content-tabs-v2.component.html @@ -0,0 +1,20 @@ +
+ +
+ @for (tab of tabs; track tab) { + +
{{ tab.title }}
+
+ } +
+
+ @for (tab of tabs; track tab) { + + } +
diff --git a/website/src/framework/content-tabs-v2/content-tabs-v2.component.scss b/website/src/framework/content-tabs-v2/content-tabs-v2.component.scss new file mode 100644 index 000000000..1347c2c53 --- /dev/null +++ b/website/src/framework/content-tabs-v2/content-tabs-v2.component.scss @@ -0,0 +1,69 @@ +@use "media"; +@use "shapes"; + +.ft-root { + display: flex; + flex-direction: column; +} + +.ft-tabs-container { + border: shapes.$border; + border-bottom: none; + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + background: var(--color-deep-purple); +} + +.ft-tabs { + height: 52px; + display: flex; + flex-direction: row; + + @media (max-width: media.$max-width-mobile) { + height: 48px; + } +} + +.ft-tab { + flex: 1; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + padding-left: 12px; + padding-right: 12px; + white-space: nowrap; + + &:not(:first-child) { + border-left: shapes.$border; + } + + h5 { + color: var(--color-darker-white); + } + + @media (hover: hover) { + &:hover h5 { + color: var(--color-white); + } + } +} + +.ft-tab-selected { + background: var(--color-purple); + + h5 { + color: var(--color-white); + } +} + +.ft-graphic { + flex: 1; +} + +.ft-text-area { + width: 366px; + display: flex; + flex-direction: column; + justify-content: space-between; +} diff --git a/website/src/framework/content-tabs-v2/content-tabs-v2.component.ts b/website/src/framework/content-tabs-v2/content-tabs-v2.component.ts new file mode 100644 index 000000000..26c5ab871 --- /dev/null +++ b/website/src/framework/content-tabs-v2/content-tabs-v2.component.ts @@ -0,0 +1,69 @@ +import { AsyncPipe, NgClass } from "@angular/common"; +import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; + +import { defer, filter, map, merge, Observable, shareReplay, startWith, Subject } from "rxjs"; +import { ContentTextTab } from "typedb-web-schema"; + +import { ContentPanelComponent } from "../content-panel/content-panel.component"; +import { ScrollShadowComponent } from "../scroll-shadow/scroll-shadow.component"; +import { sanitiseHtmlID } from "../util"; + +@Component({ + selector: "td-content-tabs-v2", + templateUrl: "content-tabs-v2.component.html", + styleUrls: ["content-tabs-v2.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ScrollShadowComponent, NgClass, ContentPanelComponent, AsyncPipe], +}) +export class ContentTabsV2Component implements OnInit { + @Input() tabs!: ContentTextTab[]; + @Input() setWindowHashOnTabClick = false; + + readonly selectedTab$: Observable; + private _elementID!: string; + private readonly tabClick$: Subject = new Subject(); + + constructor( + private router: Router, + private _el: ElementRef, + activatedRoute: ActivatedRoute, + ) { + this.selectedTab$ = defer(() => + merge( + activatedRoute.fragment.pipe( + map((value) => this.tabs.find((x) => this.tabID(x) === value)), + filter((v): v is ContentTextTab => !!v), + ), + this.tabClick$, + ).pipe(startWith(this.tabs[0]), shareReplay(1)), + ); + } + + ngOnInit() { + if (!this._el.nativeElement.id.length) { + throw `${this.constructor.name}'s native HTML element must have an id set`; + } + this._elementID = this._el.nativeElement.id; + } + + tabID(tab: ContentTextTab): string { + return `${this._elementID}-${sanitiseHtmlID(tab.title)}`; + } + + onTabClick(tab: ContentTextTab, event: Event) { + event.preventDefault(); + if (event.currentTarget instanceof HTMLElement) { + event.currentTarget.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "center" }); + } + this.tabClick$.next(tab); + + if (this.setWindowHashOnTabClick) { + this.router.navigate([], { + fragment: this.tabID(tab), + state: { preventScrollToAnchor: true }, + }); + } + } +} diff --git a/website/src/framework/feature-fusion/feature-fusion.component.scss b/website/src/framework/feature-fusion/feature-fusion.component.scss index 4453c18a9..7a4165e25 100644 --- a/website/src/framework/feature-fusion/feature-fusion.component.scss +++ b/website/src/framework/feature-fusion/feature-fusion.component.scss @@ -1,3 +1,4 @@ +@use "colors"; @use "media"; @use "shapes"; @import "mixins"; @@ -6,6 +7,8 @@ display: flex; flex-direction: row; overflow: hidden; + border-radius: var(--border-radius); + height: 270px; @media (max-width: media.$max-width-mobile) { flex-direction: column; @@ -25,7 +28,21 @@ } } -.ff-cell + .ff-cell { +.ff-content-cell { + border-radius: var(--border-radius); + border: 1px solid colors.$light-purple; + @include light-source-gradient(colors.$purple, colors.$black-purple); + transition: background 100ms ease, flex 300ms ease-in-out; + cursor: pointer; + flex: 1; + + &:hover { + @include light-source-gradient(rgba(colors.$light-purple, 0.6), colors.$deep-purple); + flex: 3; + } +} + +.ff-gap + .ff-cell { @media (min-width: media.$min-width-tablet) { border-left: 1px solid var(--content-border-color); } @@ -37,6 +54,8 @@ td-rich-text { margin-top: 24px; + max-height: 182px; + overflow: hidden; @media (min-width: media.$min-width-tablet) and (max-width: media.$max-width-tablet) { margin-top: 16px; diff --git a/website/src/framework/feature-fusion/feature-fusion.component.ts b/website/src/framework/feature-fusion/feature-fusion.component.ts index cdf01586c..4e05e3d05 100644 --- a/website/src/framework/feature-fusion/feature-fusion.component.ts +++ b/website/src/framework/feature-fusion/feature-fusion.component.ts @@ -12,5 +12,5 @@ import { RichTextComponent } from "../text/rich-text.component"; }) export class FeatureFusionComponent { @Input() features!: KeyPoint[]; - @HostBinding("class") classes = "section card-appearance"; + @HostBinding("class") classes = "section"; } diff --git a/website/src/framework/hot-topics/hot-topics.component.html b/website/src/framework/hot-topics/hot-topics.component.html index f0b1df878..389fb1adc 100644 --- a/website/src/framework/hot-topics/hot-topics.component.html +++ b/website/src/framework/hot-topics/hot-topics.component.html @@ -3,6 +3,7 @@
@for (hotTopic of hotTopics; track hotTopic) { +
@if (hotTopic.imageURL) { } diff --git a/website/src/framework/hot-topics/hot-topics.component.scss b/website/src/framework/hot-topics/hot-topics.component.scss index 3174b31e7..edb2506b4 100644 --- a/website/src/framework/hot-topics/hot-topics.component.scss +++ b/website/src/framework/hot-topics/hot-topics.component.scss @@ -1,3 +1,4 @@ +@use "colors"; @use "media"; @use "mixins" as *; @use "shapes"; @@ -11,6 +12,10 @@ td-heading-with-highlights { display: block; flex: 0 0 400px; + + ::ng-deep h2 { + @include text-gradient(#F96480, #FDD257); + } } .td-cards { @@ -24,6 +29,15 @@ td-heading-with-highlights { height: 480px; display: flex; flex-direction: column; + transition: background 100ms ease, border-color 100ms ease; + @include light-source-gradient(colors.$purple, colors.$black-purple, 80px, 250px); + position: relative; + + &:hover { + .td-card-overlay { + opacity: 0.04; + } + } } .td-hero { @@ -32,6 +46,17 @@ td-heading-with-highlights { border-bottom: 1px solid var(--content-border-color); } +.td-card-overlay { + position: absolute; + inset: 0; + border-radius: var(--border-radius); + z-index: 1; + pointer-events: none; + background: #BBF; + opacity: 0; + transition: opacity 100ms ease; +} + .td-card-body { flex: 1; display: flex; diff --git a/website/src/page/home/home-page.component.scss b/website/src/page/home/home-page.component.scss index ec3ee33be..2ed199f44 100644 --- a/website/src/page/home/home-page.component.scss +++ b/website/src/page/home/home-page.component.scss @@ -1,5 +1,12 @@ @import "mixins"; +@keyframes flow { + 0% { background-position-x: 0; } + 100% { background-position-x: 680px; } +} + td-section-core.td-intro ::ng-deep td-heading-with-highlights h1 { - @include text-gradient(#AC79EE, #03D0BF); + @include text-gradient(#03D0BF, #AC79EE); + animation: 8s linear 0s infinite flow; } + From d881c3e538b4b6420a65e1df8881dda605feb5bc Mon Sep 17 00:00:00 2001 From: Alex Walker Date: Fri, 7 Mar 2025 22:50:13 +0000 Subject: [PATCH 7/7] Slickify --- common/src/styles/base.scss | 6 +- schema/common-fields.ts | 34 +++++ schema/component/feature-grid.ts | 10 +- schema/component/index.ts | 10 +- schema/component/integrations-grid.ts | 119 ++++++++++++++++++ schema/component/link-panel.ts | 51 +++----- schema/component/section.ts | 10 +- schema/index.ts | 3 +- schema/navigation/topnav.ts | 23 +--- schema/page/home.ts | 37 +++--- schema/page/support.ts | 4 +- .../feature-fusion.component.scss | 9 +- .../hot-topics/hot-topics.component.scss | 2 +- .../integrations-grid.component.html | 28 +++++ .../integrations-grid.component.scss | 58 +++++++++ .../integrations-grid.component.ts | 16 +++ .../link-panels/link-panels.component.html | 8 +- .../link-panels/link-panels.component.scss | 18 ++- .../link-panels/link-panels.component.ts | 6 +- .../src/page/home/home-page.component.html | 33 ++--- .../src/page/home/home-page.component.scss | 3 + website/src/page/home/home-page.component.ts | 2 + website/src/styles/styles.scss | 8 +- 23 files changed, 364 insertions(+), 134 deletions(-) create mode 100644 schema/component/integrations-grid.ts create mode 100644 website/src/framework/integrations-grid/integrations-grid.component.html create mode 100644 website/src/framework/integrations-grid/integrations-grid.component.scss create mode 100644 website/src/framework/integrations-grid/integrations-grid.component.ts diff --git a/common/src/styles/base.scss b/common/src/styles/base.scss index 629f427c4..6082d99b9 100644 --- a/common/src/styles/base.scss +++ b/common/src/styles/base.scss @@ -268,9 +268,9 @@ button, td-button { @include card-padding; transition: border-color 100ms; - &.hoverable:hover { - border-color: var(--color-secondary-light-grey); - } + //&.hoverable:hover { + // border-color: var(--color-secondary-light-grey); + //} } .card-appearance { diff --git a/schema/common-fields.ts b/schema/common-fields.ts index 307b11ed0..f24606ae2 100644 --- a/schema/common-fields.ts +++ b/schema/common-fields.ts @@ -174,6 +174,30 @@ export const learnMoreLinkFieldOptional = Object.assign({}, linkFieldOptional, { title: "'Learn More' link", }); +export const iconNameFieldName = "iconName"; +export const iconVariantFieldName = "iconVariant"; + +export const iconNameFieldOptional = defineField({ + name: "iconName", + type: "string", + title: "Icon Name", +}); + +export const iconVariantFieldOptional = defineField({ + name: "iconVariant", + type: "string", + title: "Icon Variant", + initialValue: "thin", + options: { + list: ["regular", "light", "thin", "brands"], + layout: "radio", + direction: "horizontal", + }, + hidden: (ctx) => { + return ctx.parent == null || ctx.parent["iconName"] == null; + }, +}); + export const comingSoonField = defineField({ name: "comingSoon", title: "Coming soon?", @@ -231,6 +255,16 @@ export const keywordFieldOptional = defineField({ type: "string", }); +export const tagsFieldName = "tags"; + +export const tagsField = defineField({ + name: tagsFieldName, + title: "Tags", + type: "array", + of: [{ type: "string" }], + initialValue: [], +}); + export interface SanityVisibleToggle { isVisible: boolean; } diff --git a/schema/component/feature-grid.ts b/schema/component/feature-grid.ts index 1fe4d49fa..389b4fb98 100644 --- a/schema/component/feature-grid.ts +++ b/schema/component/feature-grid.ts @@ -1,7 +1,7 @@ import { DashboardIcon } from "@sanity/icons"; import { ArrayRule, defineField, defineType, SanityDocument } from "@sanity/types"; import { CodeSnippetShort, codeSnippetShortSchemaName, isCodeSnippetShort } from "../code"; -import { bodyFieldRichText, isVisibleField, nameField, requiredRule, SanityVisibleToggle, sectionIconField, sectionIconFieldOptional, titleFieldOptional, titleFieldWithHighlights } from "../common-fields"; +import { bodyFieldRichText, isVisibleField, nameField, requiredRule, SanityVisibleToggle, sectionIconField, sectionIconFieldOptional, tagsField, titleFieldOptional, titleFieldWithHighlights } from "../common-fields"; import { Illustration, illustrationFieldOptional, illustrationFieldTargetTypes, illustrationFromSanity, SanityIllustration } from "../illustration"; import { SanityImageRef } from "../image"; import { SanityTextLink, TextLink, textLinkSchemaName } from "../link"; @@ -156,13 +156,7 @@ const featureGridCellSchema = defineType({ type: "array", of: [{type: textLinkSchemaName}], }), - defineField({ - name: "tags", - title: "Tags", - type: "array", - of: [{ type: "string" }], - initialValue: [], - }), + tagsField, defineField({ name: "isIllustrationBlurred", title: "Blur Illustration?", diff --git a/schema/component/index.ts b/schema/component/index.ts index 84b5359a4..1f51ae27e 100644 --- a/schema/component/index.ts +++ b/schema/component/index.ts @@ -2,18 +2,14 @@ import { conclusionPanelSchemas } from "./conclusion-panel"; import { contentTextPanelSchemas } from "./content-text-panel"; import { featureGridSchemas } from "./feature-grid"; import { featureTableSchemas } from "./feature-table"; +import { integrationsGridSchemas } from "./integrations-grid"; import { linkPanelSchemas } from "./link-panel"; import { pageSectionSchemas } from "./section"; import { pricingPanelSchemas } from "./pricing-panel"; import { publicationSchemas } from "./publication-panel"; export const componentSchemas: any[] = [ - ...conclusionPanelSchemas, - ...contentTextPanelSchemas, - ...featureGridSchemas, - ...featureTableSchemas, - ...linkPanelSchemas, - ...pageSectionSchemas, - ...pricingPanelSchemas, + ...conclusionPanelSchemas, ...contentTextPanelSchemas, ...featureGridSchemas, ...featureTableSchemas, + ...integrationsGridSchemas, ...linkPanelSchemas, ...pageSectionSchemas, ...pricingPanelSchemas, ...publicationSchemas, ]; diff --git a/schema/component/integrations-grid.ts b/schema/component/integrations-grid.ts new file mode 100644 index 000000000..f4783dcc1 --- /dev/null +++ b/schema/component/integrations-grid.ts @@ -0,0 +1,119 @@ +import { DashboardIcon } from "@sanity/icons"; +import { ArrayRule, defineField, defineType, SanityDocument } from "@sanity/types"; +import { CodeSnippetShort, codeSnippetShortSchemaName, isCodeSnippetShort } from "../code"; +import { actionsFieldOptional, bodyFieldRichText, imageFieldOptional, isVisibleField, linkFieldOptional, nameField, requiredRule, SanityVisibleToggle, sectionIconField, sectionIconFieldOptional, tagsField, titleBodyIconFields, titleFieldOptional, titleFieldWithHighlights } from "../common-fields"; +import { Illustration, illustrationFieldOptional, illustrationFieldTargetTypes, illustrationFromSanity, SanityIllustration } from "../illustration"; +import { SanityImageRef } from "../image"; +import { Link, SanityLink, SanityTextLink, TextLink, textLinkSchemaName } from "../link"; +import { SanityDataset, SanityImage, SanityReference } from "../sanity-core"; +import { BodyTextField, PortableText } from "../text"; +import { PropsOf } from "../util"; +import { SanitySectionBase, SectionBase } from "./section"; + +export interface SanityIntegrationsGridSection extends SanitySectionBase, SanityVisibleToggle { + primary: SanityIntegration[]; + secondary: SanityIntegration[]; + requestLink?: SanityTextLink; +} + +export interface SanityIntegration extends SanityVisibleToggle { + name: string; + image?: SanityImage; + link?: SanityReference; + tags: string[]; +} + +export class Integration { + readonly name: string; + readonly imageURL?: string; + readonly link?: Link; + readonly tags: string[]; + + constructor(props: PropsOf) { + this.name = props.name; + this.imageURL = props.imageURL; + this.link = props.link; + this.tags = props.tags; + } + + static fromSanity(data: SanityIntegration, db: SanityDataset) { + return new Integration({ + name: data.name, + imageURL: data.image && db.resolveRef(data.image.asset).url, + link: data.link ? Link.fromSanityLinkRef(data.link, db) : undefined, + tags: data.tags, + }); + } +} + +export class IntegrationsGridSection extends SectionBase { + readonly primary: Integration[]; + readonly secondary: Integration[]; + readonly requestLink?: TextLink; + + constructor(props: PropsOf) { + super(props); + this.primary = props.primary; + this.secondary = props.secondary; + this.requestLink = props.requestLink; + } + + static override fromSanity(data: SanityIntegrationsGridSection, db: SanityDataset) { + const visiblePrimaries = data.primary.filter((x) => x.isVisible); + const visibleSecondaries = data.secondary.filter((x) => x.isVisible); + return new IntegrationsGridSection(Object.assign(SectionBase.fromSanity(data, db), { + primary: visiblePrimaries.map(x => Integration.fromSanity(x, db)), + secondary: visibleSecondaries.map(x => Integration.fromSanity(x, db)), + requestLink: data.requestLink ? TextLink.fromSanityTextLink(data.requestLink, db) : undefined, + })); + } +} + +export const integrationSchemaName = `integration`; + +const integrationSchema = defineType({ + name: integrationSchemaName, + title: "Integration", + type: "object", + fields: [ + nameField, + imageFieldOptional, + linkFieldOptional, + tagsField, + isVisibleField, + ], +}); + +export const integrationsGridSectionSchemaName = `integrationsGridSection`; + +const integrationsGridSectionSchema = defineType({ + name: integrationsGridSectionSchemaName, + title: "Integrations Grid Section", + type: "document", + icon: DashboardIcon, + fields: [ + ...titleBodyIconFields, + actionsFieldOptional, + isVisibleField, + defineField({ + name: "primary", + title: "Primary", + type: "array", + of: [{ type: integrationSchemaName }], + }), + defineField({ + name: "secondary", + title: "Secondary", + type: "array", + of: [{ type: integrationSchemaName }], + }), + defineField({ + name: "requestLink", + title: "Request Link", + type: textLinkSchemaName, + }), + illustrationFieldOptional, + ], +}); + +export const integrationsGridSchemas = [integrationSchema, integrationsGridSectionSchema]; diff --git a/schema/component/link-panel.ts b/schema/component/link-panel.ts index 83afb5d7b..0a677d70d 100644 --- a/schema/component/link-panel.ts +++ b/schema/component/link-panel.ts @@ -1,67 +1,56 @@ import { defineField, defineType } from "@sanity/types"; -import { SanityImageRef } from "../image"; -import { bodyFieldRichText, buttonField, requiredRule, sectionIconField, textLinkFieldOptional, titleField } from "../common-fields"; +import { bodyFieldRichText, buttonField, iconNameFieldOptional, iconVariantFieldOptional, requiredRule, textLinkFieldOptional, titleField } from "../common-fields"; import { SanityTextLink, TextLink } from "../link"; -import { SanityDataset, SanityReference } from "../sanity-core"; +import { SanityDataset } from "../sanity-core"; import { BodyTextField, PortableText } from "../text"; import { PropsOf } from "../util"; export interface SanityLinkPanel { title: string; body: PortableText; -} - -export interface SanityLinkPanelWithIcon extends SanityLinkPanel { - icon: SanityReference; + iconName?: string; + iconVariant?: string; link?: SanityTextLink; } export class LinkPanel implements BodyTextField { readonly title: string; readonly body: PortableText; + readonly iconName?: string; + readonly iconVariant?: string; + readonly link?: TextLink; constructor(props: PropsOf) { this.title = props.title; this.body = props.body; + this.iconName = props.iconName; + this.iconVariant = props.iconVariant; + this.link = props.link; } - static fromSanity(data: SanityLinkPanel, _db: SanityDataset): LinkPanel { + static fromSanity(data: SanityLinkPanel, db: SanityDataset): LinkPanel { return new LinkPanel({ title: data.title, body: data.body, - }); - } -} - -export class LinkPanelWithIcon extends LinkPanel { - readonly iconURL: string; - readonly link?: TextLink; - - constructor(props: PropsOf) { - super(props); - this.iconURL = props.iconURL; - this.link = props.link; - } - - static override fromSanity(data: SanityLinkPanelWithIcon, db: SanityDataset): LinkPanelWithIcon { - return new LinkPanelWithIcon(Object.assign(LinkPanel.fromSanity(data, db), { - iconURL: db.resolveImageRef(data.icon).url, + iconName: data.iconName, + iconVariant: data.iconVariant, link: data.link ? TextLink.fromSanityTextLink(data.link, db) : undefined, - })); + }); } } -export const linkPanelWithIconSchemaName = "linkPanelWithIcon"; +export const linkPanelSchemaName = `linkPanel`; -const linkPanelWithIconSchema = defineType({ - name: linkPanelWithIconSchemaName, +const linkPanelSchema = defineType({ + name: linkPanelSchemaName, title: "Link Panel", type: "object", fields: [ titleField, bodyFieldRichText, - sectionIconField, textLinkFieldOptional, + iconNameFieldOptional, + iconVariantFieldOptional, ], }); @@ -86,4 +75,4 @@ const productPanelSchema = defineType({ ], }); -export const linkPanelSchemas = [linkPanelWithIconSchema, productPanelSchema]; +export const linkPanelSchemas = [linkPanelSchema, productPanelSchema]; diff --git a/schema/component/section.ts b/schema/component/section.ts index 982ba2ca6..066ff7c4b 100644 --- a/schema/component/section.ts +++ b/schema/component/section.ts @@ -6,8 +6,8 @@ import { import { SanityDataset } from "../sanity-core"; import { BodyTextField, ParagraphWithHighlights, PortableText, SanityTitleBodyActions } from "../text"; import { PropsOf } from "../util"; -import { LinkPanelWithIcon, linkPanelWithIconSchemaName, SanityLinkPanelWithIcon } from "./link-panel"; import { ContentTextPanel, contentTextPanelSchemaName, SanityContentTextPanel } from "./content-text-panel"; +import { LinkPanel, linkPanelSchemaName, SanityLinkPanel } from "./link-panel"; export interface SanitySectionBase extends SanityTitleBodyActions, SanityIconField { keyword?: string; @@ -20,7 +20,7 @@ export interface SanityTitleBodyPanelSection extends SanityCoreSection { } export interface SanityLinkPanelsSection extends SanityCoreSection { - panels: SanityLinkPanelWithIcon[]; + panels: SanityLinkPanel[]; } export class SectionBase implements Partial { @@ -67,7 +67,7 @@ export class TitleBodyPanelSection extends SectionBase { } export class LinkPanelsSection extends SectionBase { - readonly panels: LinkPanelWithIcon[]; + readonly panels: LinkPanel[]; constructor(props: PropsOf) { super(props); @@ -77,7 +77,7 @@ export class LinkPanelsSection extends SectionBase { static override fromSanity(data: SanityLinkPanelsSection, db: SanityDataset) { return new LinkPanelsSection({ ...super.fromSanity(data, db), - panels: data.panels.map((x) => LinkPanelWithIcon.fromSanity(x, db)), + panels: data.panels.map((x) => LinkPanel.fromSanity(x, db)), }); } } @@ -132,7 +132,7 @@ const linkPanelsSectionSchema = defineType({ name: "panels", title: "Panels", type: "array", - of: [{ type: linkPanelWithIconSchemaName }], + of: [{ type: linkPanelSchemaName }], validation: (rule) => rule.required().length(3), }), isVisibleField, diff --git a/schema/index.ts b/schema/index.ts index 3d412bff0..b1af267a8 100644 --- a/schema/index.ts +++ b/schema/index.ts @@ -43,7 +43,8 @@ export { FeatureGrid, type FeatureGridLayout, FeatureGridSection, FeatureGridCell, featureGridSchemaName, } from "./component/feature-grid"; export { FeatureTable, featureTableSchemaName, type FeatureTableCell } from "./component/feature-table"; -export { LinkPanel, LinkPanelWithIcon } from "./component/link-panel"; +export { Integration, IntegrationsGridSection } from "./component/integrations-grid"; +export { LinkPanel } from "./component/link-panel"; export { TitleBodyPanelSection } from "./component/section"; export { PricingPanel, type SanityPricingPanel } from "./component/pricing-panel"; export { diff --git a/schema/navigation/topnav.ts b/schema/navigation/topnav.ts index 0d2f834c6..bef7bed94 100644 --- a/schema/navigation/topnav.ts +++ b/schema/navigation/topnav.ts @@ -2,7 +2,7 @@ import { BlockElementIcon, ComponentIcon, SquareIcon } from "@sanity/icons"; import { defineField, defineType, SanityDocument } from "@sanity/types"; import { LinkButton, buttonSchemaName, SanityLinkButton } from "../button"; import { Link, SanityLink, SanityTextLink } from "../link"; -import { descriptionField, linkFieldOptional, requiredRule, textLinkFieldOptional, titleField } from "../common-fields"; +import { descriptionField, iconNameFieldOptional, iconVariantFieldOptional, linkFieldOptional, requiredRule, textLinkFieldOptional, titleField } from "../common-fields"; import { Document, SanityDataset, SanityReference } from "../sanity-core"; import { PropsOf } from "../util"; @@ -236,25 +236,8 @@ const panelItemSchema = defineType({ titleField, descriptionField, linkFieldOptional, - defineField({ - name: "iconName", - type: "string", - title: "Icon Name", - }), - defineField({ - name: "iconVariant", - type: "string", - title: "Icon Variant", - initialValue: "thin", - options: { - list: ["regular", "light", "thin", "brands"], - layout: "radio", - direction: "horizontal", - }, - hidden: (ctx) => { - return ctx.parent == null || ctx.parent["iconName"] == null; - }, - }), + iconNameFieldOptional, + iconVariantFieldOptional, ], preview: { select: { title: "title", description: "description", link: "link.title" }, diff --git a/schema/page/home.ts b/schema/page/home.ts index 2f06dce86..9057e9064 100644 --- a/schema/page/home.ts +++ b/schema/page/home.ts @@ -1,7 +1,7 @@ import { ArrayRule, defineField, defineType } from "@sanity/types"; import { ConclusionSection, conclusionSectionSchemaName, SanityConclusionSection } from "../component/conclusion-panel"; -import { featureGridSchemaName, FeatureGridSection, SanityFeatureGridSection } from "../component/feature-grid"; -import { LinkPanelWithIcon, linkPanelWithIconSchemaName } from "../component/link-panel"; +import { IntegrationsGridSection, integrationsGridSectionSchemaName, SanityIntegrationsGridSection } from "../component/integrations-grid"; +import { LinkPanel, linkPanelSchemaName } from "../component/link-panel"; import { resourceSectionSchemaName, SanityCoreSection, SanityLinkPanelsSection, SectionBase } from "../component/section"; import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, @@ -64,7 +64,7 @@ interface SanityImpactSection extends SanityCoreSection { impactTabs: SanityContentTextTab[]; } -type SanityDriversSection = SanityFeatureGridSection; +type SanityDriversSection = SanityIntegrationsGridSection; interface SanityCommunitySection extends SanityCoreSection { socialMediaLinks: SocialMediaID[]; @@ -77,7 +77,7 @@ export class HomePage extends Page { readonly impactSections: ImpactSection[]; readonly [sections.resources.id]?: ResourceSection; readonly [sections.tooling.id]?: ToolingSection; - readonly [sections.drivers.id]?: FeatureGridSection; + readonly [sections.drivers.id]?: IntegrationsGridSection; readonly [sections.cloud.id]?: KeyPointsWithIconsSection; readonly [sections.community.id]?: CommunitySection; readonly [sections.testimonials.id]?: TestimonialsSection; @@ -100,7 +100,7 @@ export class HomePage extends Page { ? ToolingSection.fromSanity(data.toolingSection, db) : undefined; this.driversSection = data.driversSection.isVisible - ? FeatureGridSection.fromSanity(data.driversSection, db) + ? IntegrationsGridSection.fromSanity(data.driversSection, db) : undefined; this.cloudSection = data.cloudSection.isVisible ? KeyPointsWithIconsSection.fromSanity(data.cloudSection, db) : undefined; this.communitySection = data.communitySection.isVisible @@ -170,7 +170,7 @@ class ImpactSection extends SectionBase { } class ToolingSection extends SectionBase { - readonly panels: LinkPanelWithIcon[]; + readonly panels: LinkPanel[]; constructor(props: PropsOf) { super(props); @@ -180,7 +180,7 @@ class ToolingSection extends SectionBase { static override fromSanity(data: SanityLinkPanelsSection, db: SanityDataset) { return new ToolingSection( Object.assign(SectionBase.fromSanity(data, db), { - panels: data.panels.map((x) => LinkPanelWithIcon.fromSanity(x, db)), + panels: data.panels.map((x) => LinkPanel.fromSanity(x, db)), }) ); } @@ -273,23 +273,11 @@ const sectionSchemas = [ name: "panels", title: "Panels", type: "array", - of: [{ type: linkPanelWithIconSchemaName }], + of: [{ type: linkPanelSchemaName }], validation: (rule: ArrayRule) => rule.required().length(3), }), isVisibleField, ]), - sectionSchema("drivers", [ - ...titleBodyIconFields, - actionsFieldOptional, - defineField({ - name: "featureGrid", - title: "Drivers", - type: "reference", - to: [{ type: featureGridSchemaName }], - validation: requiredRule, - }), - isVisibleField, - ]), sectionSchema("cloud", [...titleBodyIconFields, actionsFieldOptional, keyPointsWithIconsField(5), isVisibleField]), sectionSchema("community", [...titleBodyIconFields, actionsFieldOptional, socialMediaLinksField, isVisibleField]), sectionSchema("testimonials", [ @@ -334,7 +322,7 @@ const impactSectionsField = defineField({ }); const otherSectionFields = (Object.keys(sections) as SectionKey[]) - .filter((key) => !["intro", "impact", "hotTopics", "featureFusion", "resources", "testimonials"].includes(key)) + .filter((key) => !["intro", "impact", "hotTopics", "featureFusion", "resources", "drivers", "testimonials"].includes(key)) .map((key) => defineField({ name: sections[key].id, @@ -361,6 +349,13 @@ const homePageSchema = defineType({ options: collapsibleOptions, validation: requiredRule, }), + defineField({ + name: "driversSection", + title: "Integrations Grid Section", + type: integrationsGridSectionSchemaName, + options: collapsibleOptions, + validation: requiredRule, + }), ...otherSectionFields, testimonialsSectionField, defineField({ diff --git a/schema/page/support.ts b/schema/page/support.ts index 4873b09dd..7f7a06015 100644 --- a/schema/page/support.ts +++ b/schema/page/support.ts @@ -3,7 +3,7 @@ import { collapsibleOptions, isVisibleField, actionsFieldOptional, titleBodyIconFields, requiredRule, } from "../common-fields"; import { featureTableSchemaName, FeatureTableSection, SanityFeatureTableSection } from "../component/feature-table"; -import { linkPanelWithIconSchemaName } from "../component/link-panel"; +import { linkPanelSchemaName } from "../component/link-panel"; import { LinkPanelsSection, SanityCoreSection, SanityLinkPanelsSection, SectionBase } from "../component/section"; import { SanityDataset } from "../sanity-core"; import { SanityTestimonialsSection, TestimonialsSection, testimonialsSectionField } from "../testimonial"; @@ -67,7 +67,7 @@ const sectionSchemas = [ name: "panels", title: "Panels", type: "array", - of: [{ type: linkPanelWithIconSchemaName }], + of: [{ type: linkPanelSchemaName }], validation: (rule) => rule.required().length(3), }), isVisibleField, diff --git a/website/src/framework/feature-fusion/feature-fusion.component.scss b/website/src/framework/feature-fusion/feature-fusion.component.scss index 7a4165e25..1adbf5588 100644 --- a/website/src/framework/feature-fusion/feature-fusion.component.scss +++ b/website/src/framework/feature-fusion/feature-fusion.component.scss @@ -32,13 +32,14 @@ border-radius: var(--border-radius); border: 1px solid colors.$light-purple; @include light-source-gradient(colors.$purple, colors.$black-purple); - transition: background 100ms ease, flex 300ms ease-in-out; + transition: background 100ms ease, flex 300ms ease-in-out, transform 100ms ease; cursor: pointer; flex: 1; + //transform-origin: center; &:hover { @include light-source-gradient(rgba(colors.$light-purple, 0.6), colors.$deep-purple); - flex: 3; + //transform: scale(1.1); } } @@ -54,8 +55,8 @@ td-rich-text { margin-top: 24px; - max-height: 182px; - overflow: hidden; + //max-height: 182px; + //overflow: hidden; @media (min-width: media.$min-width-tablet) and (max-width: media.$max-width-tablet) { margin-top: 16px; diff --git a/website/src/framework/hot-topics/hot-topics.component.scss b/website/src/framework/hot-topics/hot-topics.component.scss index edb2506b4..a7a65d795 100644 --- a/website/src/framework/hot-topics/hot-topics.component.scss +++ b/website/src/framework/hot-topics/hot-topics.component.scss @@ -14,7 +14,7 @@ td-heading-with-highlights { flex: 0 0 400px; ::ng-deep h2 { - @include text-gradient(#F96480, #FDD257); + //@include text-gradient(#F96480, #FDD257); } } diff --git a/website/src/framework/integrations-grid/integrations-grid.component.html b/website/src/framework/integrations-grid/integrations-grid.component.html new file mode 100644 index 000000000..f32de63c7 --- /dev/null +++ b/website/src/framework/integrations-grid/integrations-grid.component.html @@ -0,0 +1,28 @@ +
+ +
+ @for (integration of integrations.secondary; track integration) { + + @if (integration.imageURL) { + +
+ } +

{{ integration.name }}

+
+ } + @if (integrations.requestLink) { + +

{{ integrations.requestLink.text }}

+
+ } +
diff --git a/website/src/framework/integrations-grid/integrations-grid.component.scss b/website/src/framework/integrations-grid/integrations-grid.component.scss new file mode 100644 index 000000000..e74e9c5a0 --- /dev/null +++ b/website/src/framework/integrations-grid/integrations-grid.component.scss @@ -0,0 +1,58 @@ +@use "colors"; +@use "media"; +@use "mixins" as *; +@use "shapes"; + +.td-primary-items, +.td-secondary-items { + width: 100%; + display: flex; + justify-content: center; + flex-flow: row wrap; + overflow: hidden; +} + +.td-primary-items { + gap: 32px; +} + +.td-secondary-items { + margin-top: 64px; + gap: 24px; +} + +.td-primary-item, +.td-secondary-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + @include light-source-gradient(colors.$purple, colors.$deep-purple, 40px, 20px); + transition: background 100ms ease, flex 300ms ease-in-out, transform 100ms ease; + text-align: center; + + &:hover { + @include light-source-gradient(rgba(colors.$light-purple, 0.6), colors.$purple, 40px, 20px); + } +} + +.td-primary-item { + width: 240px; + height: 180px; + + img { + width: 64px; + height: 64px; + } +} + +.td-secondary-item { + width: 150px; + height: 120px; + padding: 16px; + + img { + width: 40px; + height: 40px; + } +} diff --git a/website/src/framework/integrations-grid/integrations-grid.component.ts b/website/src/framework/integrations-grid/integrations-grid.component.ts new file mode 100644 index 000000000..a56fc16be --- /dev/null +++ b/website/src/framework/integrations-grid/integrations-grid.component.ts @@ -0,0 +1,16 @@ +import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; +import { IntegrationsGridSection } from "typedb-web-schema"; +import { LinkDirective } from "../link/link.directive"; + +@Component({ + selector: "td-integrations-grid", + templateUrl: "./integrations-grid.component.html", + styleUrls: ["./integrations-grid.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [LinkDirective], +}) +export class IntegrationsGridComponent { + @Input({ required: true }) integrations!: IntegrationsGridSection; + @HostBinding("class") clazz = "section"; +} diff --git a/website/src/framework/link-panels/link-panels.component.html b/website/src/framework/link-panels/link-panels.component.html index 4f33cc1f7..beb7b9aff 100644 --- a/website/src/framework/link-panels/link-panels.component.html +++ b/website/src/framework/link-panels/link-panels.component.html @@ -1,12 +1,12 @@ @for (panel of panels; track panel) { - + } diff --git a/website/src/framework/link-panels/link-panels.component.scss b/website/src/framework/link-panels/link-panels.component.scss index 973bb604f..39fbee6e9 100644 --- a/website/src/framework/link-panels/link-panels.component.scss +++ b/website/src/framework/link-panels/link-panels.component.scss @@ -1,3 +1,4 @@ +@use "colors"; @use "media"; @use "shapes"; @import "mixins"; @@ -5,11 +6,11 @@ :host { display: flex; justify-content: space-between; - gap: 80px; + gap: 40px; margin-top: 24px; @media (min-width: media.$min-width-tablet) and (max-width: media.$max-width-tablet) { - gap: 64px; + gap: 32px; } } @@ -20,6 +21,14 @@ align-items: flex-start; position: relative; gap: 12px; + @include light-source-gradient(colors.$purple, colors.$black-purple); + + &.hoverable:hover { + @include light-source-gradient(rgba(colors.$light-purple, 0.6), colors.$deep-purple); + } + + transition: background 100ms ease, flex 300ms ease-in-out, transform 100ms ease; + cursor: pointer; &:not(.hoverable) { cursor: initial; @@ -30,6 +39,11 @@ height: 72px; } + i { + font-size: 54px; + margin-bottom: 12px; + } + &.lc-card-cols-3 { h3 { @include line-clamp(1); diff --git a/website/src/framework/link-panels/link-panels.component.ts b/website/src/framework/link-panels/link-panels.component.ts index c2c4641f0..742ad6340 100644 --- a/website/src/framework/link-panels/link-panels.component.ts +++ b/website/src/framework/link-panels/link-panels.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, HostBinding, Input } from "@angular/core"; -import { Lecture, LinkPanelWithIcon, ResourceLink } from "typedb-web-schema"; +import { Lecture, LinkPanel, ResourceLink } from "typedb-web-schema"; import { AspectRatioComponent } from "../aspect-ratio/aspect-ratio.component"; import { ButtonComponent } from "../button/button.component"; @@ -19,11 +19,11 @@ import { sanitiseHtmlID } from "../util"; imports: [LinkDirective, RichTextComponent], }) export class LinkPanelsComponent { - @Input() panels!: LinkPanelWithIcon[]; + @Input() panels!: LinkPanel[]; @Input({ required: true }) sectionId!: string; @HostBinding("class") clazz = "section"; - panelID(panel: LinkPanelWithIcon) { + panelID(panel: LinkPanel) { return `${this.sectionId}_${sanitiseHtmlID(panel.title)}`; } } diff --git a/website/src/page/home/home-page.component.html b/website/src/page/home/home-page.component.html index d545e0dcf..d7982b8be 100644 --- a/website/src/page/home/home-page.component.html +++ b/website/src/page/home/home-page.component.html @@ -3,7 +3,7 @@
@if (page.introSection) { - + } @if (page.hotTopicsSection) { @@ -14,38 +14,39 @@ } @for (impactSection of page.impactSections; track impactSection; let idx = $index) { - + } @if (page.resourcesSection) { - - + + } @if (page.toolingSection) { - + } @if (page.driversSection) { - + + + + + } @if (page.cloudSection) { - - + + } @if (page.communitySection) { - - + + } @if (page.testimonialsSection) { - - + + } @if (page.conclusionSection) { - + }
} diff --git a/website/src/page/home/home-page.component.scss b/website/src/page/home/home-page.component.scss index 2ed199f44..933a89ab7 100644 --- a/website/src/page/home/home-page.component.scss +++ b/website/src/page/home/home-page.component.scss @@ -10,3 +10,6 @@ td-section-core.td-intro ::ng-deep td-heading-with-highlights h1 { animation: 8s linear 0s infinite flow; } +td-link-panels { + margin-top: var(--section-margin); +} diff --git a/website/src/page/home/home-page.component.ts b/website/src/page/home/home-page.component.ts index 6da30c052..e738b7216 100644 --- a/website/src/page/home/home-page.component.ts +++ b/website/src/page/home/home-page.component.ts @@ -22,6 +22,7 @@ import { ContentTabsComponent } from "../../framework/content-tabs/content-tabs. import { FeatureFusionComponent } from "../../framework/feature-fusion/feature-fusion.component"; import { FeatureGridComponent } from "../../framework/feature-grid/feature-grid.component"; import { HotTopicsComponent } from "../../framework/hot-topics/hot-topics.component"; +import { IntegrationsGridComponent } from "../../framework/integrations-grid/integrations-grid.component"; import { KeyPointTableComponent } from "../../framework/key-point/key-point.component"; import { LinkPanelsComponent, ResourcePanelsComponent } from "../../framework/link-panels/link-panels.component"; import { SectionCoreComponent } from "../../framework/section/section-core.component"; @@ -49,6 +50,7 @@ import { PageComponentBase } from "../page-component-base"; HotTopicsComponent, SectionCoreComponent, FeatureFusionComponent, + IntegrationsGridComponent, ], }) export class HomePageComponent extends PageComponentBase { diff --git a/website/src/styles/styles.scss b/website/src/styles/styles.scss index b36dc6c7d..54374fc77 100644 --- a/website/src/styles/styles.scss +++ b/website/src/styles/styles.scss @@ -42,15 +42,11 @@ article { > .article-content { display: flex; flex-direction: column; - padding-bottom: 144px; + padding-bottom: 5em; position: relative; - &.article-content-no-planet { - padding-bottom: 5em; - } - @media (max-width: media.$max-width-mobile) { - padding-bottom: 64px; + padding-bottom: 24px; } } }