From 7be98e17933242111a37b76a4a2e0c7a2b5fc600 Mon Sep 17 00:00:00 2001 From: Skydust Date: Thu, 31 Aug 2023 19:42:15 +0200 Subject: [PATCH] Linted the whole project with eslint --- .eslintrc | 503 +++++++++++++++ components/blocks-renderer.tsx | 56 +- components/blocks/carousel.tsx | 12 +- components/blocks/content.tsx | 78 +-- components/blocks/features.tsx | 206 +++--- components/blocks/hero.tsx | 326 +++++----- components/blocks/testimonial.tsx | 2 +- components/layout/footer/footer.tsx | 230 ++++--- components/layout/footer/rawRenderer.tsx | 160 ++--- components/layout/header.tsx | 149 +++-- components/layout/layout.tsx | 58 +- components/posts/post.tsx | 318 +++++----- components/posts/posts.tsx | 104 ++-- components/util/actions.tsx | 162 ++--- components/util/anchoring.tsx | 135 ++-- components/util/container.tsx | 52 +- components/util/icon.tsx | 245 ++++---- components/util/section.tsx | 50 +- content/pages/home.md | 3 + package.json | 4 +- pages/404.js | 38 +- pages/[filename].tsx | 48 +- pages/_app.tsx | 2 +- pages/posts.tsx | 34 +- pages/posts/[filename].tsx | 62 +- tina/config.tsx | 501 ++++++--------- tina/fields/color.tsx | 86 +-- tina/fields/icon.tsx | 233 ++++--- yarn.lock | 760 ++++++++++++++++++++++- 29 files changed, 2931 insertions(+), 1686 deletions(-) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..32cc22d --- /dev/null +++ b/.eslintrc @@ -0,0 +1,503 @@ +{ + "parser": "@typescript-eslint/parser", + "parserOptions": { + "jsx": true, + "useJSXTextNode": true + }, + "extends": [ + "plugin:@typescript-eslint/recommended" + ], + "plugins": ["@typescript-eslint", "react-hooks", "react"], + "rules": { + "@typescript-eslint/no-inferrable-types": 0, + "@typescript-eslint/no-empty-function": 0, + "@typescript-eslint/no-var-requires": 0, + "@typescript-eslint/no-shadow": ["error"], + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/explicit-module-boundary-types": 0, + "@typescript-eslint/no-unused-vars": 0, + // + //Possible Errors + // + // The following rules point out areas where you might have made mistakes. + // + "comma-dangle": 2, + // disallow or enforce trailing commas + "no-cond-assign": 2, + // disallow assignment in conditional expressions + "no-console": [ + "warn", + { + "allow": [ + "warn", + "error" + ] + } + ], + // disallow use of console (off by default in the node environment) + "no-constant-condition": 2, + // disallow use of constant expressions in conditions + "no-control-regex": 2, + // disallow control characters in regular expressions + "no-debugger": 2, + // disallow use of debugger + "no-dupe-args": 2, + // disallow duplicate arguments in functions + "no-dupe-keys": 2, + // disallow duplicate keys when creating object literals + "no-duplicate-case": 2, + // disallow a duplicate case label. + "no-empty": 2, + // disallow empty statements + "no-empty-character-class": 2, + // disallow the use of empty character classes in regular expressions + "no-ex-assign": 2, + // disallow assigning to the exception in a catch block + "no-extra-boolean-cast": 2, + // disallow double-negation boolean casts in a boolean context + "no-extra-parens": 0, + // disallow unnecessary parentheses (off by default) + "no-extra-semi": 2, + // disallow unnecessary semicolons + "no-func-assign": 2, + // disallow overwriting functions written as function declarations + "no-inner-declarations": 2, + // disallow function or variable declarations in nested blocks + "no-invalid-regexp": 2, + // disallow invalid regular expression strings in the RegExp constructor + "no-irregular-whitespace": 2, + // disallow irregular whitespace outside of strings and comments + "no-negated-in-lhs": 2, + // disallow negation of the left operand of an in expression + "no-obj-calls": 2, + // disallow the use of object properties of the global object (Math and JSON) as functions + "no-regex-spaces": 2, + // disallow multiple spaces in a regular expression literal + "no-sparse-arrays": 2, + // disallow sparse arrays + "no-unreachable": 2, + // disallow unreachable statements after a return, throw, continue, or break statement + "use-isnan": 2, + // disallow comparisons with the value NaN + "valid-jsdoc": 2, + // Ensure JSDoc comments are valid (off by default) + "valid-typeof": 2, + // Ensure that the results of typeof are compared against a valid string + // + // Best Practices + // + // These are rules designed to prevent you from making mistakes. + // They either prescribe a better way of doing something or help you avoid footguns. + // + "prefer-arrow-callback": 2, + "block-scoped-var": 0, + // treat var statements as if they were block scoped (off by default). 0: deep destructuring is not compatible https://github.com/eslint/eslint/issues/1863 + "complexity": 0, + // specify the maximum cyclomatic complexity allowed in a program (off by default) + "consistent-return": 2, + // require return statements to either always or never specify values + "curly": 2, + // specify curly brace conventions for all control statements + "default-case": 2, + // require default case in switch statements (off by default) + "dot-notation": 2, + // encourages use of dot notation whenever possible + "eqeqeq": 0, + // require the use of === and !== + "guard-for-in": 2, + // make sure for-in loops have an if statement (off by default) + "no-alert": 2, + // disallow the use of alert, confirm, and prompt + "no-caller": 2, + // disallow use of arguments.caller or arguments.callee + "no-div-regex": 2, + // disallow division operators explicitly at beginning of regular expression (off by default) + "no-else-return": 2, + // disallow else after a return in an if (off by default) + "no-eq-null": 2, + // disallow comparisons to null without a type-checking operator (off by default) + "no-eval": 1, + // disallow use of eval() + "no-extend-native": 2, + // disallow adding to native types + "no-extra-bind": 2, + // disallow unnecessary function binding + "no-fallthrough": 2, + // disallow fallthrough of case statements + "no-floating-decimal": 2, + // disallow the use of leading or trailing decimal points in numeric literals (off by default) + "no-implied-eval": 2, + // disallow use of eval()-like methods + "no-iterator": 2, + // disallow usage of __iterator__ property + "no-labels": 2, + // disallow use of labeled statements + "no-lone-blocks": 2, + // disallow unnecessary nested blocks + "no-loop-func": 2, + // disallow creation of functions within loops + "no-multi-spaces": 2, + // disallow use of multiple spaces + "no-multi-str": 2, + // disallow use of multiline strings + "no-native-reassign": 2, + // disallow reassignments of native objects + "no-new": 0, + // disallow use of new operator when not part of the assignment or comparison + "no-new-func": 2, + // disallow use of new operator for Function object + "no-new-wrappers": 2, + // disallows creating new instances of String,Number, and Boolean + "no-octal": 2, + // disallow use of octal literals + "no-octal-escape": 2, + // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251"; + "no-param-reassign": 2, + // disallow reassignment of function parameters (off by default) + "no-process-env": 0, + // disallow use of import.meta.env (off by default) + "no-proto": 2, + // disallow usage of __proto__ property + "no-redeclare": 2, + // disallow declaring the same variable more then once + "no-return-assign": 0, + // disallow use of assignment in return statement + "no-script-url": 2, + // disallow use of javascript: urls. + "no-self-compare": 2, + // disallow comparisons where both sides are exactly the same (off by default) + "no-sequences": 2, + // disallow use of comma operator + "no-throw-literal": 2, + // restrict what can be thrown as an exception (off by default) + "no-unused-expressions": 0, + // disallow usage of expressions in statement position + "no-void": 2, + // disallow use of void operator (off by default) + "no-warning-comments": [ + 0, + { + "terms": [ + "todo", + "fixme" + ], + "location": "start" + } + ], + // disallow usage of configurable warning terms in comments": 2, // e.g. TODO or FIXME (off by default) + "no-with": 2, + // disallow use of the with statement + "radix": 0, + // require use of the second argument for parseInt() (off by default) + "vars-on-top": 2, + // requires to declare all vars on top of their containing scope (off by default) + "wrap-iife": 2, + // require immediate function invocation to be wrapped in parentheses (off by default) + "yoda": 2, + // require or disallow Yoda conditions + // + // Strict Mode + // + // These rules relate to using strict mode. + // + "strict": 0, + // controls location of Use Strict Directives. 0: required by `babel-eslint` + // + // Variables + // + // These rules have to do with variable declarations. + // + "no-catch-shadow": 2, + // disallow the catch clause parameter name being the same as a variable in the outer scope (off by default in the node environment) + "no-delete-var": 2, + // disallow deletion of variables + "no-label-var": 2, + // disallow labels that share a name with a variable + "no-shadow": 2, + // disallow declaration of variables already declared in the outer scope + "no-shadow-restricted-names": 2, + // disallow shadowing of names such as arguments + "no-undef-init": 2, + // disallow use of undefined when initializing variables + "no-undefined": 0, + // disallow use of undefined variable (off by default) + "no-unused-vars": 0, + // disallow declaration of variables that are not used in the code + "no-use-before-define": 0, + // disallow use of variables before they are defined + "init-declarations": 2, + // + // Stylistic Issues + // + // These rules are purely matters of style and are quite subjective. + // + "indent": [ + 2, + 4, + { + "SwitchCase": 1 + } + ], + // this option sets a specific tab width for your code (off by default) + "brace-style": 0, + // enforce one true brace style (off by default) + "camelcase": 0, + // require camel case names + "comma-spacing": [ + 1, + { + "before": false, + "after": true + } + ], + // enforce spacing before and after comma + "comma-style": [ + 1, + "last" + ], + // enforce one true comma style (off by default) + "consistent-this": [ + 1, + "_this" + ], + // enforces consistent naming when capturing the current execution context (off by default) + "eol-last": 0, + // enforce newline at the end of file, with no multiple empty lines + "func-names": 0, + // require function expressions to have a name (off by default) + "func-style": 0, + // enforces use of function declarations or expressions (off by default) + "key-spacing": [ + 1, + { + "beforeColon": false, + "afterColon": true + } + ], + // enforces spacing between keys and values in object literal properties + "max-nested-callbacks": [ 1, 5 ], + // specify the maximum depth callbacks can be nested (off by default) + "new-cap": [ + 1, + { + "newIsCap": true, + "capIsNew": false + } + ], + // require a capital letter for constructors + "new-parens": 1, + // disallow the omission of parentheses when invoking a constructor with no arguments + "newline-after-var": 0, + // allow/disallow an empty newline after var statement (off by default) + "no-array-constructor": 1, + // disallow use of the Array constructor + "no-inline-comments": 0, + // disallow comments inline after code (off by default) + "no-lonely-if": 1, + // disallow if as the only statement in an else block (off by default) + "no-mixed-spaces-and-tabs": 1, + // disallow mixed spaces and tabs for indentation + "no-multiple-empty-lines": [ + 1, + { + "max": 2 + } + ], + // disallow multiple empty lines (off by default) + "no-nested-ternary": 2, + // disallow nested ternary expressions (off by default) + "no-new-object": 1, + // disallow use of the Object constructor + "no-spaced-func": 1, + // disallow space between function identifier and application + "no-ternary": 0, + // disallow the use of ternary operators (off by default) + "no-unneeded-ternary": 2, + "no-trailing-spaces": 2, + // disallow trailing whitespace at the end of lines + "no-underscore-dangle": 0, + // disallow dangling underscores in identifiers + "prefer-reflect": 0, + "one-var": [ + 0, + "never" + ], + // allow just one var statement per function (off by default) + "operator-assignment": [ + 1, + "never" + ], + // require assignment operator shorthand where possible or prohibit it entirely (off by default) + "padded-blocks": [ + 2, + "never" + ], + // enforce padding within blocks (off by default) + "quote-props": [ + 1, + "as-needed" + ], + // require quotes around object literal property names (off by default) + "quotes": [ + 2, + "double" + ], + // specify whether double or single quotes should be used + "semi": [ + 2, + "always" + ], + // require or disallow use of semicolons instead of ASI + "semi-spacing": [ + 1, + { + "before": false, + "after": true + } + ], + // enforce spacing before and after semicolons + "sort-vars": 0, + // sort variables within the same declaration block (off by default) + "sort-imports": 0, + "keyword-spacing": [ + 1 + ], + // require a space after certain keywords (off by default) + "space-before-blocks": [ + 1, + "always" + ], + // require or disallow space before blocks (off by default) + "space-before-function-paren": [ + 0 + ], + // require or disallow space before function opening parenthesis (off by default) + "object-curly-spacing": [ + 2, + "always" + ], + "template-curly-spacing": [ + "error", + "always" + ], + "array-bracket-spacing": [ + 0 + ], + "space-in-parens": [ + 1, + "never" + ], + // require or disallow spaces inside parentheses (off by default) + "space-infix-ops": 0, + // require spaces around operators + "space-unary-ops": [ + 1, + { + "words": true, + "nonwords": false + } + ], + // Require or disallow spaces before/after unary operators (words on by default, nonwords off by default) + "spaced-comment": [ + 1, + "always" + ], + // require or disallow a space immediately following the // in a line comment (off by default) + "wrap-regex": 0, + // require regex literals to be wrapped in parentheses (off by default) + // + // ECMAScript 6 + // + // These rules are only relevant to ES6 environments and are off by default. + // + "no-var": 2, + // require let or const instead of var (off by default) + "generator-star-spacing": [ + 2, + "before" + ], + // enforce the spacing around the * in generator functions (off by default) + // + // Legacy + // + // The following rules are included for compatibility with JSHint and JSLint. + // While the names of the rules may not match up with the JSHint/JSLint counterpart, + // the functionality is the same. + // + "max-depth": [ + 2, + 3 + ], + // specify the maximum depth that blocks can be nested (off by default) + "max-len": [ + 0, + 180, + 2 + ], + // specify the maximum length of a line in your program (off by default) + "max-params": [ + 0 + ], + // limits the number of parameters that can be used in the function declaration. (off by default) + "max-statements": 0, + // specify the maximum number of statement allowed in a function (off by default) + "no-bitwise": 0, + // disallow use of bitwise operators (off by default) + "no-plusplus": 0, + // disallow use of unary operators, ++ and -- (off by default) + // + // eslint-plugin-react + // + // React specific linting rules for ESLint + // + "react/display-name": 0, + // Prevent missing displayName in a React component definition + "jsx-quotes": [ + 2, + "prefer-double" + ], + "react/jsx-curly-spacing": [ + 2, + { + "when": "always", + "allowMultiline": false, + "children": true + } + ], + // Enforce quote style for JSX attributes + "react/jsx-no-undef": 2, + // Disallow undeclared variables in JSX + "react/jsx-sort-props": 0, + // Enforce props alphabetical sorting + "react/sort-comp": [ + 2, + { + "order": [ + "constructor", + "lifecycle", + "everything-else", + "render" + ] + } + ], + "react/jsx-uses-react": 2, + // Prevent React to be incorrectly marked as unused + "react/jsx-uses-vars": 2, + // Prevent variables used in JSX to be incorrectly marked as unused + //"react/no-did-mount-set-state": 2, + "react/no-did-mount-set-state": 0, + // Prevent usage of setState in componentDidMount + "react/no-did-update-set-state": 1, + // Prevent usage of setState in componentDidUpdate + "react/no-multi-comp": 0, + // Prevent multiple component definition per file + "react/no-unknown-property": 2, + // Prevent usage of unknown DOM property + "react/self-closing-comp": 2, + // Prevent extra closing tags for components without children + "react/jsx-wrap-multilines": 2, + // Prevent missing parentheses around multilines JSX + "react/forbid-prop-types": 0, + "react-hooks/exhaustive-deps": 0 + } +} diff --git a/components/blocks-renderer.tsx b/components/blocks-renderer.tsx index ac26ec2..4ac20a4 100644 --- a/components/blocks-renderer.tsx +++ b/components/blocks-renderer.tsx @@ -4,37 +4,37 @@ import { Features } from "./blocks/features"; import { Hero } from "./blocks/hero"; import { Testimonial } from "./blocks/testimonial"; import { tinaField } from "tinacms/dist/react"; -import {Carousel} from "./blocks/carousel"; +import { Carousel } from "./blocks/carousel"; export const Blocks = (props: Omit) => { - return ( - <> - {props.blocks - ? props.blocks.map(function (block, i) { - return ( -
- -
- ); - }) - : null} - - ); + return ( + <> + { props.blocks + ? props.blocks.map((block, i) => { + return ( +
+ +
+ ); + }) + : null } + + ); }; const Block = (block: PageBlocks) => { - switch (block.__typename) { - case "PageBlocksContent": - return ; - case "PageBlocksHero": - return ; - case "PageBlocksFeatures": - return ; - case "PageBlocksTestimonial": - return ; - case "PageBlocksCarousel": - return ; - default: - return null; - } + switch (block.__typename) { + case "PageBlocksContent": + return ; + case "PageBlocksHero": + return ; + case "PageBlocksFeatures": + return ; + case "PageBlocksTestimonial": + return ; + case "PageBlocksCarousel": + return ; + default: + return null; + } }; diff --git a/components/blocks/carousel.tsx b/components/blocks/carousel.tsx index 1c5249f..4dc7ef7 100644 --- a/components/blocks/carousel.tsx +++ b/components/blocks/carousel.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import { Section } from "../util/section"; -import {PageBlocksCarousel} from "../../tina/__generated__/types"; -import {Anchoring, anchoringSchema} from "../util/anchoring"; -import {Template} from "tinacms"; +import { PageBlocksCarousel } from "../../tina/__generated__/types"; +import { Anchoring, anchoringSchema } from "../util/anchoring"; +import { Template } from "tinacms"; export const Carousel = ({ data }: { data: PageBlocksCarousel }) => { return ( @@ -20,17 +20,17 @@ export const carouselBlockSchema: Template = { label: "Carousel", ui: { previewSrc: "/blocks/features.png", - defaultItem: [defaultCarousel, defaultCarousel, defaultCarousel], + defaultItem: [defaultCarousel, defaultCarousel, defaultCarousel] }, fields: [ { type: "image", label: "Images du carousel", name: "images", - list: true, + list: true }, { ...anchoringSchema } - ], + ] }; diff --git a/components/blocks/content.tsx b/components/blocks/content.tsx index c52e8f8..e2aff9f 100644 --- a/components/blocks/content.tsx +++ b/components/blocks/content.tsx @@ -2,51 +2,51 @@ import React from "react"; import { Container } from "../util/container"; import { Section } from "../util/section"; import { TinaMarkdown } from "tinacms/dist/rich-text"; -import type {Template, TinaTemplate} from "tinacms"; +import type { Template, TinaTemplate } from "tinacms"; import { PageBlocksContent } from "../../tina/__generated__/types"; import { tinaField } from "tinacms/dist/react"; export const Content = ({ data }: { data: PageBlocksContent }) => { - return ( -
- - - -
- ); + return ( +
+ + + +
+ ); }; export const contentBlockSchema: Template = { - name: "content", - label: "Content", - ui: { - previewSrc: "/blocks/content.png", - defaultItem: { - body: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.", + name: "content", + label: "Content", + ui: { + previewSrc: "/blocks/content.png", + defaultItem: { + body: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede." + } }, - }, - fields: [ - { - type: "rich-text", - label: "Body", - name: "body", - }, - { - type: "string", - label: "Color", - name: "color", - options: [ - { label: "Default", value: "default" }, - { label: "Tint", value: "tint" }, - { label: "Primary", value: "primary" }, - ], - }, - ], + fields: [ + { + type: "rich-text", + label: "Body", + name: "body" + }, + { + type: "string", + label: "Color", + name: "color", + options: [ + { label: "Default", value: "default" }, + { label: "Tint", value: "tint" }, + { label: "Primary", value: "primary" } + ] + } + ] }; diff --git a/components/blocks/features.tsx b/components/blocks/features.tsx index 11a2c01..44f6a67 100644 --- a/components/blocks/features.tsx +++ b/components/blocks/features.tsx @@ -3,129 +3,129 @@ import { Container } from "../util/container"; import { Icon } from "../util/icon"; import { iconSchema } from "../util/icon"; import { - PageBlocksFeatures, - PageBlocksFeaturesItems, + PageBlocksFeatures, + PageBlocksFeaturesItems } from "../../tina/__generated__/types"; import { tinaField } from "tinacms/dist/react"; -import {Template} from "tinacms"; +import { Template } from "tinacms"; export const Feature = ({ - featuresColor, - data, + featuresColor, + data }: { featuresColor: string; data: PageBlocksFeaturesItems; }) => { - return ( -
- {data.icon && ( - - )} - {data.title && ( -

- {data.title} -

- )} - {data.text && ( -

- {data.text} -

- )} -
- ); + { data.icon && ( + + ) } + { data.title && ( +

+ { data.title } +

+ ) } + { data.text && ( +

+ { data.text } +

+ ) } + + ); }; export const Features = ({ data }: { data: PageBlocksFeatures }) => { - return ( -
- - {data.items && - data.items.map(function (block, i) { - return ; - })} - -
- ); + return ( +
+ + { data.items && + data.items.map((block, i) => { + return ; + }) } + +
+ ); }; const defaultFeature = { - title: "Here's Another Feature", - text: "This is where you might talk about the feature, if this wasn't just filler text.", - icon: { - color: "", - style: "float", - name: "", - }, + title: "Here's Another Feature", + text: "This is where you might talk about the feature, if this wasn't just filler text.", + icon: { + color: "", + style: "float", + name: "" + } }; export const featureBlockSchema: Template = { - name: "features", - label: "Features", - ui: { - previewSrc: "/blocks/features.png", - defaultItem: { - items: [defaultFeature, defaultFeature, defaultFeature], - }, - }, - fields: [ - { - type: "object", - label: "Feature Items", - name: "items", - list: true, - ui: { - itemProps: (item) => { - return { - label: item?.title, - }; - }, + name: "features", + label: "Features", + ui: { + previewSrc: "/blocks/features.png", defaultItem: { - ...defaultFeature, - }, - }, - fields: [ - iconSchema, + items: [defaultFeature, defaultFeature, defaultFeature] + } + }, + fields: [ { - type: "string", - label: "Title", - name: "title", + type: "object", + label: "Feature Items", + name: "items", + list: true, + ui: { + itemProps: (item) => { + return { + label: item?.title + }; + }, + defaultItem: { + ...defaultFeature + } + }, + fields: [ + iconSchema, + { + type: "string", + label: "Title", + name: "title" + }, + { + type: "string", + label: "Text", + name: "text", + ui: { + component: "textarea" + } + } + ] }, { - type: "string", - label: "Text", - name: "text", - ui: { - component: "textarea", - }, - }, - ], - }, - { - type: "string", - label: "Color", - name: "color", - options: [ - { label: "Default", value: "default" }, - { label: "Tint", value: "tint" }, - { label: "Primary", value: "primary" }, - ], - }, - ], + type: "string", + label: "Color", + name: "color", + options: [ + { label: "Default", value: "default" }, + { label: "Tint", value: "tint" }, + { label: "Primary", value: "primary" } + ] + } + ] }; diff --git a/components/blocks/hero.tsx b/components/blocks/hero.tsx index 048eaef..398ceed 100644 --- a/components/blocks/hero.tsx +++ b/components/blocks/hero.tsx @@ -3,182 +3,182 @@ import { Actions } from "../util/actions"; import { Container } from "../util/container"; import { Section } from "../util/section"; import { TinaMarkdown } from "tinacms/dist/rich-text"; -import type {Template, TinaTemplate} from "tinacms"; +import type { Template, TinaTemplate } from "tinacms"; import { PageBlocksHero } from "../../tina/__generated__/types"; import { tinaField } from "tinacms/dist/react"; export const Hero = ({ data }: { data: PageBlocksHero }) => { - const headlineColorClasses = { - blue: "from-blue-400 to-blue-600", - teal: "from-teal-400 to-teal-600", - green: "from-green-400 to-green-600", - red: "from-red-400 to-red-600", - pink: "from-pink-400 to-pink-600", - purple: "from-purple-400 to-purple-600", - orange: "from-orange-300 to-orange-600", - yellow: "from-yellow-400 to-yellow-600", - }; + const headlineColorClasses = { + blue: "from-blue-400 to-blue-600", + teal: "from-teal-400 to-teal-600", + green: "from-green-400 to-green-600", + red: "from-red-400 to-red-600", + pink: "from-pink-400 to-pink-600", + purple: "from-purple-400 to-purple-600", + orange: "from-orange-300 to-orange-600", + yellow: "from-yellow-400 to-yellow-600" + }; - return ( -
- -
- {data.tagline && ( -

+ - {data.tagline} - -

- )} - {data.headline && ( -

- - {data.headline} - -

- )} - {data.text && ( -
- -
- )} - {data.actions && ( - - )} -
- {data.image && ( -
- - {data.image.alt} -
- )} -
-
- ); +
+ { data.tagline && ( +

+ { data.tagline } + +

+ ) } + { data.headline && ( +

+ + { data.headline } + +

+ ) } + { data.text && ( +
+ +
+ ) } + { data.actions && ( + + ) } +
+ { data.image && ( +
+ + { +
+ ) } + + + ); }; export const heroBlockSchema: Template = { - name: "hero", - label: "Hero", - ui: { - previewSrc: "/blocks/hero.png", - defaultItem: { - tagline: "Here's some text above the other text", - headline: "This Big Text is Totally Awesome", - text: "Phasellus scelerisque, libero eu finibus rutrum, risus risus accumsan libero, nec molestie urna dui a leo.", - }, - }, - fields: [ - { - type: "string", - label: "Tagline", - name: "tagline", - }, - { - type: "string", - label: "Headline", - name: "headline", - }, - { - label: "Text", - name: "text", - type: "rich-text", - }, - { - label: "Actions", - name: "actions", - type: "object", - list: true, - ui: { + name: "hero", + label: "Hero", + ui: { + previewSrc: "/blocks/hero.png", defaultItem: { - label: "Action Label", - type: "button", - icon: true, - link: "/", - }, - itemProps: (item) => ({ label: item.label }), - }, - fields: [ - { - label: "Label", - name: "label", - type: "string", - }, - { - label: "Type", - name: "type", - type: "string", - options: [ - { label: "Button", value: "button" }, - { label: "Link", value: "link" }, - ], - }, - { - label: "Icon", - name: "icon", - type: "boolean", - }, - { - label: "Link", - name: "link", - type: "string", - }, - ], + tagline: "Here's some text above the other text", + headline: "This Big Text is Totally Awesome", + text: "Phasellus scelerisque, libero eu finibus rutrum, risus risus accumsan libero, nec molestie urna dui a leo." + } }, - { - type: "object", - label: "Image", - name: "image", - fields: [ + fields: [ { - name: "src", - label: "Image Source", - type: "image", + type: "string", + label: "Tagline", + name: "tagline" }, { - name: "alt", - label: "Alt Text", - type: "string", + type: "string", + label: "Headline", + name: "headline" }, - ], - }, - { - type: "string", - label: "Color", - name: "color", - options: [ - { label: "Default", value: "default" }, - { label: "Tint", value: "tint" }, - { label: "Primary", value: "primary" }, - ], - }, - ], + { + label: "Text", + name: "text", + type: "rich-text" + }, + { + label: "Actions", + name: "actions", + type: "object", + list: true, + ui: { + defaultItem: { + label: "Action Label", + type: "button", + icon: true, + link: "/" + }, + itemProps: (item) => ({ label: item.label }) + }, + fields: [ + { + label: "Label", + name: "label", + type: "string" + }, + { + label: "Type", + name: "type", + type: "string", + options: [ + { label: "Button", value: "button" }, + { label: "Link", value: "link" } + ] + }, + { + label: "Icon", + name: "icon", + type: "boolean" + }, + { + label: "Link", + name: "link", + type: "string" + } + ] + }, + { + type: "object", + label: "Image", + name: "image", + fields: [ + { + name: "src", + label: "Image Source", + type: "image" + }, + { + name: "alt", + label: "Alt Text", + type: "string" + } + ] + }, + { + type: "string", + label: "Color", + name: "color", + options: [ + { label: "Default", value: "default" }, + { label: "Tint", value: "tint" }, + { label: "Primary", value: "primary" } + ] + } + ] }; diff --git a/components/blocks/testimonial.tsx b/components/blocks/testimonial.tsx index 5e90aea..e0217ba 100644 --- a/components/blocks/testimonial.tsx +++ b/components/blocks/testimonial.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Container } from "../util/container"; import { Section } from "../util/section"; -import type {Template, TinaTemplate} from "tinacms"; +import type { Template } from "tinacms"; import { PageBlocksTestimonial } from "../../tina/__generated__/types"; import { tinaField } from "tinacms/dist/react"; diff --git a/components/layout/footer/footer.tsx b/components/layout/footer/footer.tsx index 7372d09..47db620 100644 --- a/components/layout/footer/footer.tsx +++ b/components/layout/footer/footer.tsx @@ -4,109 +4,143 @@ import { FaFacebookF, FaGithub, FaTwitter } from "react-icons/fa"; import { AiFillInstagram } from "react-icons/ai"; import { Container } from "../../util/container"; import { RawRenderer } from "./rawRenderer"; +import { ObjectField } from "@tinacms/schema-tools/dist/types"; export const Footer = ({ data, rawData }) => { - const socialIconClasses = "h-7 w-auto"; - const socialIconColorClasses = { - blue: "text-blue-500 dark:text-blue-400 hover:text-blue-300", - teal: "text-teal-500 dark:text-teal-400 hover:text-teal-300", - green: "text-green-500 dark:text-green-400 hover:text-green-300", - red: "text-red-500 dark:text-red-400 hover:text-red-300", - pink: "text-pink-500 dark:text-pink-400 hover:text-pink-300", - purple: "text-purple-500 dark:text-purple-400 hover:text-purple-300", - orange: "text-orange-500 dark:text-orange-400 hover:text-orange-300", - yellow: "text-yellow-500 dark:text-yellow-400 hover:text-yellow-300", - primary: "text-white opacity-80 hover:opacity-100", - }; + const socialIconClasses = "h-7 w-auto"; + const socialIconColorClasses = { + blue: "text-blue-500 dark:text-blue-400 hover:text-blue-300", + teal: "text-teal-500 dark:text-teal-400 hover:text-teal-300", + green: "text-green-500 dark:text-green-400 hover:text-green-300", + red: "text-red-500 dark:text-red-400 hover:text-red-300", + pink: "text-pink-500 dark:text-pink-400 hover:text-pink-300", + purple: "text-purple-500 dark:text-purple-400 hover:text-purple-300", + orange: "text-orange-500 dark:text-orange-400 hover:text-orange-300", + yellow: "text-yellow-500 dark:text-yellow-400 hover:text-yellow-300", + primary: "text-white opacity-80 hover:opacity-100" + }; - const footerColor = { - default: + const footerColor = { + default: "text-gray-800 from-white to-gray-50 dark:from-gray-900 dark:to-gray-1000", - primary: { - blue: "text-white from-blue-500 to-blue-700", - teal: "text-white from-teal-500 to-teal-600", - green: "text-white from-green-500 to-green-600", - red: "text-white from-red-500 to-red-600", - pink: "text-white from-pink-500 to-pink-600", - purple: "text-white from-purple-500 to-purple-600", - orange: "text-white from-orange-500 to-orange-600", - yellow: "text-white from-yellow-500 to-yellow-600", - }, - }; + primary: { + blue: "text-white from-blue-500 to-blue-700", + teal: "text-white from-teal-500 to-teal-600", + green: "text-white from-green-500 to-green-600", + red: "text-white from-red-500 to-red-600", + pink: "text-white from-pink-500 to-pink-600", + purple: "text-white from-purple-500 to-purple-600", + orange: "text-white from-orange-500 to-orange-600", + yellow: "text-white from-yellow-500 to-yellow-600" + } + }; - const footerColorCss = footerColor.default; + const footerColorCss = footerColor.default; - return ( -
- -
- - -
- {data.social && data.social.facebook && ( - - + +
+ +
+ { data.social && data.social.facebook && ( + + + + ) } + { data.social && data.social.twitter && ( + + + + ) } + { data.social && data.social.instagram && ( + + + + ) } + { data.social && data.social.github && ( + + + + ) } +
+ +
+
- - )} - {data.social && data.social.twitter && ( - - - - )} - {data.social && data.social.instagram && ( - - - - )} - {data.social && data.social.github && ( - - - - )} -
- -
-
- -
- ); + + + ); }; + +export const footerSchema: ObjectField = { + type: "object", + label: "Footer", + name: "footer", + fields: [ + { + type: "object", + label: "Social Links", + name: "social", + fields: [ + { + type: "string", + label: "Facebook", + name: "facebook" + }, + { + type: "string", + label: "Twitter", + name: "twitter" + }, + { + type: "string", + label: "Instagram", + name: "instagram" + }, + { + type: "string", + label: "Github", + name: "github" + } + ] + }] +}; \ No newline at end of file diff --git a/components/layout/footer/rawRenderer.tsx b/components/layout/footer/rawRenderer.tsx index f3dc57a..452b958 100644 --- a/components/layout/footer/rawRenderer.tsx +++ b/components/layout/footer/rawRenderer.tsx @@ -3,90 +3,90 @@ import { Fragment, useState } from "react"; import { Dialog, Transition } from "@headlessui/react"; export const RawRenderer = ({ rawData, parentColor }) => { - const buttonColorClasses = { - blue: "text-blue-500", - teal: "text-teal-500", - green: "text-green-500", - red: "text-red-500", - pink: "text-pink-500", - purple: "text-purple-500", - orange: "text-orange-500", - yellow: "text-yellow-600", - }; - const [isOpen, setIsOpen] = useState(false); + const buttonColorClasses = { + blue: "text-blue-500", + teal: "text-teal-500", + green: "text-green-500", + red: "text-red-500", + pink: "text-pink-500", + purple: "text-purple-500", + orange: "text-orange-500", + yellow: "text-yellow-600" + }; + const [isOpen, setIsOpen] = useState(false); - function closeModal() { - setIsOpen(false); - } + function closeModal() { + setIsOpen(false); + } - function openModal() { - setIsOpen(true); - } + function openModal() { + setIsOpen(true); + } - return ( - <> - - - -
- -
- -
-
- - -
-
-                  {JSON.stringify(rawData, null, 2)}
-                
- + + +
+ +
+ +
+
+ + +
+
+                                    { JSON.stringify(rawData, null, 2) }
+                                
+ -
-
-
-
-
- - ); + +
+
+
+
+
+ + ); }; diff --git a/components/layout/header.tsx b/components/layout/header.tsx index fbd4acc..d850554 100644 --- a/components/layout/header.tsx +++ b/components/layout/header.tsx @@ -2,55 +2,116 @@ import React from "react"; import Link from "next/link"; import { tinaField } from "tinacms/dist/react"; import defaultLogo from "../../public/logo.png"; -import {GlobalHeader} from "../../tina/__generated__/types"; +import { GlobalHeader } from "../../tina/__generated__/types"; +import { ObjectField } from "@tinacms/schema-tools/dist/types"; export const Header = ({ data }: { data: GlobalHeader }) => { - return ( - + ); }; + +export const headerSchema: ObjectField = { + type: "object", + label: "Header", + name: "header", + fields: [ + { + type: "string", + label: "Page Title", + name: "pageTitle" + }, + { + type: "string", + label: "Title", + name: "title" + }, + { + type: "string", + label: "Subtitle", + name: "subtitle" + }, + { + type: "image", + label: "Logo", + name: "logoSrc" + }, + { + type: "object", + label: "Nav Links", + name: "nav", + list: true, + ui: { + itemProps: (item) => { + return { label: item?.label }; + }, + defaultItem: { + href: "home", + label: "Home", + external: false + } + }, + fields: [ + { + type: "string", + label: "Link", + name: "href" + }, + { + type: "string", + label: "Label", + name: "label" + }, + { + type: "boolean", + label: "External", + name: "external" + } + ] + }] +}; \ No newline at end of file diff --git a/components/layout/layout.tsx b/components/layout/layout.tsx index 5a4b6fa..577e971 100644 --- a/components/layout/layout.tsx +++ b/components/layout/layout.tsx @@ -6,39 +6,39 @@ import layoutData from "../../content/global/index.json"; import { Global } from "../../tina/__generated__/types"; export const Layout = ({ - rawData = {}, - data = layoutData, - children, + rawData = {}, + data = layoutData, + children }: { rawData?: object; data?: Omit; children: React.ReactNode; }) => { - return ( - <> - - {data?.header?.pageTitle} - + return ( + <> + + { data?.header?.pageTitle } + - - - - -
-
-
- {children} -
-
-
- - ); + + + + +
+
+
+ { children } +
+
+
+ + ); }; diff --git a/components/posts/post.tsx b/components/posts/post.tsx index 4a7c360..d5b6b57 100644 --- a/components/posts/post.tsx +++ b/components/posts/post.tsx @@ -36,175 +36,175 @@ const components: Components<{ disclaimer?: TinaMarkdownContent; }; }> = { - code_block: (props) => , - BlockQuote: (props: { + code_block: (props) => , + BlockQuote: (props: { children: TinaMarkdownContent; authorName: string; }) => { - return ( -
-
- - {props.authorName} -
-
- ); - }, - DateTime: (props) => { - const dt = React.useMemo(() => { - return new Date(); - }, []); - - switch (props.format) { - case "iso": - return {format(dt, "yyyy-MM-dd")}; - case "utc": - return {format(dt, "eee, dd MMM yyyy HH:mm:ss OOOO")}; - case "local": - return {format(dt, "P")}; - default: - return {format(dt, "P")}; - } - }, - NewsletterSignup: (props) => { - return ( -
-
-
- -
-
-
- - -
- -
-
-
- {props.disclaimer && } + return ( +
+
+ + { props.authorName } +
-
-
-
- ); - }, - img: (props) => ( - - {props.alt} - - ), + ); + }, + DateTime: (props) => { + const dt = React.useMemo(() => { + return new Date(); + }, []); + + switch (props.format) { + case "iso": + return { format(dt, "yyyy-MM-dd") }; + case "utc": + return { format(dt, "eee, dd MMM yyyy HH:mm:ss OOOO") }; + case "local": + return { format(dt, "P") }; + default: + return { format(dt, "P") }; + } + }, + NewsletterSignup: (props) => { + return ( +
+
+
+ +
+
+
+ + +
+ +
+
+
+ { props.disclaimer && } +
+
+
+
+ ); + }, + img: (props) => ( + + { + + ) }; export const Post = (props: PostType) => { - const titleColorClasses = { - blue: "from-blue-400 to-blue-600 dark:from-blue-300 dark:to-blue-500", - teal: "from-teal-400 to-teal-600 dark:from-teal-300 dark:to-teal-500", - green: "from-green-400 to-green-600", - red: "from-red-400 to-red-600", - pink: "from-pink-300 to-pink-500", - purple: + const titleColorClasses = { + blue: "from-blue-400 to-blue-600 dark:from-blue-300 dark:to-blue-500", + teal: "from-teal-400 to-teal-600 dark:from-teal-300 dark:to-teal-500", + green: "from-green-400 to-green-600", + red: "from-red-400 to-red-600", + pink: "from-pink-300 to-pink-500", + purple: "from-purple-400 to-purple-600 dark:from-purple-300 dark:to-purple-500", - orange: + orange: "from-orange-300 to-orange-600 dark:from-orange-200 dark:to-orange-500", - yellow: - "from-yellow-400 to-yellow-500 dark:from-yellow-300 dark:to-yellow-500", - }; + yellow: + "from-yellow-400 to-yellow-500 dark:from-yellow-300 dark:to-yellow-500" + }; - const date = new Date(props.date); - let formattedDate = ""; - if (!isNaN(date.getTime())) { - formattedDate = format(date, "MMM dd, yyyy"); - } + const date = new Date(props.date); + let formattedDate = ""; + if (!isNaN(date.getTime())) { + formattedDate = format(date, "MMM dd, yyyy"); + } - return ( -
- -

- - {props.title} - -

-
- {props.author && ( - <> -
- {props.author.name} -
-

- {props.author.name} -

- + return ( +
+ +

+ + { props.title } + +

+
+ { props.author && ( + <> +
+ { +
+

+ { props.author.name } +

+ — - - - )} -

- {formattedDate} -

-
-
- {props.heroImg && ( -
-
- - {props.title} -
-
- )} - -
- -
-
-
- ); +
+ + ) } +

+ { formattedDate } +

+
+
+ { props.heroImg && ( +
+
+ + { +
+
+ ) } + +
+ +
+
+
+ ); }; diff --git a/components/posts/posts.tsx b/components/posts/posts.tsx index cd3b3d1..d98859e 100644 --- a/components/posts/posts.tsx +++ b/components/posts/posts.tsx @@ -6,57 +6,57 @@ import format from "date-fns/format"; import { PostsType } from "../../pages/posts"; export const Posts = ({ data }: { data: PostsType[] }) => { - return ( - <> - {data.map((postData) => { - const post = postData.node; - const date = new Date(post.date); - let formattedDate = ""; - if (!isNaN(date.getTime())) { - formattedDate = format(date, "MMM dd, yyyy"); - } - return ( - -

- {post.title}{" "} - - - -

-
- -
-
-
- {post?.author?.name} -
-

- {post?.author?.name} -

- {formattedDate !== "" && ( - <> - + return ( + <> + { data.map((postData) => { + const post = postData.node; + const date = new Date(post.date); + let formattedDate = ""; + if (!isNaN(date.getTime())) { + formattedDate = format(date, "MMM dd, yyyy"); + } + return ( + +

+ { post.title }{ " " } + + + +

+
+ +
+
+
+ { +
+

+ { post?.author?.name } +

+ { formattedDate !== "" && ( + <> + — - -

- {formattedDate} -

- - )} -
- - ); - })} - - ); +
+

+ { formattedDate } +

+ + ) } +
+ + ); + }) } + + ); }; diff --git a/components/util/actions.tsx b/components/util/actions.tsx index 991e0ca..900a8c5 100644 --- a/components/util/actions.tsx +++ b/components/util/actions.tsx @@ -5,102 +5,102 @@ import { PageBlocksHeroActions } from "../../tina/__generated__/types"; import { tinaField } from "tinacms/dist/react"; export const Actions = ({ - parentColor = "default", - className = "", - actions, + parentColor = "default", + className = "", + actions }: { parentColor: string; className: string; actions: PageBlocksHeroActions[]; }) => { - const buttonColorClasses = { - blue: "text-white bg-blue-500 hover:bg-blue-600 bg-gradient-to-r from-blue-400 to-blue-600 hover:from-blue-400 hover:to-blue-500", - teal: "text-white bg-teal-500 hover:bg-teal-600 bg-gradient-to-r from-teal-400 to-teal-600 hover:from-teal-400 hover:to-teal-500", - green: + const buttonColorClasses = { + blue: "text-white bg-blue-500 hover:bg-blue-600 bg-gradient-to-r from-blue-400 to-blue-600 hover:from-blue-400 hover:to-blue-500", + teal: "text-white bg-teal-500 hover:bg-teal-600 bg-gradient-to-r from-teal-400 to-teal-600 hover:from-teal-400 hover:to-teal-500", + green: "text-white bg-green-500 hover:bg-green-600 bg-gradient-to-r from-green-400 to-green-600 hover:from-green-400 hover:to-green-500", - red: "text-white bg-red-500 hover:bg-red-600 bg-gradient-to-r from-red-500 to-red-600 hover:from-red-400 hover:to-red-500", - pink: "text-white bg-pink-500 hover:bg-pink-600 bg-gradient-to-r from-pink-400 to-pink-600 hover:from-pink-400 hover:to-pink-500", - purple: + red: "text-white bg-red-500 hover:bg-red-600 bg-gradient-to-r from-red-500 to-red-600 hover:from-red-400 hover:to-red-500", + pink: "text-white bg-pink-500 hover:bg-pink-600 bg-gradient-to-r from-pink-400 to-pink-600 hover:from-pink-400 hover:to-pink-500", + purple: "text-white bg-purple-500 hover:bg-purple-600 bg-gradient-to-r from-purple-400 to-purple-600 hover:from-purple-400 hover:to-purple-500", - orange: + orange: "text-white bg-orange-500 hover:bg-orange-600 bg-gradient-to-r from-orange-400 to-orange-600 hover:from-orange-400 hover:to-orange-500", - yellow: - "text-gray-800 bg-yellow-500 hover:bg-yellow-600 bg-gradient-to-r from-yellow-400 to-yellow-600 hover:from-yellow-400 hover:to-yellow-500", - }; + yellow: + "text-gray-800 bg-yellow-500 hover:bg-yellow-600 bg-gradient-to-r from-yellow-400 to-yellow-600 hover:from-yellow-400 hover:to-yellow-500" + }; - const invertedButtonColorClasses = { - blue: "text-blue-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - teal: "text-teal-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - green: + const invertedButtonColorClasses = { + blue: "text-blue-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", + teal: "text-teal-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", + green: "text-green-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - red: "text-red-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - pink: "text-pink-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - purple: + red: "text-red-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", + pink: "text-pink-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", + purple: "text-purple-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - orange: + orange: "text-orange-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - yellow: - "text-yellow-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100", - }; + yellow: + "text-yellow-500 bg-white hover:bg-gray-50 bg-gradient-to-r from-gray-50 to-white hover:to-gray-100" + }; - const linkButtonColorClasses = { - blue: "text-blue-600 dark:text-blue-400 hover:text-blue-400 dark:hover:text-blue-200", - teal: "ttext-teal-600 dark:text-teal-400 hover:text-teal-400 dark:hover:text-teal-200", - green: + const linkButtonColorClasses = { + blue: "text-blue-600 dark:text-blue-400 hover:text-blue-400 dark:hover:text-blue-200", + teal: "ttext-teal-600 dark:text-teal-400 hover:text-teal-400 dark:hover:text-teal-200", + green: "text-green-600 dark:text-green-400 hover:text-green-400 dark:hover:text-green-200", - red: "text-red-600 dark:text-red-400 hover:text-red-400 dark:hover:text-red-200", - pink: "text-pink-600 dark:text-pink-400 hover:text-pink-400 dark:hover:text-pink-200", - purple: + red: "text-red-600 dark:text-red-400 hover:text-red-400 dark:hover:text-red-200", + pink: "text-pink-600 dark:text-pink-400 hover:text-pink-400 dark:hover:text-pink-200", + purple: "text-purple-600 dark:text-purple-400 hover:text-purple-400 dark:hover:text-purple-200", - orange: + orange: "text-orange-600 dark:text-orange-400 hover:text-orange-400 dark:hover:text-orange-200", - yellow: - "text-yellow-600 dark:text-yellow-400 hover:text-yellow-400 dark:hover:text-yellow-200", - }; + yellow: + "text-yellow-600 dark:text-yellow-400 hover:text-yellow-400 dark:hover:text-yellow-200" + }; - return ( -
- {actions && - actions.map(function (action, index) { - let element = null; - if (action.type === "button") { - element = ( - - - - ); - } - if (action.type === "link" || action.type === "linkExternal") { - element = ( - - {action.label} - {action.icon && ( - - )} - - ); - } - return element; - })} -
- ); + return ( +
+ { actions && + actions.map((action, index) => { + let element = null; + if (action.type === "button") { + element = ( + + + + ); + } + if (action.type === "link" || action.type === "linkExternal") { + element = ( + + { action.label } + { action.icon && ( + + ) } + + ); + } + return element; + }) } +
+ ); }; diff --git a/components/util/anchoring.tsx b/components/util/anchoring.tsx index 9f2e081..4754828 100644 --- a/components/util/anchoring.tsx +++ b/components/util/anchoring.tsx @@ -1,8 +1,7 @@ import * as React from "react"; -import {useEffect, useRef, useState} from "react"; -import {tinaField} from "tinacms/dist/react"; -import {ObjectField} from "@tinacms/schema-tools/dist/types"; -import {SectionElement} from "@react-types/shared"; +import { useEffect, useRef, useState } from "react"; +import { tinaField } from "tinacms/dist/react"; +import { ObjectField } from "@tinacms/schema-tools/dist/types"; interface AnchoringProps { text?: string, // Default: Découvrez-en plus ! @@ -10,75 +9,75 @@ interface AnchoringProps { } export const Anchoring = (props: AnchoringProps) => { - const [opacity, setOpacity] = useState(1); - const anchoringRef = useRef(null); + const [opacity, setOpacity] = useState(1); + const anchoringRef = useRef(null); - const handleScrollOpacity = () => { - const scrollTop = window.scrollY || window.pageYOffset; - const elementHeight = anchoringRef.current?.clientHeight ? anchoringRef.current.clientHeight : 1; - const newOpacity = (elementHeight - scrollTop) / elementHeight; - setOpacity(newOpacity); - }; - - const handleScrollClick = () => { - const nextSection = anchoringRef?.current?.closest("section")?.parentElement?.nextElementSibling; - nextSection?.scrollIntoView({ - behavior: "smooth", - block: "start" - }); - } - - useEffect(() => { - handleScrollOpacity(); // Initialize opacity on mount - - window.addEventListener('scroll', handleScrollOpacity); - - return () => { - window.removeEventListener('scroll', handleScrollOpacity); + const handleScrollOpacity = () => { + const scrollTop = window.scrollY || window.pageYOffset; + const elementHeight = anchoringRef.current?.clientHeight ? anchoringRef.current.clientHeight : 1; + const newOpacity = (elementHeight - scrollTop) / elementHeight; + setOpacity(newOpacity); }; - }, []); - return ( - - ); + const handleScrollClick = () => { + const nextSection = anchoringRef?.current?.closest("section")?.parentElement?.nextElementSibling; + nextSection?.scrollIntoView({ + behavior: "smooth", + block: "start" + }); + }; + + useEffect(() => { + handleScrollOpacity(); // Initialize opacity on mount + + window.addEventListener("scroll", handleScrollOpacity); + + return () => { + window.removeEventListener("scroll", handleScrollOpacity); + }; + }, []); + + return ( + + ); }; export const anchoringSchema: ObjectField = { - type: "object", - label: "Lien", - name: "link", - ui: { - defaultItem: { - text: "Découvrez-en plus !", - linkTo: "#main-page", - enabled: true + type: "object", + label: "Lien", + name: "link", + ui: { + defaultItem: { + text: "Découvrez-en plus !", + linkTo: "#main-page", + enabled: true + } }, - }, - fields: [ - { - type: "boolean", - label: "Active", - name: "enabled" - }, - { - type: "string", - label: "Texte", - name: "text" - }, - { - type: "string", - label: "Lien", - name: "linkTo" - } - ] + fields: [ + { + type: "boolean", + label: "Active", + name: "enabled" + }, + { + type: "string", + label: "Texte", + name: "text" + }, + { + type: "string", + label: "Lien", + name: "linkTo" + } + ] }; \ No newline at end of file diff --git a/components/util/container.tsx b/components/util/container.tsx index 4438722..8020647 100644 --- a/components/util/container.tsx +++ b/components/util/container.tsx @@ -1,32 +1,32 @@ import React from "react"; export const Container = ({ - children, - size = "medium", - width = "large", - className = "", - ...props + children, + size = "medium", + width = "large", + className = "", + ...props }) => { - const verticalPadding = { - custom: "", - small: "py-8", - medium: "py-12", - large: "py-24", - default: "py-12", - }; - const widthClass = { - small: "max-w-4xl", - medium: "max-w-5xl", - large: "max-w-7xl", - custom: "", - }; + const verticalPadding = { + custom: "", + small: "py-8", + medium: "py-12", + large: "py-24", + default: "py-12" + }; + const widthClass = { + small: "max-w-4xl", + medium: "max-w-5xl", + large: "max-w-7xl", + custom: "" + }; - return ( -
- {children} -
- ); + return ( +
+ { children } +
+ ); }; diff --git a/components/util/icon.tsx b/components/util/icon.tsx index ac71d43..4fae9ee 100644 --- a/components/util/icon.tsx +++ b/components/util/icon.tsx @@ -2,158 +2,157 @@ import * as React from "react"; import { ColorPickerInput } from "../../tina/fields/color"; import { IconPickerInput } from "../../tina/fields/icon"; import * as BoxIcons from "react-icons/bi"; -import {Template} from "tinacms"; -import {ObjectField} from "@tinacms/schema-tools/dist/types"; +import { Template } from "tinacms"; +import { ObjectField } from "@tinacms/schema-tools/dist/types"; export const IconOptions = { - Tina: (props) => ( - - Tina - - - - ), - ...BoxIcons, + Tina: (props) => ( + + Tina + + + + ), + ...BoxIcons }; const iconColorClass: { [name: string]: { regular: string; circle: string }; } = { - blue: { - regular: "text-blue-400", - circle: "bg-blue-400 dark:bg-blue-500 text-blue-50", - }, - teal: { - regular: "text-teal-400", - circle: "bg-teal-400 dark:bg-teal-500 text-teal-50", - }, - green: { - regular: "text-green-400", - circle: "bg-green-400 dark:bg-green-500 text-green-50", - }, - red: { - regular: "text-red-400", - circle: "bg-red-400 dark:bg-red-500 text-red-50", - }, - pink: { - regular: "text-pink-400", - circle: "bg-pink-400 dark:bg-pink-500 text-pink-50", - }, - purple: { - regular: "text-purple-400", - circle: "bg-purple-400 dark:bg-purple-500 text-purple-50", - }, - orange: { - regular: "text-orange-400", - circle: "bg-orange-400 dark:bg-orange-500 text-orange-50", - }, - yellow: { - regular: "text-yellow-400", - circle: "bg-yellow-400 dark:bg-yellow-500 text-yellow-50", - }, - white: { - regular: "text-white opacity-80", - circle: "bg-white-400 dark:bg-white-500 text-white-50", - }, + blue: { + regular: "text-blue-400", + circle: "bg-blue-400 dark:bg-blue-500 text-blue-50" + }, + teal: { + regular: "text-teal-400", + circle: "bg-teal-400 dark:bg-teal-500 text-teal-50" + }, + green: { + regular: "text-green-400", + circle: "bg-green-400 dark:bg-green-500 text-green-50" + }, + red: { + regular: "text-red-400", + circle: "bg-red-400 dark:bg-red-500 text-red-50" + }, + pink: { + regular: "text-pink-400", + circle: "bg-pink-400 dark:bg-pink-500 text-pink-50" + }, + purple: { + regular: "text-purple-400", + circle: "bg-purple-400 dark:bg-purple-500 text-purple-50" + }, + orange: { + regular: "text-orange-400", + circle: "bg-orange-400 dark:bg-orange-500 text-orange-50" + }, + yellow: { + regular: "text-yellow-400", + circle: "bg-yellow-400 dark:bg-yellow-500 text-yellow-50" + }, + white: { + regular: "text-white opacity-80", + circle: "bg-white-400 dark:bg-white-500 text-white-50" + } }; const iconSizeClass = { - xs: "w-6 h-6 flex-shrink-0", - small: "w-8 h-8 flex-shrink-0", - medium: "w-12 h-12 flex-shrink-0", - large: "w-14 h-14 flex-shrink-0", - xl: "w-16 h-16 flex-shrink-0", - custom: "", + xs: "w-6 h-6 flex-shrink-0", + small: "w-8 h-8 flex-shrink-0", + medium: "w-12 h-12 flex-shrink-0", + large: "w-14 h-14 flex-shrink-0", + xl: "w-16 h-16 flex-shrink-0", + custom: "" }; export const Icon = ({ - data, - parentColor = "", - className = "", - tinaField = "", + data, + parentColor = "", + className = "", + tinaField = "" }) => { - if (IconOptions[data.name] === null || IconOptions[data.name] === undefined) { - return null; - } + if (IconOptions[data.name] === null || IconOptions[data.name] === undefined) { + return null; + } - const { name, color, size = "medium", style = "regular" } = data; + const { name, color, size = "medium", style = "regular" } = data; - const IconSVG = IconOptions[name]; + const IconSVG = IconOptions[name]; - const iconSizeClasses = + const iconSizeClasses = typeof size === "string" - ? iconSizeClass[size] - : iconSizeClass[Object.keys(iconSizeClass)[size]]; + ? iconSizeClass[size] + : iconSizeClass[Object.keys(iconSizeClass)[size]]; - const iconColor = color; + const iconColor = color; - if (style == "circle") { - return ( -
- -
- ); - } else { + if (style == "circle") { + return ( +
+ +
+ ); + } const iconColorClasses = iconColorClass[parentColor === "primary" && (iconColor === "primary") ? "white" : iconColor]?.regular || "white"; return ( - + ); - } }; export const iconSchema: ObjectField = { - type: "object", - label: "Icon", - name: "icon", - fields: [ - { - type: "string", - label: "Icon", - name: "name", - ui: { - component: (props) => IconPickerInput(props), - }, - }, - { - type: "string", - label: "Color", - name: "color", - ui: { - component: () => ColorPickerInput, - }, - }, - { - name: "style", - label: "Style", - type: "string", - options: [ + type: "object", + label: "Icon", + name: "icon", + fields: [ { - label: "Circle", - value: "circle", + type: "string", + label: "Icon", + name: "name", + ui: { + component: (props) => IconPickerInput(props) + } }, { - label: "Float", - value: "float", + type: "string", + label: "Color", + name: "color", + ui: { + component: () => ColorPickerInput + } }, - ], - }, - ], + { + name: "style", + label: "Style", + type: "string", + options: [ + { + label: "Circle", + value: "circle" + }, + { + label: "Float", + value: "float" + } + ] + } + ] }; diff --git a/components/util/section.tsx b/components/util/section.tsx index 3a93973..440a81e 100644 --- a/components/util/section.tsx +++ b/components/util/section.tsx @@ -1,34 +1,34 @@ import React from "react"; export const Section = ({ children, color = "", className = "" }) => { - const sectionColor = { - default: + const sectionColor = { + default: "text-gray-800 dark:text-gray-50 bg-gradient-to-tl from-gray-50 dark:from-gray-900 via-transparent to-transparent", - tint: "text-gray-900 dark:text-gray-100 bg-gradient-to-br from-gray-100 dark:from-gray-1000 to-transparent", - primary: { - blue: "text-white bg-blue-500 bg-gradient-to-br from-blue-500 to-blue-600", - teal: "text-white bg-teal-500 bg-gradient-to-br from-teal-500 to-teal-600", - green: + tint: "text-gray-900 dark:text-gray-100 bg-gradient-to-br from-gray-100 dark:from-gray-1000 to-transparent", + primary: { + blue: "text-white bg-blue-500 bg-gradient-to-br from-blue-500 to-blue-600", + teal: "text-white bg-teal-500 bg-gradient-to-br from-teal-500 to-teal-600", + green: "text-white bg-green-600 bg-gradient-to-br from-green-600 to-green-700", - red: "text-white bg-red-500 bg-gradient-to-br from-red-500 to-red-600", - pink: "text-white bg-pink-500 bg-gradient-to-br from-pink-500 to-pink-600", - purple: + red: "text-white bg-red-500 bg-gradient-to-br from-red-500 to-red-600", + pink: "text-white bg-pink-500 bg-gradient-to-br from-pink-500 to-pink-600", + purple: "text-white bg-purple-500 bg-gradient-to-br from-purple-500 to-purple-600", - orange: + orange: "text-white bg-orange-500 bg-gradient-to-br from-orange-500 to-orange-600", - yellow: - "text-white bg-yellow-500 bg-gradient-to-br from-yellow-500 to-yellow-600", - }, - }; - const sectionColorCss = sectionColor[color] - ? sectionColor[color] - : sectionColor.default; + yellow: + "text-white bg-yellow-500 bg-gradient-to-br from-yellow-500 to-yellow-600" + } + }; + const sectionColorCss = sectionColor[color] + ? sectionColor[color] + : sectionColor.default; - return ( -
- {children} -
- ); + return ( +
+ { children } +
+ ); }; diff --git a/content/pages/home.md b/content/pages/home.md index 7abf06d..c3f5996 100644 --- a/content/pages/home.md +++ b/content/pages/home.md @@ -76,3 +76,6 @@ blocks: + + + diff --git a/package.json b/package.json index 53b9332..75674e3 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,11 @@ "@types/react": "^17.0.35", "@types/styled-components": "^5.1.15", "@typescript-eslint/eslint-plugin": "^5.20.0", - "@typescript-eslint/parser": "^5.20.0", + "@typescript-eslint/parser": "^6.5.0", "autoprefixer": "^10.4.0", "eslint": "^8.13.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "postcss": "^8.3.11", "postcss-import": "^14.0.2", "postcss-nesting": "^10.1.0" diff --git a/pages/404.js b/pages/404.js index a67d0f2..b9d592c 100644 --- a/pages/404.js +++ b/pages/404.js @@ -2,23 +2,23 @@ import { Hero } from "../components/blocks/hero"; import { Layout } from "../components/layout"; export default function FourOhFour() { - return ( - - - - ); + return ( + + + + ); } diff --git a/pages/[filename].tsx b/pages/[filename].tsx index 4fba451..f81f7aa 100644 --- a/pages/[filename].tsx +++ b/pages/[filename].tsx @@ -6,36 +6,36 @@ import { Layout } from "../components/layout"; import { client } from "../tina/__generated__/client"; export default function HomePage( - props: InferGetStaticPropsType + props: InferGetStaticPropsType ) { - const { data } = useTina(props); + const { data } = useTina(props); - return ( - - - - ); + return ( + + + + ); } export const getStaticProps = async ({ params }) => { - const tinaProps = await client.queries.contentQuery({ - relativePath: `${params.filename}.md`, - }); - const props = { - ...tinaProps, - enableVisualEditing: process.env.VERCEL_ENV === "preview", - }; - return { - props: JSON.parse(JSON.stringify(props)) as typeof props, - }; + const tinaProps = await client.queries.contentQuery({ + relativePath: `${ params.filename }.md` + }); + const props = { + ...tinaProps, + enableVisualEditing: process.env.VERCEL_ENV === "preview" + }; + return { + props: JSON.parse(JSON.stringify(props)) as typeof props + }; }; export const getStaticPaths = async () => { - const pagesListData = await client.queries.pageConnection(); - return { - paths: pagesListData.data.pageConnection?.edges?.map((page) => ({ - params: { filename: page?.node?._sys.filename }, - })), - fallback: false, - }; + const pagesListData = await client.queries.pageConnection(); + return { + paths: pagesListData.data.pageConnection?.edges?.map((page) => ({ + params: { filename: page?.node?._sys.filename } + })), + fallback: false + }; }; diff --git a/pages/_app.tsx b/pages/_app.tsx index e65b3f8..dbf311a 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,7 +1,7 @@ import "../styles/_styles.scss"; const App = ({ Component, pageProps }) => { - return ; + return ; }; export default App; diff --git a/pages/posts.tsx b/pages/posts.tsx index a841dd4..aacd22c 100644 --- a/pages/posts.tsx +++ b/pages/posts.tsx @@ -6,28 +6,28 @@ import { Layout } from "../components/layout"; import { InferGetStaticPropsType } from "next"; export default function HomePage( - props: InferGetStaticPropsType + props: InferGetStaticPropsType ) { - const posts = props.data.postConnection.edges; + const posts = props.data.postConnection.edges; - return ( - -
- - - -
-
- ); + return ( + +
+ + + +
+
+ ); } export const getStaticProps = async () => { - const tinaProps = await client.queries.pageQuery(); - return { - props: { - ...tinaProps, - }, - }; + const tinaProps = await client.queries.pageQuery(); + return { + props: { + ...tinaProps + } + }; }; export type PostsType = InferGetStaticPropsType< diff --git a/pages/posts/[filename].tsx b/pages/posts/[filename].tsx index 4a1144c..9263d78 100644 --- a/pages/posts/[filename].tsx +++ b/pages/posts/[filename].tsx @@ -6,36 +6,36 @@ import { InferGetStaticPropsType } from "next"; // Use the props returned by get static props export default function BlogPostPage( - props: InferGetStaticPropsType + props: InferGetStaticPropsType ) { - const { data } = useTina({ - query: props.query, - variables: props.variables, - data: props.data, - }); - if (data && data.post) { + const { data } = useTina({ + query: props.query, + variables: props.variables, + data: props.data + }); + if (data && data.post) { + return ( + + + + ); + } return ( - - - + +
No data
; +
); - } - return ( - -
No data
; -
- ); } export const getStaticProps = async ({ params }) => { - const tinaProps = await client.queries.blogPostQuery({ - relativePath: `${params.filename}.mdx`, - }); - return { - props: { - ...tinaProps, - }, - }; + const tinaProps = await client.queries.blogPostQuery({ + relativePath: `${ params.filename }.mdx` + }); + return { + props: { + ...tinaProps + } + }; }; /** @@ -46,13 +46,13 @@ export const getStaticProps = async ({ params }) => { * be viewable at http://localhost:3000/posts/hello */ export const getStaticPaths = async () => { - const postsListData = await client.queries.postConnection(); - return { - paths: postsListData.data.postConnection.edges.map((post) => ({ - params: { filename: post.node._sys.filename }, - })), - fallback: "blocking", - }; + const postsListData = await client.queries.postConnection(); + return { + paths: postsListData.data.postConnection.edges.map((post) => ({ + params: { filename: post.node._sys.filename } + })), + fallback: "blocking" + }; }; export type PostType = InferGetStaticPropsType< diff --git a/tina/config.tsx b/tina/config.tsx index 71e399f..2d6d579 100644 --- a/tina/config.tsx +++ b/tina/config.tsx @@ -3,320 +3,229 @@ import { contentBlockSchema } from "../components/blocks/content"; import { featureBlockSchema } from "../components/blocks/features"; import { heroBlockSchema } from "../components/blocks/hero"; import { testimonialBlockSchema } from "../components/blocks/testimonial"; -import { ColorPickerInput } from "./fields/color"; -import {carouselBlockSchema} from "../components/blocks/carousel"; +import { carouselBlockSchema } from "../components/blocks/carousel"; +import { headerSchema } from "../components/layout/header"; +import { footerSchema } from "../components/layout/footer/footer"; const config = defineConfig({ - clientId: process.env.NEXT_PUBLIC_TINA_CLIENT_ID!, - branch: + clientId: process.env.NEXT_PUBLIC_TINA_CLIENT_ID!, + branch: process.env.NEXT_PUBLIC_TINA_BRANCH! || // custom branch env override process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF! || // Vercel branch env process.env.HEAD!, // Netlify branch env - token: process.env.TINA_TOKEN!, - media: { + token: process.env.TINA_TOKEN!, + media: { // If you wanted cloudinary do this // loadCustomStore: async () => { // const pack = await import("next-tinacms-cloudinary"); // return pack.TinaCloudCloudinaryMediaStore; // }, // this is the config for the tina cloud media store - tina: { - publicFolder: "public", - mediaRoot: "uploads", + tina: { + publicFolder: "public", + mediaRoot: "uploads" + } }, - }, - build: { - publicFolder: "public", // The public asset folder for your framework - outputFolder: "admin", // within the public folder - }, - schema: { - collections: [ - { - label: "Blog Posts", - name: "post", - path: "content/posts", - format: "mdx", - ui: { - router: ({ document }) => { - return `/posts/${document._sys.filename}`; - }, - }, - fields: [ - { - type: "string", - label: "Title", - name: "title", - isTitle: true, - required: true, - }, - { - type: "image", - name: "heroImg", - label: "Hero Image", - }, - { - type: "rich-text", - label: "Excerpt", - name: "excerpt", - }, - { - type: "reference", - label: "Author", - name: "author", - collections: ["author"], - }, - { - type: "datetime", - label: "Posted Date", - name: "date", - ui: { - dateFormat: "MMMM DD YYYY", - timeFormat: "hh:mm A", + build: { + publicFolder: "public", // The public asset folder for your framework + outputFolder: "admin" // within the public folder + }, + schema: { + collections: [ + { + label: "Blog Posts", + name: "post", + path: "content/posts", + format: "mdx", + ui: { + router: ({ document }) => { + return `/posts/${ document._sys.filename }`; + } + }, + fields: [ + { + type: "string", + label: "Title", + name: "title", + isTitle: true, + required: true + }, + { + type: "image", + name: "heroImg", + label: "Hero Image" + }, + { + type: "rich-text", + label: "Excerpt", + name: "excerpt" + }, + { + type: "reference", + label: "Author", + name: "author", + collections: ["author"] + }, + { + type: "datetime", + label: "Posted Date", + name: "date", + ui: { + dateFormat: "MMMM DD YYYY", + timeFormat: "hh:mm A" + } + }, + { + type: "rich-text", + label: "Body", + name: "_body", + templates: [ + { + name: "DateTime", + label: "Date & Time", + inline: true, + fields: [ + { + name: "format", + label: "Format", + type: "string", + options: ["utc", "iso", "local"] + } + ] + }, + { + name: "BlockQuote", + label: "Block Quote", + fields: [ + { + name: "children", + label: "Quote", + type: "rich-text" + }, + { + name: "authorName", + label: "Author", + type: "string" + } + ] + }, + { + name: "NewsletterSignup", + label: "Newsletter Sign Up", + fields: [ + { + name: "children", + label: "CTA", + type: "rich-text" + }, + { + name: "placeholder", + label: "Placeholder", + type: "string" + }, + { + name: "buttonText", + label: "Button Text", + type: "string" + }, + { + name: "disclaimer", + label: "Disclaimer", + type: "rich-text" + } + ], + ui: { + defaultItem: { + placeholder: "Enter your email", + buttonText: "Notify Me" + } + } + } + ], + isBody: true + } + ] }, - }, - { - type: "rich-text", - label: "Body", - name: "_body", - templates: [ - { - name: "DateTime", - label: "Date & Time", - inline: true, - fields: [ - { - name: "format", - label: "Format", - type: "string", - options: ["utc", "iso", "local"], - }, - ], - }, - { - name: "BlockQuote", - label: "Block Quote", - fields: [ - { - name: "children", - label: "Quote", - type: "rich-text", - }, - { - name: "authorName", - label: "Author", - type: "string", - }, - ], - }, - { - name: "NewsletterSignup", - label: "Newsletter Sign Up", - fields: [ - { - name: "children", - label: "CTA", - type: "rich-text", - }, - { - name: "placeholder", - label: "Placeholder", - type: "string", - }, - { - name: "buttonText", - label: "Button Text", - type: "string", - }, - { - name: "disclaimer", - label: "Disclaimer", - type: "rich-text", - }, - ], + { + label: "Global", + name: "global", + path: "content/global", + format: "json", ui: { - defaultItem: { - placeholder: "Enter your email", - buttonText: "Notify Me", - }, - }, - }, - ], - isBody: true, - }, - ], - }, - { - label: "Global", - name: "global", - path: "content/global", - format: "json", - ui: { - global: true, - }, - fields: [ - { - type: "object", - label: "Header", - name: "header", - fields: [ - { - type: "string", - label: "Page Title", - name: "pageTitle", - }, - { - type: "string", - label: "Title", - name: "title", - }, - { - type: "string", - label: "Subtitle", - name: "subtitle", - }, - { - type: "image", - label: "Logo", - name: "logoSrc" - }, - { - type: "object", - label: "Nav Links", - name: "nav", - list: true, - ui: { - itemProps: (item) => { - return { label: item?.label }; - }, - defaultItem: { - href: "home", - label: "Home", - external: false - }, + global: true }, fields: [ - { - type: "string", - label: "Link", - name: "href", - }, - { - type: "string", - label: "Label", - name: "label", - }, - { - type: "boolean", - label: "External", - name: "external", - } - ], - }, - ], - }, - { - type: "object", - label: "Footer", - name: "footer", - fields: [ - { - type: "object", - label: "Social Links", - name: "social", + headerSchema, + footerSchema + ] + }, + { + label: "Authors", + name: "author", + path: "content/authors", + format: "md", fields: [ - { - type: "string", - label: "Facebook", - name: "facebook", - }, - { - type: "string", - label: "Twitter", - name: "twitter", - }, - { - type: "string", - label: "Instagram", - name: "instagram", - }, - { - type: "string", - label: "Github", - name: "github", - }, - ], - }, - ], - }, - ], - }, - { - label: "Authors", - name: "author", - path: "content/authors", - format: "md", - fields: [ - { - type: "string", - label: "Name", - name: "name", - isTitle: true, - required: true, - }, - { - type: "image", - label: "Avatar", - name: "avatar", - }, - ], - }, - { - label: "Pages", - name: "page", - path: "content/pages", - ui: { - router: ({ document }) => { - if (document._sys.filename === "home") { - return `/`; - } - if (document._sys.filename === "about") { - return `/about`; - } - return undefined; - }, - }, - fields: [ - { - type: "string", - label: "Title", - name: "title", - description: + { + type: "string", + label: "Name", + name: "name", + isTitle: true, + required: true + }, + { + type: "image", + label: "Avatar", + name: "avatar" + } + ] + }, + { + label: "Pages", + name: "page", + path: "content/pages", + ui: { + router: ({ document }) => { + if (document._sys.filename === "home") { + return "/"; + } + if (document._sys.filename === "about") { + return "/about"; + } + return undefined; + } + }, + fields: [ + { + type: "string", + label: "Title", + name: "title", + description: "The title of the page. This is used to display the title in the CMS", - isTitle: true, - required: true, - }, - { - type: "object", - list: true, - name: "blocks", - label: "Sections", - ui: { - visualSelector: true, - }, - templates: [ - heroBlockSchema, - // @ts-ignore - featureBlockSchema, - contentBlockSchema, - testimonialBlockSchema, - // @ts-ignore - carouselBlockSchema - ], - }, - ], - }, - ], - }, + isTitle: true, + required: true + }, + { + type: "object", + list: true, + name: "blocks", + label: "Sections", + ui: { + visualSelector: true + }, + templates: [ + heroBlockSchema, + // @ts-ignore + featureBlockSchema, + contentBlockSchema, + testimonialBlockSchema, + // @ts-ignore + carouselBlockSchema + ] + } + ] + } + ] + } }); export default config; diff --git a/tina/fields/color.tsx b/tina/fields/color.tsx index b84064d..b1f755a 100644 --- a/tina/fields/color.tsx +++ b/tina/fields/color.tsx @@ -2,51 +2,51 @@ import * as React from "react"; import { wrapFieldsWithMeta } from "tinacms"; export const colorOptions = [ - "blue", - "teal", - "green", - "yellow", - "orange", - "red", - "pink", - "purple", - "white", + "blue", + "teal", + "green", + "yellow", + "orange", + "red", + "pink", + "purple", + "white" ]; export const ColorPickerInput = wrapFieldsWithMeta(({ input }) => { - const inputClasses = { - blue: "bg-blue-500 border-blue-600", - teal: "bg-teal-500 border-teal-600", - green: "bg-green-500 border-green-600", - yellow: "bg-yellow-500 border-yellow-600", - orange: "bg-orange-500 border-orange-600", - red: "bg-red-500 border-red-600", - pink: "bg-pink-500 border-pink-600", - purple: "bg-purple-500 border-purple-600", - white: "bg-white border-gray-150", - }; + const inputClasses = { + blue: "bg-blue-500 border-blue-600", + teal: "bg-teal-500 border-teal-600", + green: "bg-green-500 border-green-600", + yellow: "bg-yellow-500 border-yellow-600", + orange: "bg-orange-500 border-orange-600", + red: "bg-red-500 border-red-600", + pink: "bg-pink-500 border-pink-600", + purple: "bg-purple-500 border-purple-600", + white: "bg-white border-gray-150" + }; - return ( - <> - -
- {colorOptions.map((color) => { - return ( - - ); - })} -
- - ); + return ( + <> + +
+ { colorOptions.map((color) => { + return ( +
+ + ); }); diff --git a/tina/fields/icon.tsx b/tina/fields/icon.tsx index 83496dc..7145b2a 100644 --- a/tina/fields/icon.tsx +++ b/tina/fields/icon.tsx @@ -6,129 +6,128 @@ import { Icon, IconOptions } from "../../components/util/icon"; import { BiChevronRight } from "react-icons/bi"; const parseIconName = (name: string) => { - const splitName = name.split(/(?=[A-Z])/); - if (splitName.length > 1) { - return splitName.slice(1).join(" "); - } else { + const splitName = name.split(/(?=[A-Z])/); + if (splitName.length > 1) { + return splitName.slice(1).join(" "); + } return name; - } }; export const IconPickerInput = wrapFieldsWithMeta(({ input }) => { - const [filter, setFilter] = React.useState(""); - const filteredBlocks = React.useMemo(() => { - return Object.keys(IconOptions).filter((name) => { - return name.toLowerCase().includes(filter.toLowerCase()); - }); - }, [filter]); + const [filter, setFilter] = React.useState(""); + const filteredBlocks = React.useMemo(() => { + return Object.keys(IconOptions).filter((name) => { + return name.toLowerCase().includes(filter.toLowerCase()); + }); + }, [filter]); - const inputLabel = Object.keys(IconOptions).includes(input.value) - ? parseIconName(input.value) - : "Select Icon"; - const InputIcon = IconOptions[input.value] ? IconOptions[input.value] : null; + const inputLabel = Object.keys(IconOptions).includes(input.value) + ? parseIconName(input.value) + : "Select Icon"; + const InputIcon = IconOptions[input.value] ? IconOptions[input.value] : null; - return ( -
- - - {({ open }) => ( - <> - - - -
- - - {({ close }) => ( -
-
- { - event.stopPropagation(); - event.preventDefault(); - }} - value={filter} - onChange={(event: any) => { - setFilter(event.target.value); - }} - placeholder="Filter..." - /> -
- {filteredBlocks.length === 0 && ( - + return ( +
+ + + { ({ open }) => ( + <> + + + +
+ + + { ({ close }) => ( +
+
+ { + event.stopPropagation(); + event.preventDefault(); + } } + value={ filter } + onChange={ (event: any) => { + setFilter(event.target.value); + } } + placeholder="Filter..." + /> +
+ { filteredBlocks.length === 0 && ( + No matches found - - )} - {filteredBlocks.length > 0 && ( -
- - {filteredBlocks.map((name) => { - return ( - - ); - })} + + ) } + { filteredBlocks.length > 0 && ( +
+ + { filteredBlocks.map((name) => { + return ( + + ); + }) } +
+ ) } +
+ ) } + +
- )} -
- )} - - -
- - )} - -
- ); + + ) } + +
+ ); }); diff --git a/yarn.lock b/yarn.lock index d8f27cf..0510fb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2874,14 +2874,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.20.0": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.6.tgz#bd36f71f5a529f828e20b627078d3ed6738dbb40" - integrity sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA== +"@typescript-eslint/parser@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.5.0.tgz#3d6ed231c5e307c5f5f4a0d86893ec01e92b8c77" + integrity sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ== dependencies: - "@typescript-eslint/scope-manager" "5.59.6" - "@typescript-eslint/types" "5.59.6" - "@typescript-eslint/typescript-estree" "5.59.6" + "@typescript-eslint/scope-manager" "6.5.0" + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/typescript-estree" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.59.6": @@ -2892,6 +2893,14 @@ "@typescript-eslint/types" "5.59.6" "@typescript-eslint/visitor-keys" "5.59.6" +"@typescript-eslint/scope-manager@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz#f2cb20895aaad41b3ad27cc3a338ce8598f261c5" + integrity sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw== + dependencies: + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + "@typescript-eslint/type-utils@5.59.6": version "5.59.6" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz#37c51d2ae36127d8b81f32a0a4d2efae19277c48" @@ -2907,6 +2916,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" integrity sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA== +"@typescript-eslint/types@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.5.0.tgz#f4e55cfd99ac5346ea772770bf212a3e689a8f04" + integrity sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w== + "@typescript-eslint/typescript-estree@5.59.6": version "5.59.6" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" @@ -2920,6 +2934,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz#1cef6bc822585e9ef89d88834bc902d911d747ed" + integrity sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ== + dependencies: + "@typescript-eslint/types" "6.5.0" + "@typescript-eslint/visitor-keys" "6.5.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/utils@5.59.6": version "5.59.6" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.6.tgz#82960fe23788113fc3b1f9d4663d6773b7907839" @@ -2942,6 +2969,14 @@ "@typescript-eslint/types" "5.59.6" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz#1a6f474a0170a447b76f0699ce6700110fd11436" + integrity sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA== + dependencies: + "@typescript-eslint/types" "6.5.0" + eslint-visitor-keys "^3.4.1" + "@udecode/plate-alignment@14.4.2": version "14.4.2" resolved "https://registry.yarnpkg.com/@udecode/plate-alignment/-/plate-alignment-14.4.2.tgz#2285e53b966f7ae7cc194cd8f2cc2f7e1673b6e2" @@ -3456,11 +3491,30 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -3471,6 +3525,49 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3491,6 +3588,13 @@ async-lock@^1.1.0: resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.4.0.tgz#c8b6630eff68fbbdd8a5b6eb763dac3bfbb8bf02" integrity sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" @@ -3523,6 +3627,11 @@ autoprefixer@^10.4.0: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + axios@0.21.2: version "0.21.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" @@ -3842,7 +3951,7 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-bind@^1.0.0: +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -4471,6 +4580,14 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -4567,6 +4684,13 @@ doctoc@^2.2.1: underscore "^1.13.2" update-section "^0.3.3" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -4709,6 +4833,96 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.20.4, es-abstract@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + +es-iterator-helpers@^1.0.12: + version "1.0.14" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz#19cd7903697d97e21198f3293b55e8985791c365" + integrity sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.0" + safe-array-concat "^1.0.0" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + esbuild-android-64@0.15.18: version "0.15.18" resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" @@ -4899,6 +5113,33 @@ escape-string-regexp@^5.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -4999,7 +5240,7 @@ estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -5351,6 +5592,13 @@ follow-redirects@^1.14.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -5424,11 +5672,26 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -5439,7 +5702,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== @@ -5466,6 +5729,14 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -5526,6 +5797,13 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -5538,6 +5816,13 @@ globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -5598,6 +5883,11 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5608,16 +5898,30 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5862,6 +6166,15 @@ ini@^3.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.1.tgz#c76ec81007875bc44d544ff7a11a55d12294102d" integrity sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ== +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + intl-messageformat@^10.1.0: version "10.3.5" resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.3.5.tgz#f55684fc663e62616ad59d3a504ea0cac3f267b7" @@ -5937,6 +6250,15 @@ is-alphanumerical@^2.0.0: is-alphabetical "^2.0.0" is-decimal "^2.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -5947,6 +6269,20 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -5954,6 +6290,14 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -5964,6 +6308,11 @@ is-buffer@^2.0.0, is-buffer@^2.0.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -5978,6 +6327,13 @@ is-core-module@^2.11.0, is-core-module@^2.5.0: dependencies: has "^1.0.3" +is-core-module@^2.9.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -5992,6 +6348,13 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" @@ -6042,11 +6405,25 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -6081,6 +6458,23 @@ is-lower-case@^2.0.2: dependencies: tslib "^2.0.3" +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -6130,6 +6524,14 @@ is-primitive@^3.0.1: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -6137,11 +6539,44 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -6166,6 +6601,26 @@ is-upper-case@^2.0.2: dependencies: tslib "^2.0.3" +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -6188,6 +6643,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6246,6 +6706,16 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +iterator.prototype@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.1.tgz#ab5b790e23ec00658f5974e032a2b05188bd3a5c" + integrity sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ== + dependencies: + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.3" + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -6399,6 +6869,16 @@ jsonpath-plus@^6.0.1: resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -8021,11 +8501,16 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@1.12.3, object-inspect@^1.9.0: +object-inspect@1.12.3, object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -8033,6 +8518,42 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -8040,6 +8561,15 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -8834,6 +9364,18 @@ redux@^4.0.0, redux@^4.0.4: dependencies: "@babel/runtime" "^7.9.2" +reflect.getprototypeof@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -8866,6 +9408,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + regexpu-core@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" @@ -9100,6 +9651,15 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.1, resolve@^1.22 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -9158,6 +9718,16 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -9168,6 +9738,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -9244,6 +9823,11 @@ semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.3.4, semver@^7.3.7: version "7.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" @@ -9251,6 +9835,13 @@ semver@^7.3.4, semver@^7.3.7: dependencies: lru-cache "^6.0.0" +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -9633,6 +10224,47 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.matchall@^4.0.8: + version "4.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.9.tgz#148779de0f75d36b13b15885fec5cadde994520d" + integrity sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -9983,6 +10615,11 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== +ts-api-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99" + integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -10050,6 +10687,45 @@ type-is@^1.6.4, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -10077,6 +10753,16 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -10536,11 +11222,61 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"