diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..dfe07704 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore index 9a382ba3..904e6146 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,580 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local +node_modules/.bin/nanoid +node_modules/.bin/nanoid.cmd +node_modules/.bin/nanoid.ps1 +node_modules/.package-lock.json +node_modules/@emotion/is-prop-valid/dist/declarations/src/index.d.ts +node_modules/@emotion/is-prop-valid/dist/declarations/types/index.d.ts +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.d.mts +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.d.mts.map +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.d.ts +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.d.ts.map +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.default.d.ts +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.default.js +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.dev.js +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.js +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.js.flow +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.mjs +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.cjs.prod.js +node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +node_modules/@emotion/is-prop-valid/LICENSE +node_modules/@emotion/is-prop-valid/package.json +node_modules/@emotion/is-prop-valid/README.md +node_modules/@emotion/is-prop-valid/src/index.d.ts +node_modules/@emotion/is-prop-valid/src/index.js +node_modules/@emotion/is-prop-valid/src/props.js +node_modules/@emotion/is-prop-valid/types/index.d.ts +node_modules/@emotion/memoize/dist/declarations/src/index.d.ts +node_modules/@emotion/memoize/dist/declarations/types/index.d.ts +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.d.mts +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.d.mts.map +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.d.ts +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.d.ts.map +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.default.d.ts +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.default.js +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.dev.js +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.js.flow +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.mjs +node_modules/@emotion/memoize/dist/emotion-memoize.cjs.prod.js +node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +node_modules/@emotion/memoize/LICENSE +node_modules/@emotion/memoize/package.json +node_modules/@emotion/memoize/src/index.d.ts +node_modules/@emotion/memoize/src/index.js +node_modules/@emotion/memoize/types/index.d.ts +node_modules/@emotion/unitless/dist/declarations/src/index.d.ts +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.d.mts +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.d.mts.map +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.d.ts +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.d.ts.map +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.default.d.ts +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.default.js +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.dev.js +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.js.flow +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.mjs +node_modules/@emotion/unitless/dist/emotion-unitless.cjs.prod.js +node_modules/@emotion/unitless/dist/emotion-unitless.esm.js +node_modules/@emotion/unitless/LICENSE +node_modules/@emotion/unitless/package.json +node_modules/@emotion/unitless/README.md +node_modules/@emotion/unitless/src/index.d.ts +node_modules/@emotion/unitless/src/index.js +node_modules/@types/stylis/index.d.ts +node_modules/@types/stylis/LICENSE +node_modules/@types/stylis/package.json +node_modules/@types/stylis/README.md +node_modules/camelize/.eslintrc +node_modules/camelize/.github/FUNDING.yml +node_modules/camelize/CHANGELOG.md +node_modules/camelize/example/camel.js +node_modules/camelize/index.js +node_modules/camelize/LICENSE +node_modules/camelize/package.json +node_modules/camelize/README.md +node_modules/camelize/test/camel.js +node_modules/css-color-keywords/colors.json +node_modules/css-color-keywords/index.js +node_modules/css-color-keywords/LICENSE +node_modules/css-color-keywords/package.json +node_modules/css-color-keywords/README.md +node_modules/css-to-react-native/index.d.ts +node_modules/css-to-react-native/index.js +node_modules/css-to-react-native/LICENSE.md +node_modules/css-to-react-native/package.json +node_modules/css-to-react-native/README.md +node_modules/css-to-react-native/src/__tests__/aspectRatio.js +node_modules/css-to-react-native/src/__tests__/border.js +node_modules/css-to-react-native/src/__tests__/borderColor.js +node_modules/css-to-react-native/src/__tests__/boxModel.js +node_modules/css-to-react-native/src/__tests__/boxShadow.js +node_modules/css-to-react-native/src/__tests__/colors.js +node_modules/css-to-react-native/src/__tests__/flex.js +node_modules/css-to-react-native/src/__tests__/flexFlow.js +node_modules/css-to-react-native/src/__tests__/font.js +node_modules/css-to-react-native/src/__tests__/fontFamily.js +node_modules/css-to-react-native/src/__tests__/fontVariant.js +node_modules/css-to-react-native/src/__tests__/fontWeight.js +node_modules/css-to-react-native/src/__tests__/index.js +node_modules/css-to-react-native/src/__tests__/placeContent.js +node_modules/css-to-react-native/src/__tests__/shadowOffsets.js +node_modules/css-to-react-native/src/__tests__/textDecoration.js +node_modules/css-to-react-native/src/__tests__/textDecorationLine.js +node_modules/css-to-react-native/src/__tests__/textShadow.js +node_modules/css-to-react-native/src/__tests__/transform.js +node_modules/css-to-react-native/src/__tests__/units.js +node_modules/css-to-react-native/src/devPropertiesWithoutUnitsRegExp.js +node_modules/css-to-react-native/src/index.js +node_modules/css-to-react-native/src/TokenStream.js +node_modules/css-to-react-native/src/tokenTypes.js +node_modules/css-to-react-native/src/transforms/aspectRatio.js +node_modules/css-to-react-native/src/transforms/border.js +node_modules/css-to-react-native/src/transforms/boxShadow.js +node_modules/css-to-react-native/src/transforms/flex.js +node_modules/css-to-react-native/src/transforms/flexFlow.js +node_modules/css-to-react-native/src/transforms/font.js +node_modules/css-to-react-native/src/transforms/fontFamily.js +node_modules/css-to-react-native/src/transforms/fontVariant.js +node_modules/css-to-react-native/src/transforms/index.js +node_modules/css-to-react-native/src/transforms/placeContent.js +node_modules/css-to-react-native/src/transforms/textDecoration.js +node_modules/css-to-react-native/src/transforms/textDecorationLine.js +node_modules/css-to-react-native/src/transforms/textShadow.js +node_modules/css-to-react-native/src/transforms/transform.js +node_modules/css-to-react-native/src/transforms/util.js +node_modules/csstype/index.d.ts +node_modules/csstype/index.js.flow +node_modules/csstype/LICENSE +node_modules/csstype/package.json +node_modules/csstype/README.md +node_modules/nanoid/async/index.browser.cjs +node_modules/nanoid/async/index.browser.js +node_modules/nanoid/async/index.cjs +node_modules/nanoid/async/index.d.ts +node_modules/nanoid/async/index.js +node_modules/nanoid/async/index.native.js +node_modules/nanoid/async/package.json +node_modules/nanoid/bin/nanoid.cjs +node_modules/nanoid/index.browser.cjs +node_modules/nanoid/index.browser.js +node_modules/nanoid/index.cjs +node_modules/nanoid/index.d.cts +node_modules/nanoid/index.d.ts +node_modules/nanoid/index.js +node_modules/nanoid/LICENSE +node_modules/nanoid/nanoid.js +node_modules/nanoid/non-secure/index.cjs +node_modules/nanoid/non-secure/index.d.ts +node_modules/nanoid/non-secure/index.js +node_modules/nanoid/non-secure/package.json +node_modules/nanoid/package.json +node_modules/nanoid/README.md +node_modules/nanoid/url-alphabet/index.cjs +node_modules/nanoid/url-alphabet/index.js +node_modules/nanoid/url-alphabet/package.json +node_modules/picocolors/LICENSE +node_modules/picocolors/package.json +node_modules/picocolors/picocolors.browser.js +node_modules/picocolors/picocolors.d.ts +node_modules/picocolors/picocolors.js +node_modules/picocolors/README.md +node_modules/picocolors/types.d.ts +node_modules/postcss-value-parser/lib/index.d.ts +node_modules/postcss-value-parser/lib/index.js +node_modules/postcss-value-parser/lib/parse.js +node_modules/postcss-value-parser/lib/stringify.js +node_modules/postcss-value-parser/lib/unit.js +node_modules/postcss-value-parser/lib/walk.js +node_modules/postcss-value-parser/LICENSE +node_modules/postcss-value-parser/package.json +node_modules/postcss-value-parser/README.md +node_modules/postcss/lib/at-rule.d.ts +node_modules/postcss/lib/at-rule.js +node_modules/postcss/lib/comment.d.ts +node_modules/postcss/lib/comment.js +node_modules/postcss/lib/container.d.ts +node_modules/postcss/lib/container.js +node_modules/postcss/lib/css-syntax-error.d.ts +node_modules/postcss/lib/css-syntax-error.js +node_modules/postcss/lib/declaration.d.ts +node_modules/postcss/lib/declaration.js +node_modules/postcss/lib/document.d.ts +node_modules/postcss/lib/document.js +node_modules/postcss/lib/fromJSON.d.ts +node_modules/postcss/lib/fromJSON.js +node_modules/postcss/lib/input.d.ts +node_modules/postcss/lib/input.js +node_modules/postcss/lib/lazy-result.d.ts +node_modules/postcss/lib/lazy-result.js +node_modules/postcss/lib/list.d.ts +node_modules/postcss/lib/list.js +node_modules/postcss/lib/map-generator.js +node_modules/postcss/lib/no-work-result.d.ts +node_modules/postcss/lib/no-work-result.js +node_modules/postcss/lib/node.d.ts +node_modules/postcss/lib/node.js +node_modules/postcss/lib/parse.d.ts +node_modules/postcss/lib/parse.js +node_modules/postcss/lib/parser.js +node_modules/postcss/lib/postcss.d.mts +node_modules/postcss/lib/postcss.d.ts +node_modules/postcss/lib/postcss.js +node_modules/postcss/lib/postcss.mjs +node_modules/postcss/lib/previous-map.d.ts +node_modules/postcss/lib/previous-map.js +node_modules/postcss/lib/processor.d.ts +node_modules/postcss/lib/processor.js +node_modules/postcss/lib/result.d.ts +node_modules/postcss/lib/result.js +node_modules/postcss/lib/root.d.ts +node_modules/postcss/lib/root.js +node_modules/postcss/lib/rule.d.ts +node_modules/postcss/lib/rule.js +node_modules/postcss/lib/stringifier.d.ts +node_modules/postcss/lib/stringifier.js +node_modules/postcss/lib/stringify.d.ts +node_modules/postcss/lib/stringify.js +node_modules/postcss/lib/symbols.js +node_modules/postcss/lib/terminal-highlight.js +node_modules/postcss/lib/tokenize.js +node_modules/postcss/lib/warn-once.js +node_modules/postcss/lib/warning.d.ts +node_modules/postcss/lib/warning.js +node_modules/postcss/LICENSE +node_modules/postcss/package.json +node_modules/postcss/README.md +node_modules/react-dom/cjs/react-dom-client.development.js +node_modules/react-dom/cjs/react-dom-client.production.js +node_modules/react-dom/cjs/react-dom-profiling.development.js +node_modules/react-dom/cjs/react-dom-profiling.profiling.js +node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js +node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +node_modules/react-dom/cjs/react-dom-server-legacy.node.development.js +node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +node_modules/react-dom/cjs/react-dom-server.browser.development.js +node_modules/react-dom/cjs/react-dom-server.browser.production.js +node_modules/react-dom/cjs/react-dom-server.bun.development.js +node_modules/react-dom/cjs/react-dom-server.bun.production.js +node_modules/react-dom/cjs/react-dom-server.edge.development.js +node_modules/react-dom/cjs/react-dom-server.edge.production.js +node_modules/react-dom/cjs/react-dom-server.node.development.js +node_modules/react-dom/cjs/react-dom-server.node.production.js +node_modules/react-dom/cjs/react-dom-test-utils.development.js +node_modules/react-dom/cjs/react-dom-test-utils.production.js +node_modules/react-dom/cjs/react-dom.development.js +node_modules/react-dom/cjs/react-dom.production.js +node_modules/react-dom/cjs/react-dom.react-server.development.js +node_modules/react-dom/cjs/react-dom.react-server.production.js +node_modules/react-dom/client.js +node_modules/react-dom/client.react-server.js +node_modules/react-dom/index.js +node_modules/react-dom/LICENSE +node_modules/react-dom/package.json +node_modules/react-dom/profiling.js +node_modules/react-dom/profiling.react-server.js +node_modules/react-dom/react-dom.react-server.js +node_modules/react-dom/README.md +node_modules/react-dom/server.browser.js +node_modules/react-dom/server.bun.js +node_modules/react-dom/server.edge.js +node_modules/react-dom/server.js +node_modules/react-dom/server.node.js +node_modules/react-dom/server.react-server.js +node_modules/react-dom/static.browser.js +node_modules/react-dom/static.edge.js +node_modules/react-dom/static.js +node_modules/react-dom/static.node.js +node_modules/react-dom/static.react-server.js +node_modules/react-dom/test-utils.js +node_modules/react/cjs/react-compiler-runtime.development.js +node_modules/react/cjs/react-compiler-runtime.production.js +node_modules/react/cjs/react-compiler-runtime.profiling.js +node_modules/react/cjs/react-jsx-dev-runtime.development.js +node_modules/react/cjs/react-jsx-dev-runtime.production.js +node_modules/react/cjs/react-jsx-dev-runtime.profiling.js +node_modules/react/cjs/react-jsx-dev-runtime.react-server.development.js +node_modules/react/cjs/react-jsx-dev-runtime.react-server.production.js +node_modules/react/cjs/react-jsx-runtime.development.js +node_modules/react/cjs/react-jsx-runtime.production.js +node_modules/react/cjs/react-jsx-runtime.profiling.js +node_modules/react/cjs/react-jsx-runtime.react-server.development.js +node_modules/react/cjs/react-jsx-runtime.react-server.production.js +node_modules/react/cjs/react.development.js +node_modules/react/cjs/react.production.js +node_modules/react/cjs/react.react-server.development.js +node_modules/react/cjs/react.react-server.production.js +node_modules/react/compiler-runtime.js +node_modules/react/index.js +node_modules/react/jsx-dev-runtime.js +node_modules/react/jsx-dev-runtime.react-server.js +node_modules/react/jsx-runtime.js +node_modules/react/jsx-runtime.react-server.js +node_modules/react/LICENSE +node_modules/react/package.json +node_modules/react/react.react-server.js +node_modules/react/README.md +node_modules/scheduler/cjs/scheduler-unstable_mock.development.js +node_modules/scheduler/cjs/scheduler-unstable_mock.production.js +node_modules/scheduler/cjs/scheduler-unstable_post_task.development.js +node_modules/scheduler/cjs/scheduler-unstable_post_task.production.js +node_modules/scheduler/cjs/scheduler.development.js +node_modules/scheduler/cjs/scheduler.native.development.js +node_modules/scheduler/cjs/scheduler.native.production.js +node_modules/scheduler/cjs/scheduler.production.js +node_modules/scheduler/index.js +node_modules/scheduler/index.native.js +node_modules/scheduler/LICENSE +node_modules/scheduler/package.json +node_modules/scheduler/README.md +node_modules/scheduler/unstable_mock.js +node_modules/scheduler/unstable_post_task.js +node_modules/shallowequal/index.js +node_modules/shallowequal/index.js.flow +node_modules/shallowequal/index.original.js +node_modules/shallowequal/LICENSE +node_modules/shallowequal/package.json +node_modules/shallowequal/README.md +node_modules/source-map-js/lib/array-set.js +node_modules/source-map-js/lib/base64-vlq.js +node_modules/source-map-js/lib/base64.js +node_modules/source-map-js/lib/binary-search.js +node_modules/source-map-js/lib/mapping-list.js +node_modules/source-map-js/lib/quick-sort.js +node_modules/source-map-js/lib/source-map-consumer.d.ts +node_modules/source-map-js/lib/source-map-consumer.js +node_modules/source-map-js/lib/source-map-generator.d.ts +node_modules/source-map-js/lib/source-map-generator.js +node_modules/source-map-js/lib/source-node.d.ts +node_modules/source-map-js/lib/source-node.js +node_modules/source-map-js/lib/util.js +node_modules/source-map-js/LICENSE +node_modules/source-map-js/package.json +node_modules/source-map-js/README.md +node_modules/source-map-js/source-map.d.ts +node_modules/source-map-js/source-map.js +node_modules/styled-components/dist/base.d.ts +node_modules/styled-components/dist/constants.d.ts +node_modules/styled-components/dist/constructors/constructWithOptions.d.ts +node_modules/styled-components/dist/constructors/createGlobalStyle.d.ts +node_modules/styled-components/dist/constructors/css.d.ts +node_modules/styled-components/dist/constructors/keyframes.d.ts +node_modules/styled-components/dist/constructors/styled.d.ts +node_modules/styled-components/dist/hoc/withTheme.d.ts +node_modules/styled-components/dist/hoc/withTheme.spec.d.ts +node_modules/styled-components/dist/index-standalone.d.ts +node_modules/styled-components/dist/index.d.ts +node_modules/styled-components/dist/models/ComponentStyle.d.ts +node_modules/styled-components/dist/models/GlobalStyle.d.ts +node_modules/styled-components/dist/models/InlineStyle.d.ts +node_modules/styled-components/dist/models/Keyframes.d.ts +node_modules/styled-components/dist/models/ServerStyleSheet.d.ts +node_modules/styled-components/dist/models/StyledComponent.d.ts +node_modules/styled-components/dist/models/StyledNativeComponent.d.ts +node_modules/styled-components/dist/models/StyleSheetManager.d.ts +node_modules/styled-components/dist/models/ThemeProvider.d.ts +node_modules/styled-components/dist/native/index.d.ts +node_modules/styled-components/dist/secretInternals.d.ts +node_modules/styled-components/dist/sheet/dom.d.ts +node_modules/styled-components/dist/sheet/GroupedTag.d.ts +node_modules/styled-components/dist/sheet/GroupIDAllocator.d.ts +node_modules/styled-components/dist/sheet/index.d.ts +node_modules/styled-components/dist/sheet/Rehydration.d.ts +node_modules/styled-components/dist/sheet/Sheet.d.ts +node_modules/styled-components/dist/sheet/Tag.d.ts +node_modules/styled-components/dist/sheet/types.d.ts +node_modules/styled-components/dist/styled-components.browser.cjs.js +node_modules/styled-components/dist/styled-components.browser.cjs.js.map +node_modules/styled-components/dist/styled-components.browser.esm.js +node_modules/styled-components/dist/styled-components.browser.esm.js.map +node_modules/styled-components/dist/styled-components.cjs.js +node_modules/styled-components/dist/styled-components.cjs.js.map +node_modules/styled-components/dist/styled-components.esm.js +node_modules/styled-components/dist/styled-components.esm.js.map +node_modules/styled-components/dist/styled-components.js +node_modules/styled-components/dist/styled-components.js.map +node_modules/styled-components/dist/styled-components.min.js +node_modules/styled-components/dist/styled-components.min.js.map +node_modules/styled-components/dist/test/globals.d.ts +node_modules/styled-components/dist/test/utils.d.ts +node_modules/styled-components/dist/test/veryLargeUnionType.d.ts +node_modules/styled-components/dist/types.d.ts +node_modules/styled-components/dist/utils/addUnitIfNeeded.d.ts +node_modules/styled-components/dist/utils/checkDynamicCreation.d.ts +node_modules/styled-components/dist/utils/createWarnTooManyClasses.d.ts +node_modules/styled-components/dist/utils/determineTheme.d.ts +node_modules/styled-components/dist/utils/domElements.d.ts +node_modules/styled-components/dist/utils/empties.d.ts +node_modules/styled-components/dist/utils/error.d.ts +node_modules/styled-components/dist/utils/errors.d.ts +node_modules/styled-components/dist/utils/escape.d.ts +node_modules/styled-components/dist/utils/flatten.d.ts +node_modules/styled-components/dist/utils/generateAlphabeticName.d.ts +node_modules/styled-components/dist/utils/generateComponentId.d.ts +node_modules/styled-components/dist/utils/generateDisplayName.d.ts +node_modules/styled-components/dist/utils/getComponentName.d.ts +node_modules/styled-components/dist/utils/hash.d.ts +node_modules/styled-components/dist/utils/hoist.d.ts +node_modules/styled-components/dist/utils/hyphenateStyleName.d.ts +node_modules/styled-components/dist/utils/interleave.d.ts +node_modules/styled-components/dist/utils/isFunction.d.ts +node_modules/styled-components/dist/utils/isPlainObject.d.ts +node_modules/styled-components/dist/utils/isStatelessFunction.d.ts +node_modules/styled-components/dist/utils/isStaticRules.d.ts +node_modules/styled-components/dist/utils/isStyledComponent.d.ts +node_modules/styled-components/dist/utils/isTag.d.ts +node_modules/styled-components/dist/utils/joinStrings.d.ts +node_modules/styled-components/dist/utils/mixinDeep.d.ts +node_modules/styled-components/dist/utils/nonce.d.ts +node_modules/styled-components/dist/utils/setToString.d.ts +node_modules/styled-components/dist/utils/stylis.d.ts +node_modules/styled-components/LICENSE +node_modules/styled-components/native/dist/base.d.ts +node_modules/styled-components/native/dist/constants.d.ts +node_modules/styled-components/native/dist/constructors/constructWithOptions.d.ts +node_modules/styled-components/native/dist/constructors/createGlobalStyle.d.ts +node_modules/styled-components/native/dist/constructors/css.d.ts +node_modules/styled-components/native/dist/constructors/keyframes.d.ts +node_modules/styled-components/native/dist/constructors/styled.d.ts +node_modules/styled-components/native/dist/dist/base.d.ts +node_modules/styled-components/native/dist/dist/constants.d.ts +node_modules/styled-components/native/dist/dist/constructors/constructWithOptions.d.ts +node_modules/styled-components/native/dist/dist/constructors/createGlobalStyle.d.ts +node_modules/styled-components/native/dist/dist/constructors/css.d.ts +node_modules/styled-components/native/dist/dist/constructors/keyframes.d.ts +node_modules/styled-components/native/dist/dist/constructors/styled.d.ts +node_modules/styled-components/native/dist/dist/hoc/withTheme.d.ts +node_modules/styled-components/native/dist/dist/hoc/withTheme.spec.d.ts +node_modules/styled-components/native/dist/dist/index-standalone.d.ts +node_modules/styled-components/native/dist/dist/index.d.ts +node_modules/styled-components/native/dist/dist/models/ComponentStyle.d.ts +node_modules/styled-components/native/dist/dist/models/GlobalStyle.d.ts +node_modules/styled-components/native/dist/dist/models/InlineStyle.d.ts +node_modules/styled-components/native/dist/dist/models/Keyframes.d.ts +node_modules/styled-components/native/dist/dist/models/ServerStyleSheet.d.ts +node_modules/styled-components/native/dist/dist/models/StyledComponent.d.ts +node_modules/styled-components/native/dist/dist/models/StyledNativeComponent.d.ts +node_modules/styled-components/native/dist/dist/models/StyleSheetManager.d.ts +node_modules/styled-components/native/dist/dist/models/ThemeProvider.d.ts +node_modules/styled-components/native/dist/dist/native/index.d.ts +node_modules/styled-components/native/dist/dist/secretInternals.d.ts +node_modules/styled-components/native/dist/dist/sheet/dom.d.ts +node_modules/styled-components/native/dist/dist/sheet/GroupedTag.d.ts +node_modules/styled-components/native/dist/dist/sheet/GroupIDAllocator.d.ts +node_modules/styled-components/native/dist/dist/sheet/index.d.ts +node_modules/styled-components/native/dist/dist/sheet/Rehydration.d.ts +node_modules/styled-components/native/dist/dist/sheet/Sheet.d.ts +node_modules/styled-components/native/dist/dist/sheet/Tag.d.ts +node_modules/styled-components/native/dist/dist/sheet/types.d.ts +node_modules/styled-components/native/dist/dist/test/globals.d.ts +node_modules/styled-components/native/dist/dist/test/utils.d.ts +node_modules/styled-components/native/dist/dist/test/veryLargeUnionType.d.ts +node_modules/styled-components/native/dist/dist/types.d.ts +node_modules/styled-components/native/dist/dist/utils/addUnitIfNeeded.d.ts +node_modules/styled-components/native/dist/dist/utils/checkDynamicCreation.d.ts +node_modules/styled-components/native/dist/dist/utils/createWarnTooManyClasses.d.ts +node_modules/styled-components/native/dist/dist/utils/determineTheme.d.ts +node_modules/styled-components/native/dist/dist/utils/domElements.d.ts +node_modules/styled-components/native/dist/dist/utils/empties.d.ts +node_modules/styled-components/native/dist/dist/utils/error.d.ts +node_modules/styled-components/native/dist/dist/utils/errors.d.ts +node_modules/styled-components/native/dist/dist/utils/escape.d.ts +node_modules/styled-components/native/dist/dist/utils/flatten.d.ts +node_modules/styled-components/native/dist/dist/utils/generateAlphabeticName.d.ts +node_modules/styled-components/native/dist/dist/utils/generateComponentId.d.ts +node_modules/styled-components/native/dist/dist/utils/generateDisplayName.d.ts +node_modules/styled-components/native/dist/dist/utils/getComponentName.d.ts +node_modules/styled-components/native/dist/dist/utils/hash.d.ts +node_modules/styled-components/native/dist/dist/utils/hoist.d.ts +node_modules/styled-components/native/dist/dist/utils/hyphenateStyleName.d.ts +node_modules/styled-components/native/dist/dist/utils/interleave.d.ts +node_modules/styled-components/native/dist/dist/utils/isFunction.d.ts +node_modules/styled-components/native/dist/dist/utils/isPlainObject.d.ts +node_modules/styled-components/native/dist/dist/utils/isStatelessFunction.d.ts +node_modules/styled-components/native/dist/dist/utils/isStaticRules.d.ts +node_modules/styled-components/native/dist/dist/utils/isStyledComponent.d.ts +node_modules/styled-components/native/dist/dist/utils/isTag.d.ts +node_modules/styled-components/native/dist/dist/utils/joinStrings.d.ts +node_modules/styled-components/native/dist/dist/utils/mixinDeep.d.ts +node_modules/styled-components/native/dist/dist/utils/nonce.d.ts +node_modules/styled-components/native/dist/dist/utils/setToString.d.ts +node_modules/styled-components/native/dist/dist/utils/stylis.d.ts +node_modules/styled-components/native/dist/hoc/withTheme.d.ts +node_modules/styled-components/native/dist/hoc/withTheme.spec.d.ts +node_modules/styled-components/native/dist/index-standalone.d.ts +node_modules/styled-components/native/dist/index.d.ts +node_modules/styled-components/native/dist/models/ComponentStyle.d.ts +node_modules/styled-components/native/dist/models/GlobalStyle.d.ts +node_modules/styled-components/native/dist/models/InlineStyle.d.ts +node_modules/styled-components/native/dist/models/Keyframes.d.ts +node_modules/styled-components/native/dist/models/ServerStyleSheet.d.ts +node_modules/styled-components/native/dist/models/StyledComponent.d.ts +node_modules/styled-components/native/dist/models/StyledNativeComponent.d.ts +node_modules/styled-components/native/dist/models/StyleSheetManager.d.ts +node_modules/styled-components/native/dist/models/ThemeProvider.d.ts +node_modules/styled-components/native/dist/native/index.d.ts +node_modules/styled-components/native/dist/secretInternals.d.ts +node_modules/styled-components/native/dist/sheet/dom.d.ts +node_modules/styled-components/native/dist/sheet/GroupedTag.d.ts +node_modules/styled-components/native/dist/sheet/GroupIDAllocator.d.ts +node_modules/styled-components/native/dist/sheet/index.d.ts +node_modules/styled-components/native/dist/sheet/Rehydration.d.ts +node_modules/styled-components/native/dist/sheet/Sheet.d.ts +node_modules/styled-components/native/dist/sheet/Tag.d.ts +node_modules/styled-components/native/dist/sheet/types.d.ts +node_modules/styled-components/native/dist/styled-components.native.cjs.js +node_modules/styled-components/native/dist/styled-components.native.cjs.js.map +node_modules/styled-components/native/dist/styled-components.native.esm.js +node_modules/styled-components/native/dist/styled-components.native.esm.js.map +node_modules/styled-components/native/dist/test/globals.d.ts +node_modules/styled-components/native/dist/test/utils.d.ts +node_modules/styled-components/native/dist/test/veryLargeUnionType.d.ts +node_modules/styled-components/native/dist/types.d.ts +node_modules/styled-components/native/dist/utils/addUnitIfNeeded.d.ts +node_modules/styled-components/native/dist/utils/checkDynamicCreation.d.ts +node_modules/styled-components/native/dist/utils/createWarnTooManyClasses.d.ts +node_modules/styled-components/native/dist/utils/determineTheme.d.ts +node_modules/styled-components/native/dist/utils/domElements.d.ts +node_modules/styled-components/native/dist/utils/empties.d.ts +node_modules/styled-components/native/dist/utils/error.d.ts +node_modules/styled-components/native/dist/utils/errors.d.ts +node_modules/styled-components/native/dist/utils/escape.d.ts +node_modules/styled-components/native/dist/utils/flatten.d.ts +node_modules/styled-components/native/dist/utils/generateAlphabeticName.d.ts +node_modules/styled-components/native/dist/utils/generateComponentId.d.ts +node_modules/styled-components/native/dist/utils/generateDisplayName.d.ts +node_modules/styled-components/native/dist/utils/getComponentName.d.ts +node_modules/styled-components/native/dist/utils/hash.d.ts +node_modules/styled-components/native/dist/utils/hoist.d.ts +node_modules/styled-components/native/dist/utils/hyphenateStyleName.d.ts +node_modules/styled-components/native/dist/utils/interleave.d.ts +node_modules/styled-components/native/dist/utils/isFunction.d.ts +node_modules/styled-components/native/dist/utils/isPlainObject.d.ts +node_modules/styled-components/native/dist/utils/isStatelessFunction.d.ts +node_modules/styled-components/native/dist/utils/isStaticRules.d.ts +node_modules/styled-components/native/dist/utils/isStyledComponent.d.ts +node_modules/styled-components/native/dist/utils/isTag.d.ts +node_modules/styled-components/native/dist/utils/joinStrings.d.ts +node_modules/styled-components/native/dist/utils/mixinDeep.d.ts +node_modules/styled-components/native/dist/utils/nonce.d.ts +node_modules/styled-components/native/dist/utils/setToString.d.ts +node_modules/styled-components/native/dist/utils/stylis.d.ts +node_modules/styled-components/native/package.json +node_modules/styled-components/package.json +node_modules/styled-components/README.md +node_modules/styled-components/test-utils/index.ts +node_modules/styled-components/test-utils/setupTestFramework.ts +node_modules/stylis/dist/stylis.mjs +node_modules/stylis/dist/stylis.mjs.map +node_modules/stylis/dist/umd/package.json +node_modules/stylis/dist/umd/stylis.js +node_modules/stylis/dist/umd/stylis.js.map +node_modules/stylis/index.js +node_modules/stylis/LICENSE +node_modules/stylis/package.json +node_modules/stylis/README.md +node_modules/stylis/src/Enum.js +node_modules/stylis/src/Middleware.js +node_modules/stylis/src/Parser.js +node_modules/stylis/src/Prefixer.js +node_modules/stylis/src/Serializer.js +node_modules/stylis/src/Tokenizer.js +node_modules/stylis/src/Utility.js +node_modules/tslib/CopyrightNotice.txt +node_modules/tslib/LICENSE.txt +node_modules/tslib/modules/index.d.ts +node_modules/tslib/modules/index.js +node_modules/tslib/modules/package.json +node_modules/tslib/package.json +node_modules/tslib/README.md +node_modules/tslib/SECURITY.md +node_modules/tslib/tslib.d.ts +node_modules/tslib/tslib.es6.html +node_modules/tslib/tslib.es6.js +node_modules/tslib/tslib.es6.mjs +node_modules/tslib/tslib.html +node_modules/tslib/tslib.js package-lock.json - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? \ No newline at end of file +package.json +script.js +test.html +node_modules \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..6b665aaa --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} diff --git a/README.md b/README.md deleted file mode 100644 index 200f4282..00000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# Portfolio diff --git a/dist/assets/index-BEspto0Q.js b/dist/assets/index-BEspto0Q.js new file mode 100644 index 00000000..377b43a2 --- /dev/null +++ b/dist/assets/index-BEspto0Q.js @@ -0,0 +1,600 @@ +(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))r(p);new MutationObserver(p=>{for(const z of p)if(z.type==="childList")for(const D of z.addedNodes)D.tagName==="LINK"&&D.rel==="modulepreload"&&r(D)}).observe(document,{childList:!0,subtree:!0});function s(p){const z={};return p.integrity&&(z.integrity=p.integrity),p.referrerPolicy&&(z.referrerPolicy=p.referrerPolicy),p.crossOrigin==="use-credentials"?z.credentials="include":p.crossOrigin==="anonymous"?z.credentials="omit":z.credentials="same-origin",z}function r(p){if(p.ep)return;p.ep=!0;const z=s(p);fetch(p.href,z)}})();function B0(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Kf={exports:{}},Qu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var f0;function Ry(){if(f0)return Qu;f0=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function s(r,p,z){var D=null;if(z!==void 0&&(D=""+z),p.key!==void 0&&(D=""+p.key),"key"in p){z={};for(var q in p)q!=="key"&&(z[q]=p[q])}else z=p;return p=z.ref,{$$typeof:i,type:r,key:D,ref:p!==void 0?p:null,props:z}}return Qu.Fragment=o,Qu.jsx=s,Qu.jsxs=s,Qu}var r0;function Uy(){return r0||(r0=1,Kf.exports=Ry()),Kf.exports}var R=Uy(),Jf={exports:{}},I={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var o0;function jy(){if(o0)return I;o0=1;var i=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),p=Symbol.for("react.profiler"),z=Symbol.for("react.consumer"),D=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),U=Symbol.for("react.lazy"),G=Symbol.iterator;function X(h){return h===null||typeof h!="object"?null:(h=G&&h[G]||h["@@iterator"],typeof h=="function"?h:null)}var $={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},tt=Object.assign,rt={};function vt(h,O,j){this.props=h,this.context=O,this.refs=rt,this.updater=j||$}vt.prototype.isReactComponent={},vt.prototype.setState=function(h,O){if(typeof h!="object"&&typeof h!="function"&&h!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,h,O,"setState")},vt.prototype.forceUpdate=function(h){this.updater.enqueueForceUpdate(this,h,"forceUpdate")};function pt(){}pt.prototype=vt.prototype;function ot(h,O,j){this.props=h,this.context=O,this.refs=rt,this.updater=j||$}var W=ot.prototype=new pt;W.constructor=ot,tt(W,vt.prototype),W.isPureReactComponent=!0;var ct=Array.isArray,Q={H:null,A:null,T:null,S:null,V:null},F=Object.prototype.hasOwnProperty;function V(h,O,j,H,Y,ut){return j=ut.ref,{$$typeof:i,type:h,key:O,ref:j!==void 0?j:null,props:ut}}function Ut(h,O){return V(h.type,O,void 0,void 0,void 0,h.props)}function It(h){return typeof h=="object"&&h!==null&&h.$$typeof===i}function ue(h){var O={"=":"=0",":":"=2"};return"$"+h.replace(/[=:]/g,function(j){return O[j]})}var Ol=/\/+/g;function Bt(h,O){return typeof h=="object"&&h!==null&&h.key!=null?ue(""+h.key):O.toString(36)}function Gl(){}function Xl(h){switch(h.status){case"fulfilled":return h.value;case"rejected":throw h.reason;default:switch(typeof h.status=="string"?h.then(Gl,Gl):(h.status="pending",h.then(function(O){h.status==="pending"&&(h.status="fulfilled",h.value=O)},function(O){h.status==="pending"&&(h.status="rejected",h.reason=O)})),h.status){case"fulfilled":return h.value;case"rejected":throw h.reason}}throw h}function Yt(h,O,j,H,Y){var ut=typeof h;(ut==="undefined"||ut==="boolean")&&(h=null);var K=!1;if(h===null)K=!0;else switch(ut){case"bigint":case"string":case"number":K=!0;break;case"object":switch(h.$$typeof){case i:case o:K=!0;break;case U:return K=h._init,Yt(K(h._payload),O,j,H,Y)}}if(K)return Y=Y(h),K=H===""?"."+Bt(h,0):H,ct(Y)?(j="",K!=null&&(j=K.replace(Ol,"$&/")+"/"),Yt(Y,O,j,"",function(kt){return kt})):Y!=null&&(It(Y)&&(Y=Ut(Y,j+(Y.key==null||h&&h.key===Y.key?"":(""+Y.key).replace(Ol,"$&/")+"/")+K)),O.push(Y)),1;K=0;var Gt=H===""?".":H+":";if(ct(h))for(var ht=0;ht>>1,h=A[at];if(0>>1;atp(H,Z))Yp(ut,H)?(A[at]=ut,A[Y]=Z,at=Y):(A[at]=H,A[j]=Z,at=j);else if(Yp(ut,Z))A[at]=ut,A[Y]=Z,at=Y;else break t}}return N}function p(A,N){var Z=A.sortIndex-N.sortIndex;return Z!==0?Z:A.id-N.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var z=performance;i.unstable_now=function(){return z.now()}}else{var D=Date,q=D.now();i.unstable_now=function(){return D.now()-q}}var M=[],x=[],U=1,G=null,X=3,$=!1,tt=!1,rt=!1,vt=!1,pt=typeof setTimeout=="function"?setTimeout:null,ot=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;function ct(A){for(var N=s(x);N!==null;){if(N.callback===null)r(x);else if(N.startTime<=A)r(x),N.sortIndex=N.expirationTime,o(M,N);else break;N=s(x)}}function Q(A){if(rt=!1,ct(A),!tt)if(s(M)!==null)tt=!0,F||(F=!0,Bt());else{var N=s(x);N!==null&&Yt(Q,N.startTime-A)}}var F=!1,V=-1,Ut=5,It=-1;function ue(){return vt?!0:!(i.unstable_now()-ItA&&ue());){var at=G.callback;if(typeof at=="function"){G.callback=null,X=G.priorityLevel;var h=at(G.expirationTime<=A);if(A=i.unstable_now(),typeof h=="function"){G.callback=h,ct(A),N=!0;break l}G===s(M)&&r(M),ct(A)}else r(M);G=s(M)}if(G!==null)N=!0;else{var O=s(x);O!==null&&Yt(Q,O.startTime-A),N=!1}}break t}finally{G=null,X=Z,$=!1}N=void 0}}finally{N?Bt():F=!1}}}var Bt;if(typeof W=="function")Bt=function(){W(Ol)};else if(typeof MessageChannel<"u"){var Gl=new MessageChannel,Xl=Gl.port2;Gl.port1.onmessage=Ol,Bt=function(){Xl.postMessage(null)}}else Bt=function(){pt(Ol,0)};function Yt(A,N){V=pt(function(){A(i.unstable_now())},N)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(A){A.callback=null},i.unstable_forceFrameRate=function(A){0>A||125at?(A.sortIndex=Z,o(x,A),s(M)===null&&A===s(x)&&(rt?(ot(V),V=-1):rt=!0,Yt(Q,Z-at))):(A.sortIndex=h,o(M,A),tt||$||(tt=!0,F||(F=!0,Bt()))),A},i.unstable_shouldYield=ue,i.unstable_wrapCallback=function(A){var N=X;return function(){var Z=X;X=N;try{return A.apply(this,arguments)}finally{X=Z}}}}(Wf)),Wf}var h0;function Hy(){return h0||(h0=1,$f.exports=Ny()),$f.exports}var Ff={exports:{}},Ft={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var y0;function Cy(){if(y0)return Ft;y0=1;var i=rr();function o(M){var x="https://react.dev/errors/"+M;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(o){console.error(o)}}return i(),Ff.exports=Cy(),Ff.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var m0;function By(){if(m0)return Zu;m0=1;var i=Hy(),o=rr(),s=qy();function r(t){var l="https://react.dev/errors/"+t;if(1h||(t.current=at[h],at[h]=null,h--)}function H(t,l){h++,at[h]=t.current,t.current=l}var Y=O(null),ut=O(null),K=O(null),Gt=O(null);function ht(t,l){switch(H(K,l),H(ut,t),H(Y,null),l.nodeType){case 9:case 11:t=(t=l.documentElement)&&(t=t.namespaceURI)?qd(t):0;break;default:if(t=l.tagName,l=l.namespaceURI)l=qd(l),t=Bd(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}j(Y),H(Y,t)}function kt(){j(Y),j(ut),j(K)}function Re(t){t.memoizedState!==null&&H(Gt,t);var l=Y.current,e=Bd(l,t.type);l!==e&&(H(ut,t),H(Y,e))}function wl(t){ut.current===t&&(j(Y),j(ut)),Gt.current===t&&(j(Gt),Bu._currentValue=Z)}var ml=Object.prototype.hasOwnProperty,ji=i.unstable_scheduleCallback,Ni=i.unstable_cancelCallback,fh=i.unstable_shouldYield,rh=i.unstable_requestPaint,jl=i.unstable_now,oh=i.unstable_getCurrentPriorityLevel,gr=i.unstable_ImmediatePriority,mr=i.unstable_UserBlockingPriority,Iu=i.unstable_NormalPriority,sh=i.unstable_LowPriority,vr=i.unstable_IdlePriority,dh=i.log,hh=i.unstable_setDisableYieldValue,Va=null,il=null;function ne(t){if(typeof dh=="function"&&hh(t),il&&typeof il.setStrictMode=="function")try{il.setStrictMode(Va,t)}catch{}}var cl=Math.clz32?Math.clz32:mh,yh=Math.log,gh=Math.LN2;function mh(t){return t>>>=0,t===0?32:31-(yh(t)/gh|0)|0}var Pu=256,tn=4194304;function Ue(t){var l=t&42;if(l!==0)return l;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function ln(t,l,e){var a=t.pendingLanes;if(a===0)return 0;var u=0,n=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~n,a!==0?u=Ue(a):(c&=f,c!==0?u=Ue(c):e||(e=f&~t,e!==0&&(u=Ue(e))))):(f=a&~n,f!==0?u=Ue(f):c!==0?u=Ue(c):e||(e=a&~t,e!==0&&(u=Ue(e)))),u===0?0:l!==0&&l!==u&&(l&n)===0&&(n=u&-u,e=l&-l,n>=e||n===32&&(e&4194048)!==0)?l:u}function Ka(t,l){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&l)===0}function vh(t,l){switch(t){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function pr(){var t=Pu;return Pu<<=1,(Pu&4194048)===0&&(Pu=256),t}function br(){var t=tn;return tn<<=1,(tn&62914560)===0&&(tn=4194304),t}function Hi(t){for(var l=[],e=0;31>e;e++)l.push(t);return l}function Ja(t,l){t.pendingLanes|=l,l!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function ph(t,l,e,a,u,n){var c=t.pendingLanes;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=e,t.entangledLanes&=e,t.errorRecoveryDisabledLanes&=e,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,v=t.hiddenUpdates;for(e=c&~e;0)":-1u||d[a]!==v[u]){var T=` +`+d[a].replace(" at new "," at ");return t.displayName&&T.includes("")&&(T=T.replace("",t.displayName)),T}while(1<=a&&0<=u);break}}}finally{Xi=!1,Error.prepareStackTrace=e}return(e=t?t.displayName||t.name:"")?aa(e):""}function Eh(t){switch(t.tag){case 26:case 27:case 5:return aa(t.type);case 16:return aa("Lazy");case 13:return aa("Suspense");case 19:return aa("SuspenseList");case 0:case 15:return wi(t.type,!1);case 11:return wi(t.type.render,!1);case 1:return wi(t.type,!0);case 31:return aa("Activity");default:return""}}function Dr(t){try{var l="";do l+=Eh(t),t=t.return;while(t);return l}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}function vl(t){switch(typeof t){case"bigint":case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Rr(t){var l=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function zh(t){var l=Rr(t)?"checked":"value",e=Object.getOwnPropertyDescriptor(t.constructor.prototype,l),a=""+t[l];if(!t.hasOwnProperty(l)&&typeof e<"u"&&typeof e.get=="function"&&typeof e.set=="function"){var u=e.get,n=e.set;return Object.defineProperty(t,l,{configurable:!0,get:function(){return u.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(t,l,{enumerable:e.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){t._valueTracker=null,delete t[l]}}}}function un(t){t._valueTracker||(t._valueTracker=zh(t))}function Ur(t){if(!t)return!1;var l=t._valueTracker;if(!l)return!0;var e=l.getValue(),a="";return t&&(a=Rr(t)?t.checked?"true":"false":t.value),t=a,t!==e?(l.setValue(t),!0):!1}function nn(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var _h=/[\n"\\]/g;function pl(t){return t.replace(_h,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function Qi(t,l,e,a,u,n,c,f){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),l!=null?c==="number"?(l===0&&t.value===""||t.value!=l)&&(t.value=""+vl(l)):t.value!==""+vl(l)&&(t.value=""+vl(l)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),l!=null?Zi(t,c,vl(l)):e!=null?Zi(t,c,vl(e)):a!=null&&t.removeAttribute("value"),u==null&&n!=null&&(t.defaultChecked=!!n),u!=null&&(t.checked=u&&typeof u!="function"&&typeof u!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+vl(f):t.removeAttribute("name")}function jr(t,l,e,a,u,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(t.type=n),l!=null||e!=null){if(!(n!=="submit"&&n!=="reset"||l!=null))return;e=e!=null?""+vl(e):"",l=l!=null?""+vl(l):e,f||l===t.value||(t.value=l),t.defaultValue=l}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=f?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c)}function Zi(t,l,e){l==="number"&&nn(t.ownerDocument)===t||t.defaultValue===""+e||(t.defaultValue=""+e)}function ua(t,l,e,a){if(t=t.options,l){l={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ki=!1;if(Zl)try{var Fa={};Object.defineProperty(Fa,"passive",{get:function(){ki=!0}}),window.addEventListener("test",Fa,Fa),window.removeEventListener("test",Fa,Fa)}catch{ki=!1}var ce=null,$i=null,fn=null;function Gr(){if(fn)return fn;var t,l=$i,e=l.length,a,u="value"in ce?ce.value:ce.textContent,n=u.length;for(t=0;t=tu),Vr=" ",Kr=!1;function Jr(t,l){switch(t){case"keyup":return t1.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function kr(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var fa=!1;function e1(t,l){switch(t){case"compositionend":return kr(l);case"keypress":return l.which!==32?null:(Kr=!0,Vr);case"textInput":return t=l.data,t===Vr&&Kr?null:t;default:return null}}function a1(t,l){if(fa)return t==="compositionend"||!tc&&Jr(t,l)?(t=Gr(),fn=$i=ce=null,fa=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:e,offset:l-t};t=a}t:{for(;e;){if(e.nextSibling){e=e.nextSibling;break t}e=e.parentNode}e=void 0}e=eo(e)}}function uo(t,l){return t&&l?t===l?!0:t&&t.nodeType===3?!1:l&&l.nodeType===3?uo(t,l.parentNode):"contains"in t?t.contains(l):t.compareDocumentPosition?!!(t.compareDocumentPosition(l)&16):!1:!1}function no(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var l=nn(t.document);l instanceof t.HTMLIFrameElement;){try{var e=typeof l.contentWindow.location.href=="string"}catch{e=!1}if(e)t=l.contentWindow;else break;l=nn(t.document)}return l}function ac(t){var l=t&&t.nodeName&&t.nodeName.toLowerCase();return l&&(l==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||l==="textarea"||t.contentEditable==="true")}var s1=Zl&&"documentMode"in document&&11>=document.documentMode,ra=null,uc=null,uu=null,nc=!1;function io(t,l,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;nc||ra==null||ra!==nn(a)||(a=ra,"selectionStart"in a&&ac(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),uu&&au(uu,a)||(uu=a,a=In(uc,"onSelect"),0>=c,u-=c,Vl=1<<32-cl(l)+u|e<n?n:8;var c=A.T,f={};A.T=f,Lc(t,!1,l,e);try{var d=u(),v=A.S;if(v!==null&&v(f,d),d!==null&&typeof d=="object"&&typeof d.then=="function"){var T=S1(d,a);bu(t,l,T,hl(t))}else bu(t,l,a,hl(t))}catch(_){bu(t,l,{then:function(){},status:"rejected",reason:_},hl())}finally{N.p=n,A.T=c}}function z1(){}function Qc(t,l,e,a){if(t.tag!==5)throw Error(r(476));var u=fs(t).queue;cs(t,u,l,Z,e===null?z1:function(){return rs(t),e(a)})}function fs(t){var l=t.memoizedState;if(l!==null)return l;l={memoizedState:Z,baseState:Z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$l,lastRenderedState:Z},next:null};var e={};return l.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$l,lastRenderedState:e},next:null},t.memoizedState=l,t=t.alternate,t!==null&&(t.memoizedState=l),l}function rs(t){var l=fs(t).next.queue;bu(t,l,{},hl())}function Zc(){return Wt(Bu)}function os(){return Nt().memoizedState}function ss(){return Nt().memoizedState}function _1(t){for(var l=t.return;l!==null;){switch(l.tag){case 24:case 3:var e=hl();t=oe(e);var a=se(l,t,e);a!==null&&(yl(a,l,e),hu(a,l,e)),l={cache:bc()},t.payload=l;return}l=l.return}}function O1(t,l,e){var a=hl();e={lane:a,revertLane:0,action:e,hasEagerState:!1,eagerState:null,next:null},jn(t)?hs(l,e):(e=rc(t,l,e,a),e!==null&&(yl(e,t,a),ys(e,l,a)))}function ds(t,l,e){var a=hl();bu(t,l,e,a)}function bu(t,l,e,a){var u={lane:a,revertLane:0,action:e,hasEagerState:!1,eagerState:null,next:null};if(jn(t))hs(l,u);else{var n=t.alternate;if(t.lanes===0&&(n===null||n.lanes===0)&&(n=l.lastRenderedReducer,n!==null))try{var c=l.lastRenderedState,f=n(c,e);if(u.hasEagerState=!0,u.eagerState=f,fl(f,c))return gn(t,l,u,0),Tt===null&&yn(),!1}catch{}finally{}if(e=rc(t,l,u,a),e!==null)return yl(e,t,a),ys(e,l,a),!0}return!1}function Lc(t,l,e,a){if(a={lane:2,revertLane:Tf(),action:a,hasEagerState:!1,eagerState:null,next:null},jn(t)){if(l)throw Error(r(479))}else l=rc(t,e,a,2),l!==null&&yl(l,t,2)}function jn(t){var l=t.alternate;return t===lt||l!==null&&l===lt}function hs(t,l){ba=_n=!0;var e=t.pending;e===null?l.next=l:(l.next=e.next,e.next=l),t.pending=l}function ys(t,l,e){if((e&4194048)!==0){var a=l.lanes;a&=t.pendingLanes,e|=a,l.lanes=e,xr(t,e)}}var Nn={readContext:Wt,use:Mn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt},gs={readContext:Wt,use:Mn,useCallback:function(t,l){return el().memoizedState=[t,l===void 0?null:l],t},useContext:Wt,useEffect:Io,useImperativeHandle:function(t,l,e){e=e!=null?e.concat([t]):null,Un(4194308,4,es.bind(null,l,t),e)},useLayoutEffect:function(t,l){return Un(4194308,4,t,l)},useInsertionEffect:function(t,l){Un(4,2,t,l)},useMemo:function(t,l){var e=el();l=l===void 0?null:l;var a=t();if(Le){ne(!0);try{t()}finally{ne(!1)}}return e.memoizedState=[a,l],a},useReducer:function(t,l,e){var a=el();if(e!==void 0){var u=e(l);if(Le){ne(!0);try{e(l)}finally{ne(!1)}}}else u=l;return a.memoizedState=a.baseState=u,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:u},a.queue=t,t=t.dispatch=O1.bind(null,lt,t),[a.memoizedState,t]},useRef:function(t){var l=el();return t={current:t},l.memoizedState=t},useState:function(t){t=Yc(t);var l=t.queue,e=ds.bind(null,lt,l);return l.dispatch=e,[t.memoizedState,e]},useDebugValue:Xc,useDeferredValue:function(t,l){var e=el();return wc(e,t,l)},useTransition:function(){var t=Yc(!1);return t=cs.bind(null,lt,t.queue,!0,!1),el().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,l,e){var a=lt,u=el();if(dt){if(e===void 0)throw Error(r(407));e=e()}else{if(e=l(),Tt===null)throw Error(r(349));(ft&124)!==0||qo(a,l,e)}u.memoizedState=e;var n={value:e,getSnapshot:l};return u.queue=n,Io(Yo.bind(null,a,n,t),[t]),a.flags|=2048,xa(9,Rn(),Bo.bind(null,a,n,e,l),null),e},useId:function(){var t=el(),l=Tt.identifierPrefix;if(dt){var e=Kl,a=Vl;e=(a&~(1<<32-cl(a)-1)).toString(32)+e,l="«"+l+"R"+e,e=On++,0J?(Zt=B,B=null):Zt=B.sibling;var st=b(g,B,m[J],E);if(st===null){B===null&&(B=Zt);break}t&&B&&st.alternate===null&&l(g,B),y=n(st,y,J),et===null?C=st:et.sibling=st,et=st,B=Zt}if(J===m.length)return e(g,B),dt&&Ye(g,J),C;if(B===null){for(;JJ?(Zt=B,B=null):Zt=B.sibling;var Me=b(g,B,st.value,E);if(Me===null){B===null&&(B=Zt);break}t&&B&&Me.alternate===null&&l(g,B),y=n(Me,y,J),et===null?C=Me:et.sibling=Me,et=Me,B=Zt}if(st.done)return e(g,B),dt&&Ye(g,J),C;if(B===null){for(;!st.done;J++,st=m.next())st=_(g,st.value,E),st!==null&&(y=n(st,y,J),et===null?C=st:et.sibling=st,et=st);return dt&&Ye(g,J),C}for(B=a(B);!st.done;J++,st=m.next())st=S(B,g,J,st.value,E),st!==null&&(t&&st.alternate!==null&&B.delete(st.key===null?J:st.key),y=n(st,y,J),et===null?C=st:et.sibling=st,et=st);return t&&B.forEach(function(Dy){return l(g,Dy)}),dt&&Ye(g,J),C}function xt(g,y,m,E){if(typeof m=="object"&&m!==null&&m.type===tt&&m.key===null&&(m=m.props.children),typeof m=="object"&&m!==null){switch(m.$$typeof){case X:t:{for(var C=m.key;y!==null;){if(y.key===C){if(C=m.type,C===tt){if(y.tag===7){e(g,y.sibling),E=u(y,m.props.children),E.return=g,g=E;break t}}else if(y.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Ut&&vs(C)===y.type){e(g,y.sibling),E=u(y,m.props),xu(E,m),E.return=g,g=E;break t}e(g,y);break}else l(g,y);y=y.sibling}m.type===tt?(E=qe(m.props.children,g.mode,E,m.key),E.return=g,g=E):(E=vn(m.type,m.key,m.props,null,g.mode,E),xu(E,m),E.return=g,g=E)}return c(g);case $:t:{for(C=m.key;y!==null;){if(y.key===C)if(y.tag===4&&y.stateNode.containerInfo===m.containerInfo&&y.stateNode.implementation===m.implementation){e(g,y.sibling),E=u(y,m.children||[]),E.return=g,g=E;break t}else{e(g,y);break}else l(g,y);y=y.sibling}E=dc(m,g.mode,E),E.return=g,g=E}return c(g);case Ut:return C=m._init,m=C(m._payload),xt(g,y,m,E)}if(Yt(m))return k(g,y,m,E);if(Bt(m)){if(C=Bt(m),typeof C!="function")throw Error(r(150));return m=C.call(m),L(g,y,m,E)}if(typeof m.then=="function")return xt(g,y,Hn(m),E);if(m.$$typeof===W)return xt(g,y,xn(g,m),E);Cn(g,m)}return typeof m=="string"&&m!==""||typeof m=="number"||typeof m=="bigint"?(m=""+m,y!==null&&y.tag===6?(e(g,y.sibling),E=u(y,m),E.return=g,g=E):(e(g,y),E=sc(m,g.mode,E),E.return=g,g=E),c(g)):e(g,y)}return function(g,y,m,E){try{Su=0;var C=xt(g,y,m,E);return Aa=null,C}catch(B){if(B===su||B===Tn)throw B;var et=rl(29,B,null,g.mode);return et.lanes=E,et.return=g,et}finally{}}}var Ta=ps(!0),bs=ps(!1),Tl=O(null),Hl=null;function he(t){var l=t.alternate;H(qt,qt.current&1),H(Tl,t),Hl===null&&(l===null||pa.current!==null||l.memoizedState!==null)&&(Hl=t)}function Ss(t){if(t.tag===22){if(H(qt,qt.current),H(Tl,t),Hl===null){var l=t.alternate;l!==null&&l.memoizedState!==null&&(Hl=t)}}else ye()}function ye(){H(qt,qt.current),H(Tl,Tl.current)}function Wl(t){j(Tl),Hl===t&&(Hl=null),j(qt)}var qt=O(0);function qn(t){for(var l=t;l!==null;){if(l.tag===13){var e=l.memoizedState;if(e!==null&&(e=e.dehydrated,e===null||e.data==="$?"||Cf(e)))return l}else if(l.tag===19&&l.memoizedProps.revealOrder!==void 0){if((l.flags&128)!==0)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break;for(;l.sibling===null;){if(l.return===null||l.return===t)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}function Vc(t,l,e,a){l=t.memoizedState,e=e(a,l),e=e==null?l:U({},l,e),t.memoizedState=e,t.lanes===0&&(t.updateQueue.baseState=e)}var Kc={enqueueSetState:function(t,l,e){t=t._reactInternals;var a=hl(),u=oe(a);u.payload=l,e!=null&&(u.callback=e),l=se(t,u,a),l!==null&&(yl(l,t,a),hu(l,t,a))},enqueueReplaceState:function(t,l,e){t=t._reactInternals;var a=hl(),u=oe(a);u.tag=1,u.payload=l,e!=null&&(u.callback=e),l=se(t,u,a),l!==null&&(yl(l,t,a),hu(l,t,a))},enqueueForceUpdate:function(t,l){t=t._reactInternals;var e=hl(),a=oe(e);a.tag=2,l!=null&&(a.callback=l),l=se(t,a,e),l!==null&&(yl(l,t,e),hu(l,t,e))}};function xs(t,l,e,a,u,n,c){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(a,n,c):l.prototype&&l.prototype.isPureReactComponent?!au(e,a)||!au(u,n):!0}function As(t,l,e,a){t=l.state,typeof l.componentWillReceiveProps=="function"&&l.componentWillReceiveProps(e,a),typeof l.UNSAFE_componentWillReceiveProps=="function"&&l.UNSAFE_componentWillReceiveProps(e,a),l.state!==t&&Kc.enqueueReplaceState(l,l.state,null)}function Ve(t,l){var e=l;if("ref"in l){e={};for(var a in l)a!=="ref"&&(e[a]=l[a])}if(t=t.defaultProps){e===l&&(e=U({},e));for(var u in t)e[u]===void 0&&(e[u]=t[u])}return e}var Bn=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var l=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(l))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)};function Ts(t){Bn(t)}function Es(t){console.error(t)}function zs(t){Bn(t)}function Yn(t,l){try{var e=t.onUncaughtError;e(l.value,{componentStack:l.stack})}catch(a){setTimeout(function(){throw a})}}function _s(t,l,e){try{var a=t.onCaughtError;a(e.value,{componentStack:e.stack,errorBoundary:l.tag===1?l.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function Jc(t,l,e){return e=oe(e),e.tag=3,e.payload={element:null},e.callback=function(){Yn(t,l)},e}function Os(t){return t=oe(t),t.tag=3,t}function Ms(t,l,e,a){var u=e.type.getDerivedStateFromError;if(typeof u=="function"){var n=a.value;t.payload=function(){return u(n)},t.callback=function(){_s(l,e,a)}}var c=e.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(t.callback=function(){_s(l,e,a),typeof u!="function"&&(Se===null?Se=new Set([this]):Se.add(this));var f=a.stack;this.componentDidCatch(a.value,{componentStack:f!==null?f:""})})}function D1(t,l,e,a,u){if(e.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(l=e.alternate,l!==null&&fu(l,e,u,!0),e=Tl.current,e!==null){switch(e.tag){case 13:return Hl===null?pf():e.alternate===null&&Mt===0&&(Mt=3),e.flags&=-257,e.flags|=65536,e.lanes=u,a===Ac?e.flags|=16384:(l=e.updateQueue,l===null?e.updateQueue=new Set([a]):l.add(a),Sf(t,a,u)),!1;case 22:return e.flags|=65536,a===Ac?e.flags|=16384:(l=e.updateQueue,l===null?(l={transitions:null,markerInstances:null,retryQueue:new Set([a])},e.updateQueue=l):(e=l.retryQueue,e===null?l.retryQueue=new Set([a]):e.add(a)),Sf(t,a,u)),!1}throw Error(r(435,e.tag))}return Sf(t,a,u),pf(),!1}if(dt)return l=Tl.current,l!==null?((l.flags&65536)===0&&(l.flags|=256),l.flags|=65536,l.lanes=u,a!==gc&&(t=Error(r(422),{cause:a}),cu(bl(t,e)))):(a!==gc&&(l=Error(r(423),{cause:a}),cu(bl(l,e))),t=t.current.alternate,t.flags|=65536,u&=-u,t.lanes|=u,a=bl(a,e),u=Jc(t.stateNode,a,u),zc(t,u),Mt!==4&&(Mt=2)),!1;var n=Error(r(520),{cause:a});if(n=bl(n,e),Mu===null?Mu=[n]:Mu.push(n),Mt!==4&&(Mt=2),l===null)return!0;a=bl(a,e),e=l;do{switch(e.tag){case 3:return e.flags|=65536,t=u&-u,e.lanes|=t,t=Jc(e.stateNode,a,t),zc(e,t),!1;case 1:if(l=e.type,n=e.stateNode,(e.flags&128)===0&&(typeof l.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(Se===null||!Se.has(n))))return e.flags|=65536,u&=-u,e.lanes|=u,u=Os(u),Ms(u,t,e,a),zc(e,u),!1}e=e.return}while(e!==null);return!1}var Ds=Error(r(461)),wt=!1;function Vt(t,l,e,a){l.child=t===null?bs(l,null,e,a):Ta(l,t.child,e,a)}function Rs(t,l,e,a,u){e=e.render;var n=l.ref;if("ref"in a){var c={};for(var f in a)f!=="ref"&&(c[f]=a[f])}else c=a;return Qe(l),a=Rc(t,l,e,c,n,u),f=Uc(),t!==null&&!wt?(jc(t,l,u),Fl(t,l,u)):(dt&&f&&hc(l),l.flags|=1,Vt(t,l,a,u),l.child)}function Us(t,l,e,a,u){if(t===null){var n=e.type;return typeof n=="function"&&!oc(n)&&n.defaultProps===void 0&&e.compare===null?(l.tag=15,l.type=n,js(t,l,n,a,u)):(t=vn(e.type,null,a,l,l.mode,u),t.ref=l.ref,t.return=l,l.child=t)}if(n=t.child,!lf(t,u)){var c=n.memoizedProps;if(e=e.compare,e=e!==null?e:au,e(c,a)&&t.ref===l.ref)return Fl(t,l,u)}return l.flags|=1,t=Ll(n,a),t.ref=l.ref,t.return=l,l.child=t}function js(t,l,e,a,u){if(t!==null){var n=t.memoizedProps;if(au(n,a)&&t.ref===l.ref)if(wt=!1,l.pendingProps=a=n,lf(t,u))(t.flags&131072)!==0&&(wt=!0);else return l.lanes=t.lanes,Fl(t,l,u)}return kc(t,l,e,a,u)}function Ns(t,l,e){var a=l.pendingProps,u=a.children,n=t!==null?t.memoizedState:null;if(a.mode==="hidden"){if((l.flags&128)!==0){if(a=n!==null?n.baseLanes|e:e,t!==null){for(u=l.child=t.child,n=0;u!==null;)n=n|u.lanes|u.childLanes,u=u.sibling;l.childLanes=n&~a}else l.childLanes=0,l.child=null;return Hs(t,l,a,e)}if((e&536870912)!==0)l.memoizedState={baseLanes:0,cachePool:null},t!==null&&An(l,n!==null?n.cachePool:null),n!==null?jo(l,n):Oc(),Ss(l);else return l.lanes=l.childLanes=536870912,Hs(t,l,n!==null?n.baseLanes|e:e,e)}else n!==null?(An(l,n.cachePool),jo(l,n),ye(),l.memoizedState=null):(t!==null&&An(l,null),Oc(),ye());return Vt(t,l,u,e),l.child}function Hs(t,l,e,a){var u=xc();return u=u===null?null:{parent:Ct._currentValue,pool:u},l.memoizedState={baseLanes:e,cachePool:u},t!==null&&An(l,null),Oc(),Ss(l),t!==null&&fu(t,l,a,!0),null}function Gn(t,l){var e=l.ref;if(e===null)t!==null&&t.ref!==null&&(l.flags|=4194816);else{if(typeof e!="function"&&typeof e!="object")throw Error(r(284));(t===null||t.ref!==e)&&(l.flags|=4194816)}}function kc(t,l,e,a,u){return Qe(l),e=Rc(t,l,e,a,void 0,u),a=Uc(),t!==null&&!wt?(jc(t,l,u),Fl(t,l,u)):(dt&&a&&hc(l),l.flags|=1,Vt(t,l,e,u),l.child)}function Cs(t,l,e,a,u,n){return Qe(l),l.updateQueue=null,e=Ho(l,a,e,u),No(t),a=Uc(),t!==null&&!wt?(jc(t,l,n),Fl(t,l,n)):(dt&&a&&hc(l),l.flags|=1,Vt(t,l,e,n),l.child)}function qs(t,l,e,a,u){if(Qe(l),l.stateNode===null){var n=ha,c=e.contextType;typeof c=="object"&&c!==null&&(n=Wt(c)),n=new e(a,n),l.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Kc,l.stateNode=n,n._reactInternals=l,n=l.stateNode,n.props=a,n.state=l.memoizedState,n.refs={},Tc(l),c=e.contextType,n.context=typeof c=="object"&&c!==null?Wt(c):ha,n.state=l.memoizedState,c=e.getDerivedStateFromProps,typeof c=="function"&&(Vc(l,e,c,a),n.state=l.memoizedState),typeof e.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&Kc.enqueueReplaceState(n,n.state,null),gu(l,a,n,u),yu(),n.state=l.memoizedState),typeof n.componentDidMount=="function"&&(l.flags|=4194308),a=!0}else if(t===null){n=l.stateNode;var f=l.memoizedProps,d=Ve(e,f);n.props=d;var v=n.context,T=e.contextType;c=ha,typeof T=="object"&&T!==null&&(c=Wt(T));var _=e.getDerivedStateFromProps;T=typeof _=="function"||typeof n.getSnapshotBeforeUpdate=="function",f=l.pendingProps!==f,T||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f||v!==c)&&As(l,n,a,c),re=!1;var b=l.memoizedState;n.state=b,gu(l,a,n,u),yu(),v=l.memoizedState,f||b!==v||re?(typeof _=="function"&&(Vc(l,e,_,a),v=l.memoizedState),(d=re||xs(l,e,d,a,b,v,c))?(T||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(l.flags|=4194308)):(typeof n.componentDidMount=="function"&&(l.flags|=4194308),l.memoizedProps=a,l.memoizedState=v),n.props=a,n.state=v,n.context=c,a=d):(typeof n.componentDidMount=="function"&&(l.flags|=4194308),a=!1)}else{n=l.stateNode,Ec(t,l),c=l.memoizedProps,T=Ve(e,c),n.props=T,_=l.pendingProps,b=n.context,v=e.contextType,d=ha,typeof v=="object"&&v!==null&&(d=Wt(v)),f=e.getDerivedStateFromProps,(v=typeof f=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==_||b!==d)&&As(l,n,a,d),re=!1,b=l.memoizedState,n.state=b,gu(l,a,n,u),yu();var S=l.memoizedState;c!==_||b!==S||re||t!==null&&t.dependencies!==null&&Sn(t.dependencies)?(typeof f=="function"&&(Vc(l,e,f,a),S=l.memoizedState),(T=re||xs(l,e,T,a,b,S,d)||t!==null&&t.dependencies!==null&&Sn(t.dependencies))?(v||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,S,d),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,S,d)),typeof n.componentDidUpdate=="function"&&(l.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(l.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&b===t.memoizedState||(l.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&b===t.memoizedState||(l.flags|=1024),l.memoizedProps=a,l.memoizedState=S),n.props=a,n.state=S,n.context=d,a=T):(typeof n.componentDidUpdate!="function"||c===t.memoizedProps&&b===t.memoizedState||(l.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===t.memoizedProps&&b===t.memoizedState||(l.flags|=1024),a=!1)}return n=a,Gn(t,l),a=(l.flags&128)!==0,n||a?(n=l.stateNode,e=a&&typeof e.getDerivedStateFromError!="function"?null:n.render(),l.flags|=1,t!==null&&a?(l.child=Ta(l,t.child,null,u),l.child=Ta(l,null,e,u)):Vt(t,l,e,u),l.memoizedState=n.state,t=l.child):t=Fl(t,l,u),t}function Bs(t,l,e,a){return iu(),l.flags|=256,Vt(t,l,e,a),l.child}var $c={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Wc(t){return{baseLanes:t,cachePool:Eo()}}function Fc(t,l,e){return t=t!==null?t.childLanes&~e:0,l&&(t|=El),t}function Ys(t,l,e){var a=l.pendingProps,u=!1,n=(l.flags&128)!==0,c;if((c=n)||(c=t!==null&&t.memoizedState===null?!1:(qt.current&2)!==0),c&&(u=!0,l.flags&=-129),c=(l.flags&32)!==0,l.flags&=-33,t===null){if(dt){if(u?he(l):ye(),dt){var f=Ot,d;if(d=f){t:{for(d=f,f=Nl;d.nodeType!==8;){if(!f){f=null;break t}if(d=Rl(d.nextSibling),d===null){f=null;break t}}f=d}f!==null?(l.memoizedState={dehydrated:f,treeContext:Be!==null?{id:Vl,overflow:Kl}:null,retryLane:536870912,hydrationErrors:null},d=rl(18,null,null,0),d.stateNode=f,d.return=l,l.child=d,Pt=l,Ot=null,d=!0):d=!1}d||Xe(l)}if(f=l.memoizedState,f!==null&&(f=f.dehydrated,f!==null))return Cf(f)?l.lanes=32:l.lanes=536870912,null;Wl(l)}return f=a.children,a=a.fallback,u?(ye(),u=l.mode,f=Xn({mode:"hidden",children:f},u),a=qe(a,u,e,null),f.return=l,a.return=l,f.sibling=a,l.child=f,u=l.child,u.memoizedState=Wc(e),u.childLanes=Fc(t,c,e),l.memoizedState=$c,a):(he(l),Ic(l,f))}if(d=t.memoizedState,d!==null&&(f=d.dehydrated,f!==null)){if(n)l.flags&256?(he(l),l.flags&=-257,l=Pc(t,l,e)):l.memoizedState!==null?(ye(),l.child=t.child,l.flags|=128,l=null):(ye(),u=a.fallback,f=l.mode,a=Xn({mode:"visible",children:a.children},f),u=qe(u,f,e,null),u.flags|=2,a.return=l,u.return=l,a.sibling=u,l.child=a,Ta(l,t.child,null,e),a=l.child,a.memoizedState=Wc(e),a.childLanes=Fc(t,c,e),l.memoizedState=$c,l=u);else if(he(l),Cf(f)){if(c=f.nextSibling&&f.nextSibling.dataset,c)var v=c.dgst;c=v,a=Error(r(419)),a.stack="",a.digest=c,cu({value:a,source:null,stack:null}),l=Pc(t,l,e)}else if(wt||fu(t,l,e,!1),c=(e&t.childLanes)!==0,wt||c){if(c=Tt,c!==null&&(a=e&-e,a=(a&42)!==0?1:Ci(a),a=(a&(c.suspendedLanes|e))!==0?0:a,a!==0&&a!==d.retryLane))throw d.retryLane=a,da(t,a),yl(c,t,a),Ds;f.data==="$?"||pf(),l=Pc(t,l,e)}else f.data==="$?"?(l.flags|=192,l.child=t.child,l=null):(t=d.treeContext,Ot=Rl(f.nextSibling),Pt=l,dt=!0,Ge=null,Nl=!1,t!==null&&(xl[Al++]=Vl,xl[Al++]=Kl,xl[Al++]=Be,Vl=t.id,Kl=t.overflow,Be=l),l=Ic(l,a.children),l.flags|=4096);return l}return u?(ye(),u=a.fallback,f=l.mode,d=t.child,v=d.sibling,a=Ll(d,{mode:"hidden",children:a.children}),a.subtreeFlags=d.subtreeFlags&65011712,v!==null?u=Ll(v,u):(u=qe(u,f,e,null),u.flags|=2),u.return=l,a.return=l,a.sibling=u,l.child=a,a=u,u=l.child,f=t.child.memoizedState,f===null?f=Wc(e):(d=f.cachePool,d!==null?(v=Ct._currentValue,d=d.parent!==v?{parent:v,pool:v}:d):d=Eo(),f={baseLanes:f.baseLanes|e,cachePool:d}),u.memoizedState=f,u.childLanes=Fc(t,c,e),l.memoizedState=$c,a):(he(l),e=t.child,t=e.sibling,e=Ll(e,{mode:"visible",children:a.children}),e.return=l,e.sibling=null,t!==null&&(c=l.deletions,c===null?(l.deletions=[t],l.flags|=16):c.push(t)),l.child=e,l.memoizedState=null,e)}function Ic(t,l){return l=Xn({mode:"visible",children:l},t.mode),l.return=t,t.child=l}function Xn(t,l){return t=rl(22,t,null,l),t.lanes=0,t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},t}function Pc(t,l,e){return Ta(l,t.child,null,e),t=Ic(l,l.pendingProps.children),t.flags|=2,l.memoizedState=null,t}function Gs(t,l,e){t.lanes|=l;var a=t.alternate;a!==null&&(a.lanes|=l),vc(t.return,l,e)}function tf(t,l,e,a,u){var n=t.memoizedState;n===null?t.memoizedState={isBackwards:l,rendering:null,renderingStartTime:0,last:a,tail:e,tailMode:u}:(n.isBackwards=l,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=e,n.tailMode=u)}function Xs(t,l,e){var a=l.pendingProps,u=a.revealOrder,n=a.tail;if(Vt(t,l,a.children,e),a=qt.current,(a&2)!==0)a=a&1|2,l.flags|=128;else{if(t!==null&&(t.flags&128)!==0)t:for(t=l.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&Gs(t,e,l);else if(t.tag===19)Gs(t,e,l);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break t;for(;t.sibling===null;){if(t.return===null||t.return===l)break t;t=t.return}t.sibling.return=t.return,t=t.sibling}a&=1}switch(H(qt,a),u){case"forwards":for(e=l.child,u=null;e!==null;)t=e.alternate,t!==null&&qn(t)===null&&(u=e),e=e.sibling;e=u,e===null?(u=l.child,l.child=null):(u=e.sibling,e.sibling=null),tf(l,!1,u,e,n);break;case"backwards":for(e=null,u=l.child,l.child=null;u!==null;){if(t=u.alternate,t!==null&&qn(t)===null){l.child=u;break}t=u.sibling,u.sibling=e,e=u,u=t}tf(l,!0,e,null,n);break;case"together":tf(l,!1,null,null,void 0);break;default:l.memoizedState=null}return l.child}function Fl(t,l,e){if(t!==null&&(l.dependencies=t.dependencies),be|=l.lanes,(e&l.childLanes)===0)if(t!==null){if(fu(t,l,e,!1),(e&l.childLanes)===0)return null}else return null;if(t!==null&&l.child!==t.child)throw Error(r(153));if(l.child!==null){for(t=l.child,e=Ll(t,t.pendingProps),l.child=e,e.return=l;t.sibling!==null;)t=t.sibling,e=e.sibling=Ll(t,t.pendingProps),e.return=l;e.sibling=null}return l.child}function lf(t,l){return(t.lanes&l)!==0?!0:(t=t.dependencies,!!(t!==null&&Sn(t)))}function R1(t,l,e){switch(l.tag){case 3:ht(l,l.stateNode.containerInfo),fe(l,Ct,t.memoizedState.cache),iu();break;case 27:case 5:Re(l);break;case 4:ht(l,l.stateNode.containerInfo);break;case 10:fe(l,l.type,l.memoizedProps.value);break;case 13:var a=l.memoizedState;if(a!==null)return a.dehydrated!==null?(he(l),l.flags|=128,null):(e&l.child.childLanes)!==0?Ys(t,l,e):(he(l),t=Fl(t,l,e),t!==null?t.sibling:null);he(l);break;case 19:var u=(t.flags&128)!==0;if(a=(e&l.childLanes)!==0,a||(fu(t,l,e,!1),a=(e&l.childLanes)!==0),u){if(a)return Xs(t,l,e);l.flags|=128}if(u=l.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),H(qt,qt.current),a)break;return null;case 22:case 23:return l.lanes=0,Ns(t,l,e);case 24:fe(l,Ct,t.memoizedState.cache)}return Fl(t,l,e)}function ws(t,l,e){if(t!==null)if(t.memoizedProps!==l.pendingProps)wt=!0;else{if(!lf(t,e)&&(l.flags&128)===0)return wt=!1,R1(t,l,e);wt=(t.flags&131072)!==0}else wt=!1,dt&&(l.flags&1048576)!==0&&vo(l,bn,l.index);switch(l.lanes=0,l.tag){case 16:t:{t=l.pendingProps;var a=l.elementType,u=a._init;if(a=u(a._payload),l.type=a,typeof a=="function")oc(a)?(t=Ve(a,t),l.tag=1,l=qs(null,l,a,t,e)):(l.tag=0,l=kc(null,l,a,t,e));else{if(a!=null){if(u=a.$$typeof,u===ct){l.tag=11,l=Rs(null,l,a,t,e);break t}else if(u===V){l.tag=14,l=Us(null,l,a,t,e);break t}}throw l=Xl(a)||a,Error(r(306,l,""))}}return l;case 0:return kc(t,l,l.type,l.pendingProps,e);case 1:return a=l.type,u=Ve(a,l.pendingProps),qs(t,l,a,u,e);case 3:t:{if(ht(l,l.stateNode.containerInfo),t===null)throw Error(r(387));a=l.pendingProps;var n=l.memoizedState;u=n.element,Ec(t,l),gu(l,a,null,e);var c=l.memoizedState;if(a=c.cache,fe(l,Ct,a),a!==n.cache&&pc(l,[Ct],e,!0),yu(),a=c.element,n.isDehydrated)if(n={element:a,isDehydrated:!1,cache:c.cache},l.updateQueue.baseState=n,l.memoizedState=n,l.flags&256){l=Bs(t,l,a,e);break t}else if(a!==u){u=bl(Error(r(424)),l),cu(u),l=Bs(t,l,a,e);break t}else{switch(t=l.stateNode.containerInfo,t.nodeType){case 9:t=t.body;break;default:t=t.nodeName==="HTML"?t.ownerDocument.body:t}for(Ot=Rl(t.firstChild),Pt=l,dt=!0,Ge=null,Nl=!0,e=bs(l,null,a,e),l.child=e;e;)e.flags=e.flags&-3|4096,e=e.sibling}else{if(iu(),a===u){l=Fl(t,l,e);break t}Vt(t,l,a,e)}l=l.child}return l;case 26:return Gn(t,l),t===null?(e=Vd(l.type,null,l.pendingProps,null))?l.memoizedState=e:dt||(e=l.type,t=l.pendingProps,a=ti(K.current).createElement(e),a[$t]=l,a[tl]=t,Jt(a,e,t),Xt(a),l.stateNode=a):l.memoizedState=Vd(l.type,t.memoizedProps,l.pendingProps,t.memoizedState),null;case 27:return Re(l),t===null&&dt&&(a=l.stateNode=Qd(l.type,l.pendingProps,K.current),Pt=l,Nl=!0,u=Ot,Te(l.type)?(qf=u,Ot=Rl(a.firstChild)):Ot=u),Vt(t,l,l.pendingProps.children,e),Gn(t,l),t===null&&(l.flags|=4194304),l.child;case 5:return t===null&&dt&&((u=a=Ot)&&(a=uy(a,l.type,l.pendingProps,Nl),a!==null?(l.stateNode=a,Pt=l,Ot=Rl(a.firstChild),Nl=!1,u=!0):u=!1),u||Xe(l)),Re(l),u=l.type,n=l.pendingProps,c=t!==null?t.memoizedProps:null,a=n.children,jf(u,n)?a=null:c!==null&&jf(u,c)&&(l.flags|=32),l.memoizedState!==null&&(u=Rc(t,l,A1,null,null,e),Bu._currentValue=u),Gn(t,l),Vt(t,l,a,e),l.child;case 6:return t===null&&dt&&((t=e=Ot)&&(e=ny(e,l.pendingProps,Nl),e!==null?(l.stateNode=e,Pt=l,Ot=null,t=!0):t=!1),t||Xe(l)),null;case 13:return Ys(t,l,e);case 4:return ht(l,l.stateNode.containerInfo),a=l.pendingProps,t===null?l.child=Ta(l,null,a,e):Vt(t,l,a,e),l.child;case 11:return Rs(t,l,l.type,l.pendingProps,e);case 7:return Vt(t,l,l.pendingProps,e),l.child;case 8:return Vt(t,l,l.pendingProps.children,e),l.child;case 12:return Vt(t,l,l.pendingProps.children,e),l.child;case 10:return a=l.pendingProps,fe(l,l.type,a.value),Vt(t,l,a.children,e),l.child;case 9:return u=l.type._context,a=l.pendingProps.children,Qe(l),u=Wt(u),a=a(u),l.flags|=1,Vt(t,l,a,e),l.child;case 14:return Us(t,l,l.type,l.pendingProps,e);case 15:return js(t,l,l.type,l.pendingProps,e);case 19:return Xs(t,l,e);case 31:return a=l.pendingProps,e=l.mode,a={mode:a.mode,children:a.children},t===null?(e=Xn(a,e),e.ref=l.ref,l.child=e,e.return=l,l=e):(e=Ll(t.child,a),e.ref=l.ref,l.child=e,e.return=l,l=e),l;case 22:return Ns(t,l,e);case 24:return Qe(l),a=Wt(Ct),t===null?(u=xc(),u===null&&(u=Tt,n=bc(),u.pooledCache=n,n.refCount++,n!==null&&(u.pooledCacheLanes|=e),u=n),l.memoizedState={parent:a,cache:u},Tc(l),fe(l,Ct,u)):((t.lanes&e)!==0&&(Ec(t,l),gu(l,null,null,e),yu()),u=t.memoizedState,n=l.memoizedState,u.parent!==a?(u={parent:a,cache:a},l.memoizedState=u,l.lanes===0&&(l.memoizedState=l.updateQueue.baseState=u),fe(l,Ct,a)):(a=n.cache,fe(l,Ct,a),a!==u.cache&&pc(l,[Ct],e,!0))),Vt(t,l,l.pendingProps.children,e),l.child;case 29:throw l.pendingProps}throw Error(r(156,l.tag))}function Il(t){t.flags|=4}function Qs(t,l){if(l.type!=="stylesheet"||(l.state.loading&4)!==0)t.flags&=-16777217;else if(t.flags|=16777216,!Wd(l)){if(l=Tl.current,l!==null&&((ft&4194048)===ft?Hl!==null:(ft&62914560)!==ft&&(ft&536870912)===0||l!==Hl))throw du=Ac,zo;t.flags|=8192}}function wn(t,l){l!==null&&(t.flags|=4),t.flags&16384&&(l=t.tag!==22?br():536870912,t.lanes|=l,Oa|=l)}function Au(t,l){if(!dt)switch(t.tailMode){case"hidden":l=t.tail;for(var e=null;l!==null;)l.alternate!==null&&(e=l),l=l.sibling;e===null?t.tail=null:e.sibling=null;break;case"collapsed":e=t.tail;for(var a=null;e!==null;)e.alternate!==null&&(a=e),e=e.sibling;a===null?l||t.tail===null?t.tail=null:t.tail.sibling=null:a.sibling=null}}function _t(t){var l=t.alternate!==null&&t.alternate.child===t.child,e=0,a=0;if(l)for(var u=t.child;u!==null;)e|=u.lanes|u.childLanes,a|=u.subtreeFlags&65011712,a|=u.flags&65011712,u.return=t,u=u.sibling;else for(u=t.child;u!==null;)e|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=t,u=u.sibling;return t.subtreeFlags|=a,t.childLanes=e,l}function U1(t,l,e){var a=l.pendingProps;switch(yc(l),l.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return _t(l),null;case 1:return _t(l),null;case 3:return e=l.stateNode,a=null,t!==null&&(a=t.memoizedState.cache),l.memoizedState.cache!==a&&(l.flags|=2048),kl(Ct),kt(),e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=null),(t===null||t.child===null)&&(nu(l)?Il(l):t===null||t.memoizedState.isDehydrated&&(l.flags&256)===0||(l.flags|=1024,So())),_t(l),null;case 26:return e=l.memoizedState,t===null?(Il(l),e!==null?(_t(l),Qs(l,e)):(_t(l),l.flags&=-16777217)):e?e!==t.memoizedState?(Il(l),_t(l),Qs(l,e)):(_t(l),l.flags&=-16777217):(t.memoizedProps!==a&&Il(l),_t(l),l.flags&=-16777217),null;case 27:wl(l),e=K.current;var u=l.type;if(t!==null&&l.stateNode!=null)t.memoizedProps!==a&&Il(l);else{if(!a){if(l.stateNode===null)throw Error(r(166));return _t(l),null}t=Y.current,nu(l)?po(l):(t=Qd(u,a,e),l.stateNode=t,Il(l))}return _t(l),null;case 5:if(wl(l),e=l.type,t!==null&&l.stateNode!=null)t.memoizedProps!==a&&Il(l);else{if(!a){if(l.stateNode===null)throw Error(r(166));return _t(l),null}if(t=Y.current,nu(l))po(l);else{switch(u=ti(K.current),t){case 1:t=u.createElementNS("http://www.w3.org/2000/svg",e);break;case 2:t=u.createElementNS("http://www.w3.org/1998/Math/MathML",e);break;default:switch(e){case"svg":t=u.createElementNS("http://www.w3.org/2000/svg",e);break;case"math":t=u.createElementNS("http://www.w3.org/1998/Math/MathML",e);break;case"script":t=u.createElement("div"),t.innerHTML=" + + + +
+ + + + + + + + + diff --git a/hooks/useIntersectionObserver.js b/hooks/useIntersectionObserver.js new file mode 100644 index 00000000..60c22f36 --- /dev/null +++ b/hooks/useIntersectionObserver.js @@ -0,0 +1,28 @@ +import { useEffect, useState } from "react"; + +const useIntersectionObserver = (ref, options) => { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const observer = new IntersectionObserver(([entry]) => { + if (entry.isIntersecting) { + setIsVisible(true); + observer.unobserve(entry.target); // Stop observing after it becomes visible + } + }, options); + + if (ref.current) { + observer.observe(ref.current); + } + + return () => { + if (ref.current) { + observer.unobserve(ref.current); + } + }; + }, [ref, options]); + + return isVisible; +}; + +export default useIntersectionObserver; diff --git a/index.html b/index.html index 6676fb2d..eee13474 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,74 @@ - + - - Portfolio + + + + - +
+ + + + + + + diff --git a/media.js b/media.js new file mode 100644 index 00000000..e69de29b diff --git a/package.json b/package.json index 48911600..50024f92 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,35 @@ { - "name": "project", - "private": true, - "version": "0.0.0", - "type": "module", + "dependencies": { + "@headlessui/react": "^2.2.2", + "@heroicons/react": "^2.2.0", + "@vitejs/plugin-react": "^4.4.1", + "prop-types": "^15.8.1", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "styled-components": "^6.1.17" + }, + "name": "testing-repo", + "version": "1.0.0", + "main": "app.js", "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", "dev": "vite", "build": "vite build", - "lint": "eslint .", "preview": "vite preview" }, - "dependencies": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "repository": { + "type": "git", + "url": "git+https://github.com/oskarnordin/testing-repo.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/oskarnordin/testing-repo/issues" }, + "homepage": "https://github.com/oskarnordin/testing-repo#readme", + "description": "", "devDependencies": { - "@eslint/js": "^9.21.0", - "@types/react": "^19.0.10", - "@types/react-dom": "^19.0.4", - "@vitejs/plugin-react": "^4.3.4", - "eslint": "^9.21.0", - "eslint-plugin-react-hooks": "^5.1.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^15.15.0", - "vite": "^6.2.0" + "vite": "^6.2.6" } } diff --git a/public/img/access.png b/public/img/access.png new file mode 100644 index 00000000..7b4a1969 Binary files /dev/null and b/public/img/access.png differ diff --git a/public/img/angle-down.png b/public/img/angle-down.png new file mode 100644 index 00000000..6ef7efe8 Binary files /dev/null and b/public/img/angle-down.png differ diff --git a/public/img/angle-square-down.png b/public/img/angle-square-down.png new file mode 100644 index 00000000..69665fd9 Binary files /dev/null and b/public/img/angle-square-down.png differ diff --git a/public/img/angle-square-down.svg b/public/img/angle-square-down.svg new file mode 100644 index 00000000..908518fb --- /dev/null +++ b/public/img/angle-square-down.svg @@ -0,0 +1,2 @@ + + diff --git a/public/img/angle-square-light.webp b/public/img/angle-square-light.webp new file mode 100644 index 00000000..53c5a1fb Binary files /dev/null and b/public/img/angle-square-light.webp differ diff --git a/public/img/bg-video-3.mp4 b/public/img/bg-video-3.mp4 new file mode 100644 index 00000000..8356a066 Binary files /dev/null and b/public/img/bg-video-3.mp4 differ diff --git a/public/img/placeholder.svg b/public/img/placeholder.svg new file mode 100644 index 00000000..695f4493 --- /dev/null +++ b/public/img/placeholder.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/img/portfolio.png b/public/img/portfolio.png new file mode 100644 index 00000000..08d3ca2f Binary files /dev/null and b/public/img/portfolio.png differ diff --git a/public/img/selfie-round.png b/public/img/selfie-round.png new file mode 100644 index 00000000..385a5333 Binary files /dev/null and b/public/img/selfie-round.png differ diff --git a/public/img/sushi.webp b/public/img/sushi.webp new file mode 100644 index 00000000..a1219fbe Binary files /dev/null and b/public/img/sushi.webp differ diff --git a/public/img/thinking.png b/public/img/thinking.png new file mode 100644 index 00000000..c251d798 Binary files /dev/null and b/public/img/thinking.png differ diff --git a/public/img/weather.jpg b/public/img/weather.jpg new file mode 100644 index 00000000..8f80d513 Binary files /dev/null and b/public/img/weather.jpg differ diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 4263c7e8..00000000 --- a/pull_request_template.md +++ /dev/null @@ -1 +0,0 @@ -Please include a link to your Figma design and a Netlify link. \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index a161d8d3..2ffda052 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,8 +1,26 @@ -export const App = () => { +import React from "react"; +import Overlay from "./components/Sections/Overlay"; +import SkillsSection from "./components/Sections/Skills"; +import TechstackSection from "./components/Sections/Techstack"; +import HeroVideo from "./components/HeroVideo"; +import FeaturedProjects from "./components/Sections/Projects"; +import MyWordsSection from "./components/Sections/MyWords"; +import ContactSection from "./components/Sections/Contact"; +import "./style.css"; + +function App() { return ( <> -

Portfolio

-

Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatem, laborum! Maxime animi nostrum facilis distinctio neque labore consectetur beatae eum ipsum excepturi voluptatum, dicta repellendus incidunt fugiat, consequatur rem aperiam.

+ + + + + + + +
- ) + ); } + +export default App; diff --git a/src/components/Cards/ContactCard.jsx b/src/components/Cards/ContactCard.jsx new file mode 100644 index 00000000..6ca03777 --- /dev/null +++ b/src/components/Cards/ContactCard.jsx @@ -0,0 +1,88 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import useIntersectionObserver from "/hooks/useIntersectionObserver"; + +const ContactCardContainer = styled.div` + background-color: transparent; + display: flex; + border-radius: 28px; + align-items: center; + flex-direction: column; + flex-wrap: wrap; + min-height: 650px; + padding: 40px; + width: 450px; + gap: 10px; + text-align: center; + opacity: 0; /* Start hidden */ + transform: translateY(20px); /* Start with offset */ + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + + &.visible { + opacity: 1; + transform: translateY(0); + } + + @media (max-width: 1200px) { + width: 100%; + height: 450px; + border-radius: 18px; + padding: 0px; + } +`; + +const SelfieImage = styled.img` + border-radius: 50%; + width: 300px; + height: 300px; + padding: 10px; + + @media (max-width: 768px) { + width: 150px; + height: 150px; + padding: 6px; + } +`; + +const ContactH2 = styled.h2` + color: black; + font-size: 64px; + font-weight: bold; + margin-bottom: 10px; +`; + +const ContactH3 = styled.h3` + background-color: transparent; + justify-content: center; + align-items: center; + font-family: DM sans; + display: flex; + color: #2d3748; + font-weight: 600; + font-size: 32px; + padding: 10px; + margin: 5px; + border-radius: 16px; + text-decoration: none; + + @media (max-width: 768px) { + font-size: 18px; + } +`; + +const ContactCard = () => { + const ref = useRef(null); + const isVisible = useIntersectionObserver(ref, { threshold: 0.1 }); + + return ( + + Let's talk + + Oskar Nordin + +46701774998 + oskarnordin1@gmail.com + + ); +}; + +export default ContactCard; diff --git a/src/components/Cards/InfoCard.jsx b/src/components/Cards/InfoCard.jsx new file mode 100644 index 00000000..2b086f5e --- /dev/null +++ b/src/components/Cards/InfoCard.jsx @@ -0,0 +1,100 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import useIntersectionObserver from "/hooks/useIntersectionObserver"; + +const InfoCardContainer = styled.div` + background-color: transparent; + display: flex; + border-radius: 28px; + align-items: center; + flex-direction: column; + flex-wrap: wrap; + height: 650px; + padding: 40px; + width: 100%; + max-width: 400px; + gap: 10px; + text-align: center; + /* box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); */ + opacity: 0; /* Start hidden */ + transform: translateY(20px); /* Start with offset */ + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + + &.visible { + opacity: 1; + transform: translateY(0); + } +`; + +const InfoIcons = styled.img` + display: none; + width: 70px; + height: 70px; + margin-bottom: 10px; +`; + +const InfoH2 = styled.h2` + color: white; + font-size: 44px; + font-weight: bold; + margin-bottom: 10px; +`; + +const InfoH3 = styled.h3` + background-color: #e2e8f0; + justify-content: center; + align-items: center; + font-family: DM sans; + display: flex; + color: #2d3748; + font-weight: 600; + font-size: 18px; + padding: 10px; + margin: 5px; + border-radius: 16px; + text-decoration: none; +`; + +const infoP = styled.p` + background-color: #434343; + justify-content: center; + display: flex; + color: #2d3748; + font-weight: 600; + width: 120px; + font-size: 16px; + padding: 10px; + margin: 5px; + border-radius: 16px; + text-decoration: none; + + @media (max-width: 1200px) { + padding: 0px; + } +`; + +const InfoPContainer = styled.div` + display: flex; + flex-direction: row; /* Arrange InfoH3 elements in a row */ + gap: 10px; /* Add spacing between the elements */ + justify-content: center; /* Center the row */ + flex-wrap: wrap; /* Allow wrapping if there are too many items */ +`; + +const InfoCard = ({ title, info }) => { + const ref = useRef(null); + const isVisible = useIntersectionObserver(ref, { threshold: 0.1 }); + + return ( + + {title} + + {info.map((info, index) => ( + {info} + ))} + + + ); +}; + +export default InfoCard; diff --git a/src/components/Cards/MyWordsCard.jsx b/src/components/Cards/MyWordsCard.jsx new file mode 100644 index 00000000..7c9475ae --- /dev/null +++ b/src/components/Cards/MyWordsCard.jsx @@ -0,0 +1,74 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import useIntersectionObserver from "/hooks/useIntersectionObserver"; + +const MyWordsCardContainer = styled.div` + background-color: #f8f8f8; /* Match the background color of other cards */ + display: flex; + flex-direction: column; /* Align content vertically */ + align-items: center; + border-radius: 16px; /* Adjust to match other cards */ + height: 454px; /* Adjust height */ + width: 553px; /* Adjust width */ + padding: 40px; + margin-bottom: 50px; + text-align: center; + gap: 10px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); /* Match shadow style */ + transform: translateY(20px); /* Start with offset */ + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + + &.visible { + opacity: 1; + transform: translateY(0); + } + + @media (max-width: 768px) { + width: 100%; + height: auto; + padding: 15px; + } +`; + +const MyWordsImage = styled.img` + width: 100%; /* Ensure the image scales with the container */ + height: 200px; /* Adjust height */ + object-fit: cover; /* Maintain aspect ratio */ + border-radius: 12px; /* Match other cards */ +`; + +const MyWordsH2 = styled.h2` + color: #333; /* Adjust color */ + font-size: 24px; /* Adjust font size */ + font-weight: bold; + margin: 10px 0; + word-wrap: break-word; /* Prevent long words from breaking layout */ + text-align: center; /* Center text */ +`; + +const MyWordsH3 = styled.h3` + color: #666; /* Adjust color */ + font-size: 16px; /* Adjust font size */ + font-weight: normal; + margin: 5px 0; + font-family: "DM Sans", sans-serif; + word-wrap: break-word; /* Prevent long words from breaking layout */ + text-align: center; /* Center text */ +`; + +const MyWordsCard = ({ imgSrc, title, info }) => { + const ref = useRef(null); + const isVisible = useIntersectionObserver(ref, { threshold: 0.1 }); + + return ( + + + {title} + {info.map((info, index) => ( + {info} + ))} + + ); +}; + +export default MyWordsCard; diff --git a/src/components/Cards/ProjectCard.jsx b/src/components/Cards/ProjectCard.jsx new file mode 100644 index 00000000..e9a3d5bf --- /dev/null +++ b/src/components/Cards/ProjectCard.jsx @@ -0,0 +1,145 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import useIntersectionObserver from "/hooks/useIntersectionObserver"; + +const ProjectCardContainer = styled.div` + display: flex; + border-radius: 28px; + align-items: center; + flex-direction: column; + flex-wrap: wrap; + height: 650px; + max-width: 450px; + gap: 20px; + text-align: center; + padding: 40px; + margin-bottom: 50px; + box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(7.1px); + -webkit-backdrop-filter: blur(7.1px); + opacity: 0; /* Start hidden */ + transform: translateY(20px); /* Start with offset */ + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + + &.visible { + opacity: 1; + transform: translateY(0); + } + @media (max-width: 768px) { + height: 600px; /* Full viewport height on mobile */ + min-width: 100%; /* Full width on mobile */ + border-radius: 18px; /* Remove border radius for a full-screen effect */ + padding: 10px; /* Adjust padding for smaller screens */ + } +`; + +const ProjectImage = styled.img` + border-radius: 28px; + width: 90%; + height: 250px; + + padding: 10px; + + @media (max-width: 768px) { + height: 150px; + } +`; + +const ProjectTitle = styled.h3` + display: flex; + justify-content: left; + text-align: left; + font-size: 30px; + font-weight: 600; + margin-bottom: 6px; + margin-top: 8px; +`; + +const ProjectDescription = styled.p` + font-size: 16px; + color: #0e0e0e; + margin-bottom: 1rem; + justify-content: center; + text-align: center; +`; + +const TechTag = styled.span` + background-color: #ebf8ff; + color: #2b6cb0; + font-size: 0.875rem; + padding: 0.25rem 0.5rem; + border-radius: 0.5rem; +`; + +const Button = styled.a` + background-color: #e2e8f0; + justify-content: center; + display: flex; + color: #2d3748; + font-weight: 600; + width: 120px; + font-size: 16px; + padding: 10px; + margin: 5px; + border-radius: 16px; + text-decoration: none; + &:hover { + background-color: #cbd5e0; + } +`; + +const ButtonWrapper = styled.div` + display: flex; + justify-content: left; + flex-direction: row; + align-items: flex-end; + + @media (max-width: 768px) { + flex-direction: column; /* Stack buttons vertically */ + align-items: center; /* Center align buttons */ + gap: 10px; /* Add spacing between buttons */ + } +`; + +const TechTagsWrapper = styled.div` + display: flex; + flex-wrap: wrap; + gap: 8px; /* Matches Tailwind's gap-2 */ + margin-bottom: 16px; /* Matches Tailwind's mb-4 */ +`; + +const ProjectCard = ({ + title, + description, + stack, + imgSrc, + liveDemo, + codeLink, +}) => { + const ref = useRef(null); + const isVisible = useIntersectionObserver(ref, { threshold: 0.1 }); + + return ( + + + {title} + {description} + + {stack.map((tech, index) => ( + {tech} + ))} + + + + + + + + ); +}; + +export default ProjectCard; diff --git a/src/components/HeroVideo.jsx b/src/components/HeroVideo.jsx new file mode 100644 index 00000000..053c4ccc --- /dev/null +++ b/src/components/HeroVideo.jsx @@ -0,0 +1,47 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; + +const VideoContainer = styled.div` + position: relative; + width: 100%; + height: 100vh; + margin: 0; + padding: 0; + overflow: hidden; +`; + +const HeroVideoStyle = styled.video` + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + object-fit: cover; + background-color: rgb(233, 233, 233); + z-index: 1; + @media (max-width: 768px) { + display: none; + } +`; + +function HeroVideo() { + const videoRef = useRef(null); + + return ( + + + + Your browser does not support the video tag. + + + ); +} + +export default HeroVideo; diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx new file mode 100644 index 00000000..f756bc48 --- /dev/null +++ b/src/components/Navbar.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import styled from "styled-components"; + +const NavbarContainer = styled.div` + background: rgba(245, 245, 245, 0.21); + color: white; + font-size: 20px; + font-family: Agdasima; + border-radius: 0px; + box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(7.1px); + -webkit-backdrop-filter: blur(7.1px); + width: 100%; + height: 60px; /* Adjusted height */ + padding: 0 20px; /* Horizontal padding */ + display: flex; + justify-content: space-evenly; + align-items: center; + z-index: 100; + position: fixed; + top: 0; /* Ensure it sticks to the top */ + left: 0; /* Ensure it spans the full width */ +`; + +const Navbar = () => { + return ( + + Tech Stack + Skills + Projects + My Words + Contact + + ); +}; + +export default Navbar; diff --git a/src/components/Sections/Contact.jsx b/src/components/Sections/Contact.jsx new file mode 100644 index 00000000..24584513 --- /dev/null +++ b/src/components/Sections/Contact.jsx @@ -0,0 +1,47 @@ +import React from "react"; +import ContactCard from "../Cards/ContactCard"; +import styled from "styled-components"; + +const Background = styled.div` + position: relative; + background-color: #e6e6e6; + min-height: 100vh; + min-width: 100%; + z-index: 20; +`; + +const GridLayout = styled.div` + min-height: 100vh; + background-color: #eeeeee; + font-family: Teko, sans-serif; + color: #000000; + position: relative; + z-index: 30; + font-size: 16px; + font-weight: 300; + grid-column: span 4; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; + padding: 2rem; + margin: 0 auto; + box-sizing: border-box; + justify-content: center; + align-items: center; + @media (max-width: 768px) { + grid-column: span 1; + } +`; + +const ContactSection = () => { + return ( + + + + + + ); +}; + +export default ContactSection; diff --git a/src/components/Sections/MyWords.jsx b/src/components/Sections/MyWords.jsx new file mode 100644 index 00000000..da9349aa --- /dev/null +++ b/src/components/Sections/MyWords.jsx @@ -0,0 +1,66 @@ +import React from "react"; +import MyWordsCard from "../Cards/MyWordsCard"; +import styled from "styled-components"; +import { AngleDownImage } from "../SharedComponents"; +import { CenteredContainer } from "../SharedComponents"; + +const Background = styled.div` + position: relative; + background-color: #e6e6e6; + min-height: 100vh; + min-width: 100%; + z-index: 20; +`; + +const GridLayout = styled.div` + min-height: 100vh; + background-color: #eeeeee; + font-family: Teko, sans-serif; + color: #000000; + position: relative; + z-index: 30; + font-size: 16px; + font-weight: 300; + grid-column: span 4; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; + padding: 2rem; + margin: 0 auto; + box-sizing: border-box; + justify-content: center; + align-items: center; + @media (max-width: 768px) { + grid-column: span 1; + } +`; + +const MyWordsSection = () => { + return ( + + + + + + + + + + + + ); +}; + +export default MyWordsSection; diff --git a/src/components/Sections/Overlay.jsx b/src/components/Sections/Overlay.jsx new file mode 100644 index 00000000..f735748a --- /dev/null +++ b/src/components/Sections/Overlay.jsx @@ -0,0 +1,119 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import useIntersectionObserver from "/hooks/useIntersectionObserver"; +import { AngleDownImage } from "../SharedComponents"; +import { CenteredContainer } from "../SharedComponents"; + +const OverlayContainer = styled.div` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100vh; + background-color: rgba(0, 0, 0, 0.1); + z-index: 20; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +`; + +const OverlayCard = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + max-width: 600px; + max-height: 600px; + background: rgba(255, 255, 255, 0.8); + border-radius: 28px; + box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(7.1px); + -webkit-backdrop-filter: blur(7.1px); + border-radius: 36px; + padding: 50px; + border-left: 10px solid blue; + border-bottom: 10px solid blue; + opacity: 0; /* Start hidden */ + transform: translateY(20px); /* Start with offset */ + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + + &.visible { + opacity: 1; + transform: translateY(0); + } + + @media (max-width: 768px) { + background-color: transparent; + border: none; + height: 100%; + width: 100%; + border-radius: 0; + padding: 0px; + margins: 0px; + } +`; + +const SelfieImage = styled.img` + border-radius: 50%; + width: 180px; + height: 180px; + padding: 10px; + + @media (max-width: 768px) { + width: 140px; + height: 140px; + } +`; + +const H2overlay = styled.h2` + font-size: 26px; + font-family: "Agdasima", sans-serif; + font-weight: 400; + color: #000000; + text-align: center; + margin-bottom: 0px; +`; + +const H1overlay = styled.h1` + font-size: 64px; + font-family: "Agdasima", sans-serif; + color: black; + + @media (max-width: 768px) { + font-size: 48px; + } +`; + +function Overlay() { + const overlayRef = useRef(null); + const isOverlayVisible = useIntersectionObserver(overlayRef, { + threshold: 0.1, + }); + + return ( + + + + Hi, I'm Oskar Nordin + Web Developer + + With a background in A/B-testing and data analysis. + + + + + + + + + ); +} + +export default Overlay; diff --git a/src/components/Sections/Projects.jsx b/src/components/Sections/Projects.jsx new file mode 100644 index 00000000..ab51215b --- /dev/null +++ b/src/components/Sections/Projects.jsx @@ -0,0 +1,99 @@ +import React from "react"; +import styled from "styled-components"; +import ProjectCard from "../Cards/ProjectCard"; +import { AngleDownImage } from "../SharedComponents"; +import { CenteredContainer } from "../SharedComponents"; + +const ProjectContainer = styled.div` + min-height: 100vh; + max-width: 100%; + background-color: #f8f8f8; + font-family: Teko, sans-serif; + color: #000000; + position: relative; + z-index: 30; + font-size: 16px; + font-weight: 300; + grid-column: span 4; + display: flex; + flex-direction: row; + justify-content: center; + flex-wrap: wrap; + gap: 20px; + padding: 2rem; + margin: 0 auto; + box-sizing: border-box; + justify-content: center; + align-items: center; + @media (max-width: 768px) { + grid-column: span 1; + } +`; + +const SectionContainer = styled.section` + position: relative; + display: flex; + justify-content: center; /* Center content horizontally */ + align-items: center; /* Center content vertically */ + flex-direction: column; /* Stack items vertically */ + min-height: 100vh; /* Full viewport height */ + padding: 2rem 1rem; /* Add padding for spacing */ + background-color: transparent; + text-align: center; /* Center text if needed */ +`; + +const SectionHeading = styled.h2` + color: black; + font-size: 2em; + font-weight: bold; + margin-bottom: 10px; +`; + +const FeaturedProjects = () => { + return ( + + + + + + + + + + + + ); +}; + +export default FeaturedProjects; diff --git a/src/components/Sections/Skills.jsx b/src/components/Sections/Skills.jsx new file mode 100644 index 00000000..e7a5f99f --- /dev/null +++ b/src/components/Sections/Skills.jsx @@ -0,0 +1,78 @@ +// components/SkillsSection.jsx +import React from "react"; +import InfoCard from "../Cards/InfoCard"; +import styled from "styled-components"; +import { AngleDownImage } from "../SharedComponents"; +import { CenteredContainer } from "../SharedComponents"; + +const Background = styled.div` + position: relative; + background-color: #f8f8f8; + min-height: 100vh; + min-width: 100%; + z-index: 20; +`; + +const SkillsContainer = styled.div` + min-height: 100vh; + background-color: navy; + font-family: Teko, sans-serif; + color: white; + position: relative; + z-index: 30; + font-size: 16px; + font-weight: 300; + grid-column: span 4; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; + padding: 2rem; + margin: 0 auto; + box-sizing: border-box; + justify-content: center; + align-items: center; + @media (max-width: 768px) { + grid-column: span 1; + width: 100%; + } +`; + +const SkillsSection = () => { + return ( + + + + + + + + + + + + + + ); +}; + +export default SkillsSection; diff --git a/src/components/Sections/Techstack.jsx b/src/components/Sections/Techstack.jsx new file mode 100644 index 00000000..41a4b873 --- /dev/null +++ b/src/components/Sections/Techstack.jsx @@ -0,0 +1,77 @@ +import React from "react"; +import InfoCard from "../Cards/InfoCard"; +import styled from "styled-components"; +import { AngleDownImage } from "../SharedComponents"; +import { CenteredContainer } from "../SharedComponents"; + +const Background = styled.div` + position: relative; + background-color: navy; + min-height: 100vh; + min-width: 100%; + z-index: 20; +`; + +const TechstackContainer = styled.div` + min-height: 100vh; + background-color: navy; + font-family: Teko, sans-serif; + color: white; + position: relative; + z-index: 30; + font-size: 16px; + font-weight: 300; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 20px; + padding: 2rem; + margin: 0 auto; + box-sizing: border-box; + align-items: center; + max-width: 100%; /* Prevent container from exceeding screen width */ + overflow: hidden; /* Prevent content overflow */ + + @media (max-width: 768px) { + padding: 1rem; /* Reduce padding on smaller screens */ + font-size: 14px; /* Adjust font size for better readability */ + } +`; + +const TechstackSection = () => { + return ( + + + + + + + + + + + + ); +}; + +export default TechstackSection; diff --git a/src/components/SharedComponents.js b/src/components/SharedComponents.js new file mode 100644 index 00000000..24d35ad9 --- /dev/null +++ b/src/components/SharedComponents.js @@ -0,0 +1,41 @@ +import styled from "styled-components"; + +export const CenteredContainer = styled.div` + position: absolute; + background-color: transparent; + margin-top: 30px; + bottom: 30px; + left: 50%; + transform: translateX(-50%); + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + color: black; + + @media (max-width: 768px) { + display: none; + } +`; + +export const AngleDownImage = styled.img` + margin-top: 30px; + width: 30px; + height: 30px; + cursor: pointer; + animation: pulse 2s infinite ease-in-out; + + @media (max-width: 768px) { + display: none; + } + + @keyframes pulse { + 0%, + 100% { + transform: scale(1); + } + 50% { + transform: scale(1.1); + } + } +`; diff --git a/src/data/projects.json b/src/data/projects.json deleted file mode 100644 index 7c426028..00000000 --- a/src/data/projects.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "projects": [ - { - "name": "Business site", - "image": "https://images.unsplash.com/photo-1557008075-7f2c5efa4cfd?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2497&q=80", - "tags": [ - "HTML5", - "CSS3", - "JavaScript" - ], - "netlify": "link", - "github": "link" - }, - { - "name": "Weather app", - "image": "https://images.unsplash.com/photo-1520792532857-293bd046307a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2370&q=80", - "tags": [ - "HTML5", - "CSS3", - "JavaScript", - "TypeScript", - "APIs" - ], - "netlify": "link", - "github": "link" - } - ] -} \ No newline at end of file diff --git a/src/index.css b/src/index.css deleted file mode 100644 index 61010be6..00000000 --- a/src/index.css +++ /dev/null @@ -1,4 +0,0 @@ -body { - background: pink; - color: hotpink; -} \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index ed109d76..5412d668 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,12 +1,25 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.jsx"; +import "./style.css"; -import { App } from './App.jsx' +const root = ReactDOM.createRoot(document.getElementById("root")); +root.render(); -import './index.css' +document.addEventListener("DOMContentLoaded", () => { + const elements = document.querySelectorAll(".fade-in"); -createRoot(document.getElementById('root')).render( - - - , -) + const observer = new IntersectionObserver( + (entries, observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add("visible"); + observer.unobserve(entry.target); // Stop observing once visible + } + }); + }, + { threshold: 0.1 } // Trigger when 10% of the element is visible + ); + + elements.forEach((el) => observer.observe(el)); +}); diff --git a/src/style.css b/src/style.css new file mode 100644 index 00000000..c4b21b5a --- /dev/null +++ b/src/style.css @@ -0,0 +1,152 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + scroll-behavior: smooth; +} + +body { + background-color: #240e66; + margin: 0; + padding: 0; +} + +p { + font-family: 'DM Sans', system-ui; + font-size: 16px; + margin: 1px; + line-height: 1.2; +} + +a { + color: white; + text-decoration: none; +} + +.container { + position: relative; + width: 100%; + height: 100vh; + overflow: hidden; +} + +h1 { + font-size: 24px; + font-family: Agdasima; + font-weight: bold; + color: #f5f5f5; + text-align: center; + margin: 0; +} + +h2 { + font-size: 28px; + font-family: 'Agdasima', sans-serif; + font-weight: 400; + color: black; + font-weight: 600; + text-align: center; + margin: 10px; +} + +h3 { + font-size: 34px; + font-family: 'Agdasima', sans-serif; + font-weight: 600; + color: #222222; + margin: 0; +} + +@keyframes pulse { + 0%, + 100% { + transform: translateX(-50%) scale(1); /* Normal size */ + } + 50% { + transform: translateX(-50%) scale(1.1); /* Slightly bigger */ + } +} + +.sectionCards { + display: flex; + border-radius: 28px; + align-items: center; + flex-direction: column; + min-height: 350px; + width: 450px; + gap: 20px; + padding: 30px; + grid-column: 12 / 7; + grid-row: 1 / 7; + box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(7.1px); + -webkit-backdrop-filter: blur(7.1px); +} + +.skillsIcons { + width: 40px; + margin-top: 25px; +} + +.fade-in { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; +} + +.fade-in.visible { + opacity: 1; + transform: translateY(0); +} + +@media (max-width: 768px) { + body { + margin: 0; + padding: 0; + font-size: 16px; /* Adjust base font size for readability */ + } + + .sectionTwo { + background-color: #f4f4f4; + padding: px; + } + + .sectionFourCards { + width: 100%; /* Make cards take full width */ + gap: 10px; /* Reduce gap between cards */ + } +} + +/* Media query for devices with a max width of 480px (phones) */ +@media (max-width: 480px) { + .overlay h1 { + font-size: 2.5em; /* Further reduce font size for the main title */ + } + + .overlay h2 { + font-size: 1.2em; /* Further reduce font size for subtitles */ + } + + .selfie { + width: 100px; /* Further reduce the size of the selfie image */ + } + + .techHeadline { + font-size: 1.5em; /* Reduce font size for headlines */ + } + + .techStack { + font-size: 22px; /* Adjust font size for the tech stack */ + line-height: 1.3; /* Improve readability */ + font-family: 'Inter'; + } + + .sectionFourContainer { + width: 100%; /* Use full width for the container */ + padding: 10px; /* Add padding for better spacing */ + } + + .sectionFourCards { + gap: 5px; /* Reduce gap between cards */ + } +} diff --git a/theme.js b/theme.js new file mode 100644 index 00000000..e69de29b diff --git a/vite.config.js b/vite.config.js index 8b0f57b9..081c8d9f 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,6 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; -// https://vite.dev/config/ export default defineConfig({ plugins: [react()], -}) +});