├── .env.example
├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── index.html
├── package.json
├── src
├── App.tsx
├── components
│ ├── ArticleItem.tsx
│ ├── ArticleSkeleton.tsx
│ ├── CommentItem.tsx
│ ├── CommentSkeleton.tsx
│ ├── LabelItem.tsx
│ ├── MarkdownHtml.tsx
│ ├── Pagination.tsx
│ ├── Playground.tsx
│ ├── ProjectItem.tsx
│ ├── ProjectSkeleton.tsx
│ ├── ShapeEffect
│ │ ├── ShapeEffect.tsx
│ │ └── shapes.ts
│ └── Skeleton.tsx
├── favicon.svg
├── hooks
│ ├── use-dark-mode.ts
│ ├── use-handling.ts
│ ├── use-local-storage.ts
│ └── use-query.ts
├── i18n
│ ├── index.ts
│ └── locales
│ │ ├── cn
│ │ ├── index.ts
│ │ └── translation.json
│ │ └── en
│ │ ├── index.ts
│ │ └── translation.json
├── main.tsx
├── models
│ ├── ArticleModel.ts
│ ├── CategoryModel.ts
│ ├── CommentModel.ts
│ ├── LabelModel.ts
│ ├── ProjectModel.ts
│ └── UserModel.ts
├── services
│ └── github.ts
├── styles
│ └── BaseStyles.tsx
├── utils.ts
└── views
│ ├── Article.tsx
│ ├── Articles.tsx
│ ├── Home.tsx
│ ├── Main.tsx
│ └── Projects.tsx
├── tailwind.config.js
├── tsconfig.json
├── tsconfig.node.json
├── types
├── env.d.ts
├── react-i18next.d.ts
├── twin.d.ts
└── vite-env.d.ts
├── vite.config.ts
└── yarn.lock
/.env.example:
--------------------------------------------------------------------------------
1 | VITE_APP_TITLE=Blog
2 | VITE_TITLE=Title
3 | VITE_EMAIL=fake@email.com
4 | VITE_GITHUB_URL=FAKE_URL
5 | VITE_GITHUB_ACCESS_TOKEN_PART1=FAKE_TOKEN_PART1
6 | VITE_GITHUB_ACCESS_TOKEN_PART2=FAKE_TOKEN_PART2
7 | VITE_GITHUB_OWNER=FAKE_USER
8 | VITE_GITHUB_REPO=FAKE_REPO
9 | VITE_GITHUB_MILESTONE_POSTS=1
10 | VITE_GITHUB_MILESTONE_SNIPPETS=2
11 | VITE_ARTICLE_PAGE_SIZE=10
12 | VITE_COMMENT_PAGE_SIZE=30
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 100,
3 | "tabWidth": 2,
4 | "useTabs": false,
5 | "semi": true,
6 | "singleQuote": true,
7 | "trailingComma": "all",
8 | "bracketSpacing": true,
9 | "bracketSameLine": false,
10 | "arrowParens": "always",
11 | "importOrder": ["^@/(.*)$", "^[../]", "^[./]"],
12 | "importOrderSeparation": true,
13 | "importOrderSortSpecifiers": true
14 | }
15 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016-present, varHarrie
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # varHarrie's Blog
2 |
3 | Personal blog site based on github issues.
4 |
5 | ## Features
6 |
7 | - 💪 No need backend server
8 | - 📱 Mobile compatible
9 | - 🌙 Supports dark theme
10 | - 🌏 Supports i18n
11 | - ⚾︎ Integrates code playground
12 |
13 | ## Getting started
14 |
15 | 1. Clone the repository: `git clone https://github.com/varHarrie/varharrie.github.io.git`
16 | 2. Install dependencies: `yarn`
17 | 3. Rename .env.example to .env.local and Modify its content
18 | 4. Start dev server: `yarn run dev`
19 |
20 | ## License
21 |
22 | [MIT](./LICENSE)
23 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "varharrie-blog",
3 | "private": true,
4 | "version": "0.0.0",
5 | "babelMacros": {
6 | "twin": {
7 | "preset": "emotion"
8 | }
9 | },
10 | "scripts": {
11 | "dev": "vite",
12 | "build": "tsc && vite build",
13 | "preview": "vite preview"
14 | },
15 | "homepage": "https://github.com/varHarrie/varharrie.github.io#readme",
16 | "author": "varharrie ",
17 | "license": "MIT",
18 | "dependencies": {
19 | "@codesandbox/sandpack-react": "^2.0.26",
20 | "@emotion/react": "^11.10.6",
21 | "@emotion/serialize": "^1.1.1",
22 | "@emotion/styled": "^11.10.6",
23 | "copy-text-to-clipboard": "^3.0.1",
24 | "date-fns": "^2.29.3",
25 | "github-markdown-css": "^5.2.0",
26 | "i18next": "^22.4.10",
27 | "markdown-it": "^13.0.1",
28 | "prism-themes": "^1.9.0",
29 | "prismjs": "^1.29.0",
30 | "react": "^18.2.0",
31 | "react-dom": "^18.2.0",
32 | "react-i18next": "^12.2.0",
33 | "react-router-dom": "^6.8.2",
34 | "react-transition-group": "^4.4.5",
35 | "tailwindcss": "^3.2.7",
36 | "twin.macro": "^3.1.0"
37 | },
38 | "devDependencies": {
39 | "@babel/plugin-transform-react-jsx": "^7.21.0",
40 | "@emotion/babel-plugin-jsx-pragmatic": "^0.2.0",
41 | "@ianvs/prettier-plugin-sort-imports": "^3.7.1",
42 | "@iconify-json/octicon": "^1.1.33",
43 | "@iconify-json/ri": "^1.1.5",
44 | "@iconify-json/teenyicons": "^1.1.5",
45 | "@iconify-json/vscode-icons": "^1.1.22",
46 | "@svgr/core": "^6.5.1",
47 | "@types/markdown-it": "^12.2.3",
48 | "@types/prismjs": "^1.26.0",
49 | "@types/react": "^18.0.28",
50 | "@types/react-dom": "^18.0.11",
51 | "@types/react-transition-group": "^4.4.5",
52 | "@vitejs/plugin-react": "^3.1.0",
53 | "babel-plugin-macros": "^3.1.0",
54 | "prettier": "^2.8.4",
55 | "typescript": "^4.9.5",
56 | "unplugin-icons": "^0.15.3",
57 | "vite": "^4.1.4"
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { HashRouter, Outlet, Route, Routes } from 'react-router-dom';
3 |
4 | import Article from './views/Article';
5 | import Articles from './views/Articles';
6 | import Home from './views/Home';
7 | import Main from './views/Main';
8 | import Projects from './views/Projects';
9 |
10 | const milestones = {
11 | posts: Number(import.meta.env.VITE_GITHUB_MILESTONE_POSTS),
12 | snippets: Number(import.meta.env.VITE_GITHUB_MILESTONE_SNIPPETS),
13 | };
14 |
15 | export default function App() {
16 | return (
17 |
18 |
19 | }>
20 | } />
21 | }>
22 | } />
23 | } />
24 |
25 | }>
26 | } />
27 | } />
28 |
29 | } />
30 |
31 |
32 |
33 | );
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/ArticleItem.tsx:
--------------------------------------------------------------------------------
1 | import { format } from 'date-fns';
2 | import React, { useMemo } from 'react';
3 | import { useTranslation } from 'react-i18next';
4 | import { Link, To } from 'react-router-dom';
5 | import tw from 'twin.macro';
6 | import IconComments from '~icons/ri/chat-2-line';
7 |
8 | import ArticleModel from '../models/ArticleModel';
9 | import LabelItem from './LabelItem';
10 |
11 | const Wrapper = tw.div`flex flex-col justify-center h-20 border-t border-dotted border-gray-300 dark:border-gray-800`;
12 |
13 | const Row = tw.div`flex items-center`;
14 |
15 | const Left = tw.div`hidden lg:block w-36 text-sm text-slate-400 dark:text-slate-600 text-right`;
16 |
17 | const Right = tw.div`ml-4 flex-1 min-w-0 truncate`;
18 |
19 | export type ArticleItemProps = {
20 | article: ArticleModel;
21 | getLink: (id: number) => To;
22 | getLabelLink: (label: string) => To;
23 | };
24 |
25 | export default function ArticleItem(props: ArticleItemProps) {
26 | const { article, getLink, getLabelLink } = props;
27 |
28 | const { t } = useTranslation();
29 |
30 | const createdAt = useMemo(() => format(new Date(article.createdAt), t('dateFormat')), [article]);
31 |
32 | return (
33 |
34 |
35 | {createdAt}
36 |
37 | {article.title}
38 |
39 |
40 |
41 |
42 |
43 | {article.comments}
44 |
45 |
46 | {article.labels.map((label) => (
47 |
48 | ))}
49 |
50 |
51 |
52 | );
53 | }
54 |
--------------------------------------------------------------------------------
/src/components/ArticleSkeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tw from 'twin.macro';
3 |
4 | import Skeleton from './Skeleton';
5 |
6 | const Wrapper = tw.div`flex flex-col justify-center h-20 border-t border-dotted border-gray-300 dark:border-gray-800`;
7 |
8 | const Row = tw.div`flex items-center`;
9 |
10 | const Left = tw.div`hidden lg:block w-36 text-sm text-right`;
11 |
12 | const Right = tw.div`ml-4 flex-1 min-w-0 truncate`;
13 |
14 | export default function ArticleSkeleton() {
15 | const titleWidth = `${50 + Math.random() * 50}%`;
16 | const labelCount = Math.floor(Math.random() * 3) + 1;
17 |
18 | return (
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | {Array.from({ length: labelCount }).map((_, i) => (
34 |
35 | ))}
36 |
37 |
38 |
39 | );
40 | }
41 |
--------------------------------------------------------------------------------
/src/components/CommentItem.tsx:
--------------------------------------------------------------------------------
1 | import { format } from 'date-fns';
2 | import React, { useMemo } from 'react';
3 | import { useTranslation } from 'react-i18next';
4 | import tw from 'twin.macro';
5 |
6 | import CommentModel from '../models/CommentModel';
7 | import MarkdownHtml from './MarkdownHtml';
8 |
9 | const Wrapper = tw.div`relative mt-8 pt-8 pl-12 border-t border-gray-300 dark:border-gray-800`;
10 |
11 | const Avatar = tw.div`absolute top-8 left-0 w-8 h-8 rounded-full overflow-hidden`;
12 |
13 | const Header = tw.header`mb-2 space-x-4 flex items-center text-sm`;
14 |
15 | const OwnerTag = tw.span`px-1 text-xs text-white leading-5 rounded-sm bg-blue-500`;
16 |
17 | export type CommentItemProps = {
18 | comment: CommentModel;
19 | };
20 |
21 | export default function CommentItem(props: CommentItemProps) {
22 | const { comment } = props;
23 | const { t } = useTranslation();
24 |
25 | const createdAt = useMemo(() => {
26 | return format(new Date(comment.createdAt), 'yyyy-MM-dd HH:mm:ss');
27 | }, ['article']);
28 |
29 | const link = useMemo(() => {
30 | const { origin, pathname } = window.location;
31 | return [origin, pathname, `#${comment.id}`].join('');
32 | }, [comment]);
33 |
34 | return (
35 |
36 |
37 |
38 |
39 |
46 |
47 |
48 | );
49 | }
50 |
--------------------------------------------------------------------------------
/src/components/CommentSkeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tw from 'twin.macro';
3 |
4 | import Skeleton from './Skeleton';
5 |
6 | const Wrapper = tw.div`relative mt-8 pt-8 pl-12 border-t border-gray-300 dark:border-gray-800`;
7 |
8 | export default function CommentSkeleton() {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/LabelItem.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link, To } from 'react-router-dom';
3 | import tw from 'twin.macro';
4 |
5 | import LabelModel from '../models/LabelModel';
6 |
7 | const Wrapper = tw(Link)`mr-4 flex items-center`;
8 |
9 | const Dot = tw.span`w-2 h-2 rounded-full`;
10 |
11 | const Title = tw.span`ml-2 dark:text-slate-600`;
12 |
13 | export type LabelItemProps = {
14 | label: LabelModel;
15 | getLink: (label: string) => To;
16 | };
17 |
18 | export default function LabelItem(props: LabelItemProps) {
19 | const { label, getLink } = props;
20 |
21 | return (
22 |
23 |
24 | {label.name}
25 |
26 | );
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/MarkdownHtml.tsx:
--------------------------------------------------------------------------------
1 | import { SANDBOX_TEMPLATES } from '@codesandbox/sandpack-react';
2 | import MarkdownIt from 'markdown-it';
3 | import React, { memo, useContext, useEffect, useRef, useState } from 'react';
4 | import { Root, createRoot } from 'react-dom/client';
5 | import tw, { styled } from 'twin.macro';
6 |
7 | import { DarkModeValueContext } from '../hooks/use-dark-mode';
8 | import { highlight } from '../utils';
9 | import Playground, { PlaygroundProps } from './Playground';
10 |
11 | const Container = styled.div`
12 | ${tw`bg-transparent!`}
13 |
14 | > pre {
15 | ${tw`rounded shadow-md border border-gray-200 bg-white dark:bg-slate-800 dark:border-gray-800`}
16 | }
17 | `;
18 |
19 | const parseArgs = (raw: string): Record => {
20 | const re = /(?\w+)="(?[^"]*)"/g;
21 | const args: Record = {};
22 |
23 | for (const matched of raw.matchAll(re)) {
24 | const { key, value } = matched.groups!;
25 | args[key] = value;
26 | }
27 |
28 | const [lang] = raw.split(' ', 1);
29 | if (lang) args.lang = lang;
30 |
31 | return args;
32 | };
33 |
34 | const toHtml = (markdown: string, playground?: boolean) => {
35 | if (!markdown) return '';
36 |
37 | const md = new MarkdownIt({ highlight });
38 | const defaultFence = md.renderer.rules.fence;
39 |
40 | md.renderer.rules.fence = (tokens, idx, options, env, self) => {
41 | const { content, info } = tokens[idx];
42 | const args = parseArgs(info);
43 |
44 | if (playground && Object.keys(SANDBOX_TEMPLATES).includes(args.template)) {
45 | const el = document.createElement('div');
46 |
47 | Object.assign(el.dataset, {
48 | playground: true,
49 | code: content,
50 | template: args.template,
51 | autorun: args.autorun !== 'false',
52 | });
53 |
54 | return el.outerHTML;
55 | }
56 |
57 | return defaultFence?.(tokens, idx, options, env, self) || '';
58 | };
59 |
60 | return md.render(markdown);
61 | };
62 |
63 | type ReactRootElement = HTMLDivElement & { reactRoot?: Root };
64 |
65 | export type MarkdownHtmlProps = {
66 | markdown: string;
67 | playground?: boolean;
68 | };
69 |
70 | export default memo(function MarkdownHtml(props: MarkdownHtmlProps) {
71 | const { markdown, playground } = props;
72 | const darkMode = useContext(DarkModeValueContext);
73 |
74 | const container = useRef(null);
75 | const playgrounds = useRef([]);
76 | const [html, setHtml] = useState('');
77 |
78 | useEffect(() => {
79 | setHtml(toHtml(markdown, playground));
80 | }, []);
81 |
82 | useEffect(() => {
83 | if (!container.current) return;
84 |
85 | container.current
86 | .querySelectorAll('[data-playground]')
87 | .forEach((el: ReactRootElement) => {
88 | if (!el.reactRoot) {
89 | el.reactRoot = createRoot(el);
90 | playgrounds.current.push(el.reactRoot);
91 | }
92 |
93 | el.reactRoot.render(
94 | ,
95 | );
96 | });
97 | }, [html, darkMode]);
98 |
99 | useEffect(() => {
100 | return () => {
101 | playgrounds.current.forEach((root) => {
102 | setTimeout(() => root.unmount(), 0);
103 | });
104 | };
105 | }, []);
106 |
107 | return (
108 |
113 | );
114 | });
115 |
--------------------------------------------------------------------------------
/src/components/Pagination.tsx:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useMemo } from 'react';
2 | import tw, { styled } from 'twin.macro';
3 | import IconArrowLeft from '~icons/ri/arrow-left-s-line';
4 | import IconArrowRight from '~icons/ri/arrow-right-s-line';
5 |
6 | import { clamp } from '../utils';
7 |
8 | const RADIUS = 2;
9 | const RANGE = 2 * RADIUS;
10 |
11 | const List = tw.ul`space-x-4 flex items-center`;
12 |
13 | const Item = styled.li<{ active?: boolean; disabled?: boolean }>`
14 | ${tw`w-8 h-8 flex items-center justify-center rounded-sm text-slate-300 cursor-pointer`}
15 | ${({ active }) => active && tw`bg-blue-500 text-white`}
16 | ${({ disabled }) => disabled && tw`opacity-30 cursor-not-allowed`}
17 | `;
18 |
19 | export type PaginationProps = {
20 | page: number;
21 | pageSize: number;
22 | total: number;
23 | onChange?: (page: number) => void;
24 | };
25 |
26 | export default function Pagination(props: PaginationProps) {
27 | const { page, pageSize, total, onChange } = props;
28 |
29 | const totalPages = useMemo(() => Math.ceil(total / pageSize), [total, pageSize]);
30 |
31 | const pages = useMemo(() => {
32 | if (totalPages < 1) return [];
33 |
34 | const start = clamp(
35 | page + RADIUS > totalPages ? totalPages - RANGE : page - RADIUS,
36 | 1,
37 | totalPages,
38 | );
39 |
40 | const end = clamp(start + RANGE, start, totalPages);
41 | const length = end - start + 1;
42 |
43 | return Array.from({ length }).map((_, i) => start + i);
44 | }, [page, totalPages]);
45 |
46 | const hasPrevious = page > 1;
47 | const hasNext = page < totalPages;
48 |
49 | const onGoto = useCallback(
50 | (e: React.MouseEvent) => {
51 | const to = (e.target as HTMLLIElement).dataset.page;
52 | if (to) onChange?.(parseInt(to, 10));
53 | },
54 | [onChange],
55 | );
56 |
57 | const onPrevious = useCallback(() => {
58 | if (hasPrevious) onChange?.(page - 1);
59 | }, [page, hasPrevious, onChange]);
60 |
61 | const onNext = useCallback(() => {
62 | if (hasNext) onChange?.(page + 1);
63 | }, [page, hasNext, onChange]);
64 |
65 | if (totalPages <= 0) return null;
66 |
67 | return (
68 |
69 | -
70 |
71 |
72 | {pages.map((i) => (
73 | -
74 | {i}
75 |
76 | ))}
77 | -
78 |
79 |
80 |
81 | );
82 | }
83 |
--------------------------------------------------------------------------------
/src/components/Playground.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | SANDBOX_TEMPLATES,
3 | SandpackCodeEditor,
4 | SandpackConsole,
5 | SandpackLayout,
6 | SandpackPredefinedTemplate,
7 | SandpackPreview,
8 | SandpackProvider,
9 | SandpackStack,
10 | } from '@codesandbox/sandpack-react';
11 | import { memo, useCallback, useEffect, useRef, useState } from 'react';
12 | import tw, { styled } from 'twin.macro';
13 |
14 | import { clamp } from '../utils';
15 |
16 | type DragHandlerProps = {
17 | direction: 'horizontal' | 'vertical';
18 | };
19 |
20 | const DragHandler = styled.div`
21 | ${tw`absolute z-1`}
22 | ${({ direction }) =>
23 | direction === 'horizontal'
24 | ? tw`top-0 bottom-0 w-2 cursor-ew-resize`
25 | : tw`left-0 right-0 h-2 cursor-ns-resize`}
26 | `;
27 |
28 | const ConsoleWrapper = tw.div`w-full overflow-hidden`;
29 |
30 | export type PlaygroundProps = {
31 | theme: 'dark' | 'light';
32 | code: string;
33 | template: SandpackPredefinedTemplate;
34 | autorun: string;
35 | };
36 |
37 | export default memo(function Playground(props: PlaygroundProps) {
38 | const { theme, code, template, autorun } = props;
39 | const entry = SANDBOX_TEMPLATES[template].main;
40 |
41 | const [horizontalSize, setHorizontalSize] = useState(50);
42 | const [verticalSize, setVerticalSize] = useState(70);
43 |
44 | const dragHandlerRef = useRef();
45 |
46 | const onDragStart = useCallback((e: React.MouseEvent) => {
47 | dragHandlerRef.current = e.target as HTMLDivElement;
48 |
49 | const container = dragHandlerRef.current.parentElement;
50 | container?.querySelectorAll('.sp-stack').forEach((el) => {
51 | el.style.pointerEvents = 'none';
52 | });
53 | }, []);
54 |
55 | const onDragMove = useCallback((e: MouseEvent) => {
56 | if (!dragHandlerRef.current?.parentElement) return;
57 |
58 | const container = dragHandlerRef.current.parentElement;
59 | const { direction } = dragHandlerRef.current.dataset;
60 | const { width, height, top, left } = container.getBoundingClientRect();
61 |
62 | if (direction === 'horizontal') {
63 | const size = ((e.clientX - left) / width) * 100;
64 | setHorizontalSize(clamp(size, 25, 75));
65 | } else {
66 | const size = ((e.clientY - top) / height) * 100;
67 | setVerticalSize(clamp(size, 25, 75));
68 | }
69 | }, []);
70 |
71 | const onDragEnd = useCallback(() => {
72 | if (!dragHandlerRef.current?.parentElement) return;
73 |
74 | const container = dragHandlerRef.current.parentElement;
75 | container?.querySelectorAll('.sp-stack').forEach((el) => {
76 | el.style.pointerEvents = 'auto';
77 | });
78 |
79 | dragHandlerRef.current = undefined;
80 | }, []);
81 |
82 | useEffect(() => {
83 | document.body.addEventListener('mousemove', onDragMove);
84 | document.body.addEventListener('mouseup', onDragEnd);
85 |
86 | return (): void => {
87 | document.body.removeEventListener('mousemove', onDragMove);
88 | document.body.removeEventListener('mouseup', onDragEnd);
89 | };
90 | }, []);
91 |
92 | return (
93 |
100 |
101 |
110 |
116 |
126 |
135 |
141 |
148 |
149 |
150 |
151 |
152 |
153 | );
154 | });
155 |
--------------------------------------------------------------------------------
/src/components/ProjectItem.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tw, { styled } from 'twin.macro';
3 | import IconIssue from '~icons/octicon/issue-opened-16';
4 | import IconForked from '~icons/octicon/repo-forked-16';
5 | import IconStar from '~icons/octicon/star-16';
6 | import IconDefault from '~icons/ri/code-s-slash-line';
7 | import IconCss from '~icons/ri/css3-line';
8 | import IconHtml from '~icons/ri/html5-line';
9 | import IconVue from '~icons/ri/vuejs-line';
10 | import IconJs from '~icons/teenyicons/javascript-outline';
11 | import IconTs from '~icons/teenyicons/typescript-outline';
12 | import IconCS from '~icons/vscode-icons/file-type-csharp';
13 |
14 | import ProjectModel from '../models/ProjectModel';
15 |
16 | const Wrapper = tw.div`
17 | relative p-3 pl-14
18 | bg-white dark:bg-gray-900 rounded-md ring-1 ring-slate-600/5 shadow-sm hover:shadow-lg
19 | transition-all duration-300
20 | `;
21 |
22 | const Icon = styled.div`
23 | ${tw`
24 | absolute top-3 left-3 w-9 h-9 rounded-md
25 | flex items-center justify-center overflow-hidden font-bold
26 | `}
27 |
28 | &::before {
29 | ${tw`absolute top-0 left-0 block [content:''] w-full h-full opacity-20`}
30 | background-color: currentColor;
31 | }
32 | `;
33 |
34 | const Title = tw.a`block text-blue-500 truncate`;
35 |
36 | const Description = styled.div`
37 | ${tw`mt-2 text-slate-400 text-sm overflow-hidden`}
38 |
39 | display: -webkit-box;
40 | -webkit-line-clamp: 2;
41 | -webkit-box-orient: vertical;
42 | `;
43 |
44 | const CountList = tw.ul`mt-2 space-x-3 flex min-w-0 text-sm text-slate-400 leading-5`;
45 |
46 | const CountItem = tw.li`flex items-center`;
47 |
48 | type IconDetail = {
49 | component: React.FunctionComponent;
50 | color: string;
51 | };
52 |
53 | const iconMap: Record = {
54 | default: { component: IconDefault, color: '' },
55 | TypeScript: { component: IconTs, color: '#3178C6' },
56 | JavaScript: { component: IconJs, color: '#FCD002' },
57 | HTML: { component: IconHtml, color: '#FF3C41' },
58 | CSS: { component: IconCss, color: '#10BDFF' },
59 | Vue: { component: IconVue, color: '#41B883' },
60 | 'C#': { component: IconCS, color: '#368833' },
61 | };
62 |
63 | export type ProjectItemProps = {
64 | project: ProjectModel;
65 | };
66 |
67 | export default function ProjectItem(props: ProjectItemProps) {
68 | const { project } = props;
69 |
70 | const icon = iconMap[props.project.language] ?? iconMap.default;
71 |
72 | return (
73 |
74 |
75 |
76 |
77 | {project.fullName}
78 | {project.description}
79 |
80 |
81 |
82 | {project.stargazersCount}
83 |
84 |
85 |
86 | {project.forksCount}
87 |
88 |
89 |
90 | {project.openIssuesCount}
91 |
92 |
93 |
94 | );
95 | }
96 |
--------------------------------------------------------------------------------
/src/components/ProjectSkeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tw from 'twin.macro';
3 |
4 | import Skeleton from './Skeleton';
5 |
6 | const Wrapper = tw.div`
7 | relative p-3 pl-14
8 | bg-white dark:bg-gray-900 rounded-md ring-1 ring-slate-600/5 shadow-sm hover:shadow-lg
9 | transition-all duration-300
10 | `;
11 |
12 | const Icon = tw(Skeleton)`absolute top-3 left-3 w-9 h-9 rounded-md`;
13 |
14 | const Title = tw(Skeleton)`w-1/2 h-5 text-blue-200`;
15 |
16 | const Description = tw(Skeleton)`mt-2 w-2/3`;
17 |
18 | const CountList = tw.div`mt-2 flex`;
19 |
20 | const CountItem = tw(Skeleton)`mr-4 w-10 h-5`;
21 |
22 | export default function ProjectSkeleton() {
23 | return (
24 |
25 |
26 |
27 |
28 |
29 | {Array.from({ length: 3 }).map((_, i) => (
30 |
31 | ))}
32 |
33 |
34 | );
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/ShapeEffect/ShapeEffect.tsx:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useEffect, useRef, useState } from 'react';
2 | import tw from 'twin.macro';
3 |
4 | import { Circle, Rectangle, Shape, Triangle } from './shapes';
5 |
6 | const Canvas = tw.canvas`w-full h-full opacity-0 transition-opacity duration-300`;
7 |
8 | const visible = tw`opacity-100`;
9 |
10 | const Shapes = [Triangle, Rectangle, Circle];
11 |
12 | // https://tailwindcss.com/docs/customizing-colors
13 | const colors = [
14 | // '#71717a',
15 | // '#737373',
16 | // '#78716c',
17 | // '#ef4444',
18 | '#f97316',
19 | '#f59e0b',
20 | '#eab308',
21 | '#84cc16',
22 | '#22c55e',
23 | '#10b981',
24 | '#14b8a6',
25 | '#06b6d4',
26 | '#0ea5e9',
27 | '#3b82f6',
28 | '#6366f1',
29 | '#8b5cf6',
30 | '#a855f7',
31 | '#d946ef',
32 | '#ec4899',
33 | '#f43f5e',
34 | ];
35 |
36 | export type ShapeEffectProps = {
37 | count: number;
38 | sizes: [min: number, max: number];
39 | };
40 |
41 | export default function ShapeEffect(props: ShapeEffectProps) {
42 | const { count, sizes } = props;
43 |
44 | const [mounted, setMounted] = useState(false);
45 | const canvas = useRef(null);
46 | const shapes = useRef([]);
47 |
48 | const resize = useCallback(() => {
49 | if (!canvas.current) return;
50 |
51 | const rect = canvas.current.getBoundingClientRect();
52 | canvas.current.width = rect.width;
53 | canvas.current.height = rect.height;
54 | }, []);
55 |
56 | const fill = useCallback(() => {
57 | if (!canvas.current) return;
58 | const ctxWidth = canvas.current.width;
59 | const ctxHeight = canvas.current.height;
60 | const firstTime = shapes.current.length === 0;
61 |
62 | while (shapes.current.length < count) {
63 | const ShapeCtor = Shapes[Math.floor(Math.random() * Shapes.length)];
64 | const color = colors[Math.floor(Math.random() * colors.length)];
65 | const size = sizes[0] + Math.random() * (sizes[1] - sizes[0]);
66 | const x = firstTime ? Math.random() * ctxWidth : -size;
67 | const y = Math.random() * ctxHeight;
68 |
69 | shapes.current.push(new ShapeCtor(x, y, size, color));
70 | }
71 | }, []);
72 |
73 | const draw = useCallback(() => {
74 | if (!canvas.current) return;
75 | const ctx = canvas.current.getContext('2d')!;
76 | const ctxWidth = canvas.current.width;
77 | const ctxHeight = canvas.current.height;
78 |
79 | ctx.clearRect(0, 0, ctxWidth, ctxHeight);
80 |
81 | shapes.current.forEach((shape) => {
82 | shape.move();
83 | shape.draw(ctx);
84 | });
85 |
86 | shapes.current = shapes.current.filter((shape) => {
87 | return shape.x - shape.size < ctxWidth;
88 | });
89 | }, []);
90 |
91 | const tick = useCallback(() => {
92 | fill();
93 | draw();
94 | requestAnimationFrame(tick);
95 | }, []);
96 |
97 | useEffect(() => {
98 | resize();
99 | tick();
100 | setMounted(true);
101 | window.addEventListener('resize', resize);
102 |
103 | return () => {
104 | window.removeEventListener('resize', resize);
105 | };
106 | }, []);
107 |
108 | return ;
109 | }
110 |
--------------------------------------------------------------------------------
/src/components/ShapeEffect/shapes.ts:
--------------------------------------------------------------------------------
1 | interface Point {
2 | x: number;
3 | y: number;
4 | }
5 |
6 | function createPolygonPath2D(points: Point[]) {
7 | const path = new Path2D();
8 |
9 | points.forEach((point, index) => {
10 | if (index === 0) {
11 | path.moveTo(point.x, point.y);
12 | } else {
13 | path.lineTo(point.x, point.y);
14 | }
15 | });
16 |
17 | return path;
18 | }
19 |
20 | export abstract class Shape implements Point {
21 | x: number;
22 |
23 | y: number;
24 |
25 | size: number;
26 |
27 | color: string;
28 |
29 | angle = 2 * Math.PI * Math.random();
30 |
31 | rotate = Math.random() * Math.PI;
32 |
33 | speed = 0.2 + Math.random() * 1.5;
34 |
35 | constructor(x: number, y: number, size: number, color: string) {
36 | this.x = x;
37 | this.y = y;
38 | this.size = size;
39 | this.color = color;
40 | }
41 |
42 | move() {
43 | this.x += this.speed;
44 | this.rotate -= this.speed * 0.006;
45 | }
46 |
47 | createGradient(ctx: CanvasRenderingContext2D) {
48 | const size = this.size * 1.5;
49 | const endAngle = this.angle + Math.PI;
50 |
51 | const startX = this.x + this.size * Math.sin(this.angle + this.rotate);
52 | const startY = this.y + this.size * Math.cos(this.angle + this.rotate);
53 | const endX = this.x + size * Math.sin(endAngle + this.rotate);
54 | const endY = this.y + size * Math.cos(endAngle + this.rotate);
55 |
56 | const gradient = ctx.createLinearGradient(startX, startY, endX, endY);
57 | gradient.addColorStop(0, this.color);
58 | gradient.addColorStop(0.3, this.color);
59 | gradient.addColorStop(0.85, '#ffffff');
60 |
61 | return gradient;
62 | }
63 |
64 | abstract draw(ctx: CanvasRenderingContext2D): void;
65 | }
66 |
67 | export class Polygon extends Shape {
68 | sides: number;
69 |
70 | constructor(
71 | x: number,
72 | y: number,
73 | size: number,
74 | color: string,
75 | sides: number
76 | ) {
77 | super(x, y, size, color);
78 | this.sides = sides;
79 | }
80 |
81 | draw(ctx: CanvasRenderingContext2D) {
82 | const halfSize = this.size / 2;
83 | const angle = (Math.PI * 2) / this.sides;
84 | const points: Point[] = [];
85 |
86 | Array.from({ length: this.sides }).forEach((_, i) => {
87 | points.push({
88 | x: this.x + halfSize * Math.sin(angle * i + this.rotate),
89 | y: this.y + halfSize * Math.cos(angle * i + this.rotate),
90 | });
91 | });
92 |
93 | const path = createPolygonPath2D(points);
94 | ctx.fillStyle = this.createGradient(ctx);
95 | ctx.fill(path);
96 | }
97 | }
98 |
99 | export class Triangle extends Polygon {
100 | constructor(x: number, y: number, size: number, color: string) {
101 | super(x, y, size, color, 3);
102 | }
103 | }
104 |
105 | export class Rectangle extends Polygon {
106 | constructor(x: number, y: number, size: number, color: string) {
107 | super(x, y, size, color, 4);
108 | }
109 | }
110 |
111 | export class Circle extends Shape {
112 | draw(ctx: CanvasRenderingContext2D) {
113 | const radius = this.size / 2;
114 |
115 | const path = new Path2D();
116 | path.moveTo(0, 0);
117 | path.arc(this.x, this.y, radius, 0, 2 * Math.PI);
118 |
119 | ctx.fillStyle = this.createGradient(ctx);
120 | ctx.fill(path);
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/src/components/Skeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tw from 'twin.macro';
3 |
4 | const Bone = tw.div`h-6 rounded bg-gray-200 dark:bg-gray-800 animate-pulse`;
5 |
6 | type SkeletonProps = React.HTMLAttributes & {
7 | children?: React.ReactElement;
8 | };
9 |
10 | export default function Skeleton(props: SkeletonProps) {
11 | return props.children ?? ;
12 | }
13 |
--------------------------------------------------------------------------------
/src/favicon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/hooks/use-dark-mode.ts:
--------------------------------------------------------------------------------
1 | import { createContext, useEffect } from 'react';
2 |
3 | import useLocalStorage from './use-local-storage';
4 |
5 | export const DarkModeValueContext = createContext(false);
6 |
7 | export default function useDarkMode() {
8 | const [enabledValue, setEnabledValue] = useLocalStorage('dark-mode-enabled');
9 |
10 | const prefersDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
11 |
12 | const enabled = enabledValue ?? prefersDarkMode;
13 |
14 | useEffect(() => {
15 | if (enabled) {
16 | document.documentElement.classList.add('dark');
17 | } else {
18 | document.documentElement.classList.remove('dark');
19 | }
20 | }, [enabled]);
21 |
22 | return [enabled, setEnabledValue] as const;
23 | }
24 |
--------------------------------------------------------------------------------
/src/hooks/use-handling.ts:
--------------------------------------------------------------------------------
1 | import { useState } from 'react';
2 |
3 | import { AnyFunction } from '../utils';
4 |
5 | export default function useHandling(
6 | handler: T,
7 | initialValue = false
8 | ) {
9 | const [handling, setHandling] = useState(initialValue);
10 |
11 | const execute = async (...args: Parameters) => {
12 | setHandling(true);
13 |
14 | try {
15 | return (await handler(...args)) as Promise>;
16 | } finally {
17 | setHandling(false);
18 | }
19 | };
20 |
21 | return [handling, execute as T] as const;
22 | }
23 |
--------------------------------------------------------------------------------
/src/hooks/use-local-storage.ts:
--------------------------------------------------------------------------------
1 | import { useCallback, useState } from 'react';
2 |
3 | export default function useLocalStorage(
4 | key: string
5 | ): [T | undefined, (value: T) => void];
6 | export default function useLocalStorage(
7 | key: string,
8 | initialValue: T
9 | ): [T, (value: T) => void];
10 | export default function useLocalStorage(
11 | key: string,
12 | initialValue?: T
13 | ): [T, (value: T) => void] {
14 | const [value, setValue] = useState(() => {
15 | try {
16 | const item = window.localStorage.getItem(key);
17 | return item ? JSON.parse(item) : initialValue;
18 | } catch (error) {
19 | return initialValue;
20 | }
21 | });
22 |
23 | const update = useCallback((newValue: T) => {
24 | setValue(newValue);
25 | window.localStorage.setItem(key, JSON.stringify(newValue));
26 | }, []);
27 |
28 | return [value, update];
29 | }
30 |
--------------------------------------------------------------------------------
/src/hooks/use-query.ts:
--------------------------------------------------------------------------------
1 | import { useMemo } from 'react';
2 | import { useSearchParams } from 'react-router-dom';
3 |
4 | export default function useQuery() {
5 | const [search] = useSearchParams();
6 | const query = useMemo(() => Object.fromEntries(search.entries()), [search]);
7 |
8 | return query;
9 | }
10 |
--------------------------------------------------------------------------------
/src/i18n/index.ts:
--------------------------------------------------------------------------------
1 | import i18n from 'i18next';
2 | import { initReactI18next } from 'react-i18next';
3 |
4 | import cn from './locales/cn';
5 | import en from './locales/en';
6 |
7 | export const defaultNS = 'translation';
8 | export const resources = { cn, en };
9 |
10 | const preferredLanguage = navigator.language === 'zh-CN' ? 'cn' : 'en';
11 | const storedLanguage = localStorage.getItem('language');
12 |
13 | i18n.use(initReactI18next).init({
14 | resources,
15 | defaultNS,
16 | lng: storedLanguage || preferredLanguage,
17 | });
18 |
19 | export default i18n;
20 |
--------------------------------------------------------------------------------
/src/i18n/locales/cn/index.ts:
--------------------------------------------------------------------------------
1 | import translation from './translation.json';
2 |
3 | export default { translation } as const;
4 |
--------------------------------------------------------------------------------
/src/i18n/locales/cn/translation.json:
--------------------------------------------------------------------------------
1 | {
2 | "tab": {
3 | "posts": "文章",
4 | "snippets": "代码片段",
5 | "projects": "项目"
6 | },
7 | "intro": {
8 | "title": "👋 你好,我是Harrie",
9 | "description": "一个全栈的Web开发者,主要专注于Node.js、Vue、React等技术",
10 | "link": "开始阅读"
11 | },
12 | "dateFormat": "yyyy / MM / dd",
13 | "comment": {
14 | "title": "评论",
15 | "btn": "评论",
16 | "owner": "作者"
17 | },
18 | "projects": {
19 | "title": "项目"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/i18n/locales/en/index.ts:
--------------------------------------------------------------------------------
1 | import translation from './translation.json';
2 |
3 | export default { translation } as const;
4 |
--------------------------------------------------------------------------------
/src/i18n/locales/en/translation.json:
--------------------------------------------------------------------------------
1 | {
2 | "tab": {
3 | "posts": "Posts",
4 | "snippets": "Snippets",
5 | "projects": "Projects"
6 | },
7 | "intro": {
8 | "title": "👋 Hi! I'm Harrie",
9 | "description": "A full-stack web developer, focuses on Node.js, Vue, React and other technologies",
10 | "link": "Take a Look"
11 | },
12 | "dateFormat": "MMM dd, yyyy",
13 | "comment": {
14 | "title": "Comments",
15 | "btn": "Click to Comment",
16 | "owner": "Author"
17 | },
18 | "projects": {
19 | "title": "Projects"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | import './i18n';
2 |
3 | import React from 'react';
4 | import { createRoot } from 'react-dom/client';
5 |
6 | import App from './App';
7 | import BaseStyles from './styles/BaseStyles';
8 |
9 | document.title = import.meta.env.VITE_APP_TITLE;
10 |
11 | const rootEl = document.getElementById('root')!;
12 | const root = createRoot(rootEl);
13 |
14 | root.render(
15 | <>
16 |
17 |
18 | >,
19 | );
20 |
--------------------------------------------------------------------------------
/src/models/ArticleModel.ts:
--------------------------------------------------------------------------------
1 | import { Issue } from '../services/github';
2 | import LabelModel from './LabelModel';
3 |
4 | export default class ArticleModel {
5 | private constructor(
6 | public id: number,
7 | public number: number,
8 | public title: string,
9 | public body: string,
10 | public comments: number,
11 | public labels: LabelModel[],
12 | public htmlUrl: string,
13 | public createdAt: string,
14 | public updatedAt: string
15 | ) {}
16 |
17 | static from(raw: Issue): ArticleModel {
18 | return new ArticleModel(
19 | raw.id,
20 | raw.number,
21 | raw.title,
22 | raw.body,
23 | raw.comments,
24 | raw.labels.map(LabelModel.from),
25 | raw.html_url,
26 | raw.created_at,
27 | raw.updated_at
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/models/CategoryModel.ts:
--------------------------------------------------------------------------------
1 | import { Milestone } from '../services/github';
2 |
3 | export default class CategoryModel {
4 | private constructor(
5 | public id: number,
6 | public number: number,
7 | public title: string,
8 | public description: string,
9 | public articles: number
10 | ) {}
11 |
12 | static from(raw: Milestone): CategoryModel {
13 | return new CategoryModel(
14 | raw.id,
15 | raw.number,
16 | raw.title,
17 | raw.description,
18 | raw.open_issues
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/models/CommentModel.ts:
--------------------------------------------------------------------------------
1 | import { Comment } from '../services/github';
2 | import UserModel from './UserModel';
3 |
4 | export default class CommentModel {
5 | private constructor(
6 | public id: number,
7 | public body: string,
8 | public htmlUrl: string,
9 | public authorAssociation: string,
10 | public createdAt: string,
11 | public updatedAt: string,
12 | public user: UserModel
13 | ) {}
14 |
15 | static from(raw: Comment): CommentModel {
16 | return new CommentModel(
17 | raw.id,
18 | raw.body,
19 | raw.html_url,
20 | raw.author_association,
21 | raw.created_at,
22 | raw.updated_at,
23 | UserModel.from(raw.user)
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/models/LabelModel.ts:
--------------------------------------------------------------------------------
1 | import { Label } from '../services/github';
2 |
3 | export default class LabelModel {
4 | private constructor(
5 | public id: number,
6 | public name: string,
7 | public color: string
8 | ) {}
9 |
10 | static from(raw: Label): LabelModel {
11 | return new LabelModel(raw.id, raw.name, `#${raw.color}`);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/models/ProjectModel.ts:
--------------------------------------------------------------------------------
1 | import { Repository } from '../services/github';
2 | import UserModel from './UserModel';
3 |
4 | export default class ProjectModel {
5 | private constructor(
6 | public id: number,
7 | public owner: UserModel,
8 | public fullName: string,
9 | public name: string,
10 | public htmlUrl: string,
11 | public description: string,
12 | public language: string,
13 | public forksCount: number,
14 | public stargazersCount: number,
15 | public openIssuesCount: number,
16 | public archived: boolean,
17 | public disabled: boolean,
18 | public pushedAt: string,
19 | public createdAt: string,
20 | public updatedAt: string
21 | ) {}
22 |
23 | static from(raw: Repository): ProjectModel {
24 | return new ProjectModel(
25 | raw.id,
26 | UserModel.from(raw.owner),
27 | raw.full_name,
28 | raw.name,
29 | raw.html_url,
30 | raw.description,
31 | raw.language,
32 | raw.forks_count,
33 | raw.stargazers_count,
34 | raw.open_issues_count,
35 | raw.archived,
36 | raw.disabled,
37 | raw.pushed_at,
38 | raw.created_at,
39 | raw.updated_at
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/models/UserModel.ts:
--------------------------------------------------------------------------------
1 | import { User } from '../services/github';
2 |
3 | export default class UserModel {
4 | private constructor(
5 | public id: number,
6 | public login: string,
7 | public avatarUrl: string,
8 | public htmlUrl: string
9 | ) {}
10 |
11 | static from(raw: User): UserModel {
12 | return new UserModel(raw.id, raw.login, raw.avatar_url, raw.html_url);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/services/github.ts:
--------------------------------------------------------------------------------
1 | export enum Sort {
2 | Created = 'created',
3 | Updated = 'updated',
4 | Comments = 'comments',
5 | }
6 |
7 | export enum State {
8 | All = 'all',
9 | Open = 'open',
10 | Closed = 'closed',
11 | }
12 |
13 | export enum Direction {
14 | Asc = 'asc',
15 | Desc = 'desc',
16 | }
17 |
18 | export enum RepositorySort {
19 | Created = 'created',
20 | Updated = 'updated',
21 | Pushed = 'pushed',
22 | FullName = 'full_name',
23 | }
24 |
25 | export enum RepositoryType {
26 | All = 'all',
27 | Owner = 'owner',
28 | Member = 'member',
29 | }
30 |
31 | export type ListMilestonesOptions = {
32 | state?: State;
33 | sort?: Sort;
34 | direction?: Direction;
35 | page?: number;
36 | pageSize?: number;
37 | };
38 |
39 | export type ListIssuesOptions = {
40 | milestone: number;
41 | labels?: string;
42 | state?: State;
43 | sort?: Sort;
44 | direction?: Direction;
45 | page?: number;
46 | pageSize?: number;
47 | };
48 |
49 | export type ListCommentsOptions = {
50 | issue: number;
51 | sort?: Sort;
52 | direction?: Direction;
53 | page?: number;
54 | pageSize?: number;
55 | };
56 |
57 | export type ListRepositoriesOptions = {
58 | type?: RepositoryType;
59 | sort?: RepositorySort;
60 | direction?: Direction;
61 | page?: number;
62 | pageSize?: number;
63 | };
64 |
65 | export type User = {
66 | id: number;
67 | login: string;
68 | avatar_url: string;
69 | html_url: string;
70 | };
71 |
72 | export type Milestone = {
73 | id: number;
74 | number: number;
75 | title: string;
76 | description: string;
77 | open_issues: number;
78 | };
79 |
80 | export type Issue = {
81 | id: number;
82 | number: number;
83 | title: string;
84 | state: State;
85 | body: string;
86 | comments: number;
87 | user: User;
88 | milestone: Milestone;
89 | labels: Label[];
90 | html_url: string;
91 | created_at: string;
92 | updated_at: string;
93 | };
94 |
95 | export type Label = {
96 | id: number;
97 | name: string;
98 | description: string;
99 | color: string;
100 | };
101 |
102 | export type Comment = {
103 | id: number;
104 | body: string;
105 | html_url: string;
106 | author_association: string;
107 | created_at: string;
108 | updated_at: string;
109 | user: User;
110 | };
111 |
112 | export type Repository = {
113 | id: number;
114 | owner: User;
115 | full_name: string;
116 | name: string;
117 | html_url: string;
118 | description: string;
119 | language: string;
120 | forks_count: number;
121 | stargazers_count: number;
122 | open_issues_count: number;
123 | archived: boolean;
124 | disabled: boolean;
125 | pushed_at: string;
126 | created_at: string;
127 | updated_at: string;
128 | };
129 |
130 | function toQuery(raw: Record) {
131 | const params = new URLSearchParams();
132 |
133 | Object.keys(raw).forEach((key) => {
134 | if (raw[key]) params.append(key, String(raw[key]));
135 | });
136 |
137 | return `?${params.toString()}`;
138 | }
139 |
140 | function hasBody(method: string) {
141 | return ['POST', 'PUT', 'PATCH'].includes(method);
142 | }
143 |
144 | class Github {
145 | private apiBase = 'https://api.github.com';
146 |
147 | constructor(private token: string, private owner: string, private repo: string) {}
148 |
149 | private async request(method: string, url: string, data?: Record) {
150 | let query = '';
151 | let body = data;
152 |
153 | if (data && !hasBody(method)) {
154 | query = toQuery(data);
155 | body = undefined;
156 | }
157 |
158 | const response = await fetch([this.apiBase, url, query].join(''), {
159 | method,
160 | headers: {
161 | 'Content-Type': 'application/json;charset=UTF-8',
162 | Accept: 'application/vnd.github.v3+json',
163 | Authorization: `token ${this.token}`,
164 | },
165 | body: body ? JSON.stringify(body) : undefined,
166 | });
167 |
168 | return response.json();
169 | }
170 |
171 | public async listMilestones(options: ListMilestonesOptions = {}): Promise {
172 | const { state, sort, direction, page, pageSize } = options;
173 | const query = { state, sort, direction, page, per_page: pageSize };
174 |
175 | return this.request('GET', `/repos/${this.owner}/${this.repo}/milestones`, query);
176 | }
177 |
178 | public async listIssues(options: ListIssuesOptions): Promise {
179 | const { milestone, labels, state, sort, direction, page, pageSize } = options;
180 |
181 | const query = {
182 | milestone,
183 | labels,
184 | state,
185 | sort,
186 | direction,
187 | page,
188 | per_page: pageSize,
189 | creator: this.owner,
190 | };
191 |
192 | return this.request('GET', `/repos/${this.owner}/${this.repo}/issues`, query);
193 | }
194 |
195 | public getIssue(issue: number): Promise {
196 | return this.request('GET', `/repos/${this.owner}/${this.repo}/issues/${issue}`);
197 | }
198 |
199 | public listComments(options: ListCommentsOptions): Promise {
200 | const { issue, sort, direction, page, pageSize } = options;
201 | const query = { sort, direction, page, per_page: pageSize };
202 |
203 | return this.request('GET', `/repos/${this.owner}/${this.repo}/issues/${issue}/comments`, query);
204 | }
205 |
206 | public listRepositories(options: ListRepositoriesOptions): Promise {
207 | const { type, sort, direction, page, pageSize } = options;
208 | const query = { type, sort, direction, page, per_page: pageSize };
209 | return this.request('GET', `/users/${this.owner}/repos`, query);
210 | }
211 | }
212 |
213 | export default new Github(
214 | import.meta.env.VITE_GITHUB_ACCESS_TOKEN_PART1 + import.meta.env.VITE_GITHUB_ACCESS_TOKEN_PART2,
215 | import.meta.env.VITE_GITHUB_OWNER,
216 | import.meta.env.VITE_GITHUB_REPO,
217 | );
218 |
--------------------------------------------------------------------------------
/src/styles/BaseStyles.tsx:
--------------------------------------------------------------------------------
1 | import { Global, css } from '@emotion/react';
2 | import React from 'react';
3 | import tw, { GlobalStyles } from 'twin.macro';
4 |
5 | const customStyles = css`
6 | @import url(https://cdn.jsdelivr.net/gh/tonsky/FiraCode@5.2/distr/fira_code.css);
7 |
8 | body {
9 | font-family: 'Fira Code VF', 'Segoe UI', 'Consolas', 'monospace', 'Microsoft YaHei';
10 | font-variant-ligatures: normal;
11 | background-size: 32px 32px;
12 | background-image: radial-gradient(rgba(59, 130, 246, 0.2) 1px, rgba(59, 130, 246, 0) 0px);
13 | ${tw`overflow-y-scroll antialiased`}
14 | ${tw`bg-slate-50 text-slate-900`}
15 | ${tw`dark:bg-black dark:text-slate-400`}
16 | }
17 |
18 | *::-webkit-scrollbar {
19 | ${tw`w-2 h-2`}
20 | }
21 |
22 | *::-webkit-scrollbar-thumb {
23 | ${tw`bg-slate-200 dark:bg-slate-700`}
24 | }
25 | `;
26 |
27 | function BaseStyles() {
28 | return (
29 | <>
30 |
31 |
32 | >
33 | );
34 | }
35 |
36 | export default BaseStyles;
37 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | import Prism from 'prismjs';
2 |
3 | export type AnyFunction = (...args: never[]) => unknown;
4 |
5 | export function debounce(fn: T, ms: number): T {
6 | let timer: ReturnType | undefined;
7 |
8 | const handler = (...args: never[]) => {
9 | if (timer) clearTimeout(timer);
10 | timer = setTimeout(() => fn(...args), ms);
11 | };
12 |
13 | return handler as T;
14 | }
15 |
16 | export function clamp(value: number, min: number, max: number): number {
17 | return Math.min(Math.max(value, min), max);
18 | }
19 |
20 | export function ensureArray(target: T | T[]): T[] {
21 | if (Array.isArray(target)) return target;
22 | return target === undefined ? [] : [target];
23 | }
24 |
25 | export function createQueryURL(
26 | raw: Record
27 | ) {
28 | const params: Record = {};
29 |
30 | Object.entries(raw).forEach(([key, value]) => {
31 | if (value === undefined) return;
32 | params[key] = typeof value === 'number' ? value.toString() : value;
33 | });
34 |
35 | return `?${new URLSearchParams(params)}`;
36 | }
37 |
38 | export function highlight(code: string, lang: string) {
39 | const grammar = Prism.languages[lang] ?? Prism.languages.plain;
40 | return Prism.highlight(code, grammar, lang);
41 | }
42 |
43 | export async function loadThemeStyles(id: string, theme: string) {
44 | const existed = document.getElementById(id);
45 | if (existed) existed.remove();
46 |
47 | const style = document.createElement('style');
48 | style.setAttribute('id', id);
49 | style.textContent = theme;
50 | document.head.appendChild(style);
51 | }
52 |
--------------------------------------------------------------------------------
/src/views/Article.tsx:
--------------------------------------------------------------------------------
1 | import { format } from 'date-fns';
2 | import React, { memo, useCallback, useEffect, useMemo, useState } from 'react';
3 | import { useTranslation } from 'react-i18next';
4 | import { useNavigate, useParams } from 'react-router-dom';
5 | import tw from 'twin.macro';
6 | import IconComments from '~icons/ri/chat-2-line';
7 |
8 | import CommentItem from '../components/CommentItem';
9 | import CommentSkeleton from '../components/CommentSkeleton';
10 | import LabelItem from '../components/LabelItem';
11 | import MarkdownHtml from '../components/MarkdownHtml';
12 | import Pagination from '../components/Pagination';
13 | import Skeleton from '../components/Skeleton';
14 | import useHandling from '../hooks/use-handling';
15 | import useQuery from '../hooks/use-query';
16 | import ArticleModel from '../models/ArticleModel';
17 | import CommentModel from '../models/CommentModel';
18 | import github from '../services/github';
19 | import { createQueryURL } from '../utils';
20 |
21 | const Wrapper = tw.article`mx-auto w-full max-w-screen-lg px-8 py-12`;
22 |
23 | const Title = tw.h2`text-2xl text-slate-700`;
24 |
25 | const Into = tw.div`mt-4 mb-8 space-x-4 flex flex-wrap content-center text-sm text-slate-400`;
26 |
27 | const ParagraphSkeleton = tw.ul`mt-8 space-y-4`;
28 |
29 | const CommentTitle = tw.h2`text-2xl text-slate-700`;
30 |
31 | const CommentButton = tw.a`
32 | mt-4 block w-full h-10
33 | leading-10 text-slate-400 text-center
34 | border border-gray-400 rounded-sm outline-none
35 | cursor-pointer
36 | `;
37 |
38 | const Foot = tw.div`mt-8 flex justify-center`;
39 |
40 | function useArticle() {
41 | const { id } = useParams();
42 | const [article, setArticle] = useState();
43 |
44 | const [loading, load] = useHandling(
45 | useCallback(async () => {
46 | const result = await github.getIssue(parseInt(id!, 10));
47 | setArticle(ArticleModel.from(result));
48 | }, [id]),
49 | true,
50 | );
51 |
52 | useEffect(() => {
53 | load();
54 | }, [id]);
55 |
56 | return [loading, article] as const;
57 | }
58 |
59 | function useCommentsQuery() {
60 | const { id } = useParams();
61 | const { page } = useQuery();
62 |
63 | return useMemo(
64 | () => ({
65 | issue: parseInt(id!, 10),
66 | page: parseInt(page ?? '1', 10),
67 | pageSize: parseInt(import.meta.env.VITE_COMMENT_PAGE_SIZE, 10),
68 | }),
69 | [id, page],
70 | );
71 | }
72 |
73 | function useComments() {
74 | const query = useCommentsQuery();
75 | const [comments, setComments] = useState([]);
76 |
77 | const [loading, load] = useHandling(
78 | useCallback(async () => {
79 | const result = await github.listComments(query);
80 |
81 | setComments(result.map(CommentModel.from));
82 | }, [query]),
83 | true,
84 | );
85 |
86 | useEffect(() => {
87 | load();
88 | }, [query]);
89 |
90 | return [loading, comments, query] as const;
91 | }
92 |
93 | export default memo(function Article() {
94 | const navigate = useNavigate();
95 | const { t } = useTranslation();
96 | const [articleLoading, article] = useArticle();
97 | const [commentsLoading, comments, query] = useComments();
98 |
99 | const createdAt = useMemo(() => {
100 | return article ? format(new Date(article.createdAt), t('dateFormat')) : '';
101 | }, ['article']);
102 |
103 | const newCommentUrl = useMemo(() => {
104 | return article ? `${article.htmlUrl}#new_comment_field` : '';
105 | }, [article]);
106 |
107 | const getLabelLink = useCallback((label: string) => {
108 | return `../${createQueryURL({ label, page: 1 })}`;
109 | }, []);
110 |
111 | const onPageChange = useCallback((page: number) => {
112 | navigate(createQueryURL({ page }));
113 | }, []);
114 |
115 | return (
116 |
117 |
118 | {articleLoading && (
119 | <>
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | >
135 | )}
136 |
137 | {article && (
138 | <>
139 | {article.title}
140 |
141 | {createdAt}
142 |
143 | {article.labels.map((label) => (
144 |
145 | ))}
146 |
147 |
148 |
149 | {article.comments}
150 |
151 |
152 |
153 | >
154 | )}
155 |
156 |
157 |
158 | {t('comment.title')}
159 | {t('comment.btn')}
160 |
161 | {commentsLoading && (
162 |
163 | {Array.from({ length: 5 }).map((_, i) => (
164 |
165 | ))}
166 |
167 | )}
168 |
169 | {!!comments.length && (
170 |
171 | {comments.map((comment) => (
172 |
173 | ))}
174 |
175 | )}
176 |
177 |
178 |
184 |
185 |
186 |
187 | );
188 | });
189 |
--------------------------------------------------------------------------------
/src/views/Articles.tsx:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useEffect, useMemo, useState } from 'react';
2 | import { useTranslation } from 'react-i18next';
3 | import { useLocation, useNavigate } from 'react-router-dom';
4 | import tw from 'twin.macro';
5 |
6 | import ArticleItem from '../components/ArticleItem';
7 | import ArticleSkeleton from '../components/ArticleSkeleton';
8 | import Pagination from '../components/Pagination';
9 | import Skeleton from '../components/Skeleton';
10 | import useHandling from '../hooks/use-handling';
11 | import useQuery from '../hooks/use-query';
12 | import ArticleModel from '../models/ArticleModel';
13 | import CategoryModel from '../models/CategoryModel';
14 | import github from '../services/github';
15 | import { createQueryURL } from '../utils';
16 |
17 | const Wrapper = tw.main`mx-auto w-full max-w-screen-lg px-8 py-12`;
18 |
19 | const Title = tw.h2`text-2xl text-slate-600`;
20 |
21 | const List = tw.div`mt-8`;
22 |
23 | const Foot = tw.div`mt-8 flex justify-center`;
24 |
25 | export type ArticlesProps = {
26 | milestone: number;
27 | };
28 |
29 | function useArticlesQuery() {
30 | const { labels, page } = useQuery();
31 |
32 | return useMemo(
33 | () => ({
34 | labels: labels ?? undefined,
35 | page: parseInt(page ?? '1', 10),
36 | pageSize: parseInt(import.meta.env.VITE_ARTICLE_PAGE_SIZE, 10),
37 | }),
38 | [labels, page],
39 | );
40 | }
41 |
42 | export default function Articles(props: ArticlesProps) {
43 | const { t } = useTranslation();
44 | const navigate = useNavigate();
45 | const query = useArticlesQuery();
46 |
47 | const [category, setCategory] = useState();
48 | const [articles, setArticles] = useState([]);
49 | const total = category?.articles ?? 0;
50 |
51 | const [loadingArticles, loadArticles] = useHandling(
52 | useCallback(async () => {
53 | if (category?.number !== props.milestone) {
54 | const milestones = await github.listMilestones();
55 | const milestone = milestones.find((m) => m.number === props.milestone);
56 |
57 | if (!milestone) {
58 | navigate('/404');
59 | return;
60 | }
61 |
62 | setCategory(CategoryModel.from(milestone));
63 | }
64 |
65 | const list = await github.listIssues({
66 | milestone: props.milestone,
67 | ...query,
68 | });
69 |
70 | setArticles(list.map(ArticleModel.from));
71 | }, [props.milestone, query]),
72 | );
73 |
74 | useEffect(() => {
75 | loadArticles();
76 | }, [props.milestone, query]);
77 |
78 | const title = useMemo(() => {
79 | return category ? t(`tab.${category.title.toLowerCase()}` as any) : '';
80 | }, [category]);
81 |
82 | const location = useLocation();
83 | const getArticleLink = useCallback((id: number) => `${location.pathname}/${id}`, [location]);
84 |
85 | const getLabelLink = useCallback((labels: string) => {
86 | return createQueryURL({ labels, page: 1 });
87 | }, []);
88 |
89 | const onPageChange = useCallback(
90 | (page: number) => {
91 | navigate(createQueryURL({ page, labels: query.labels }));
92 | },
93 | [query.labels, props.milestone],
94 | );
95 |
96 | return (
97 |
98 |
99 | {title}
100 |
101 |
102 |
103 | {loadingArticles
104 | ? Array.from({ length: 8 }).map((_, i) => )
105 | : articles.map((article) => (
106 |
112 | ))}
113 |
114 |
115 |
116 |
122 |
123 |
124 | );
125 | }
126 |
--------------------------------------------------------------------------------
/src/views/Home.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { useTranslation } from 'react-i18next';
3 | import { Link } from 'react-router-dom';
4 | import tw from 'twin.macro';
5 | import IconArrowRight from '~icons/ri/arrow-right-line';
6 |
7 | import ShapeEffect from '../components/ShapeEffect/ShapeEffect';
8 |
9 | const Background = tw.div`absolute [z-index:0] top-0 left-0 w-full h-full [user-select:none] pointer-events-none opacity-50 blur-sm`;
10 |
11 | const Foreground = tw.div`absolute [z-index:2] top-0 left-0 w-full h-full [user-select:none] pointer-events-none`;
12 |
13 | const Wrapper = tw.main`px-8 py-20 w-full flex-1 flex flex-col justify-center`;
14 |
15 | const Center = tw.div`relative [z-index:1] mx-auto max-w-screen-lg text-center`;
16 |
17 | const Title = tw.h2`text-5xl text-slate-600 font-bold leading-10`;
18 |
19 | const Description = tw.p`mt-6 text-3xl text-slate-400`;
20 |
21 | const LinkButton = tw.button`
22 | mt-12 py-3 px-6 inline-flex items-center
23 | bg-blue-500 active:bg-blue-600 text-blue-50 text-center
24 | gap-4 hover:gap-8
25 | rounded-full outline-none transition-all
26 | `;
27 |
28 | export default function Home() {
29 | const { t } = useTranslation();
30 |
31 | return (
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | {t('intro.title')}
41 | {t('intro.description')}
42 |
43 |
44 | {t('intro.link')}
45 |
46 |
47 |
48 |
49 |
50 | );
51 | }
52 |
--------------------------------------------------------------------------------
/src/views/Main.tsx:
--------------------------------------------------------------------------------
1 | import mdDark from 'github-markdown-css/github-markdown-dark.css?raw';
2 | import mdLight from 'github-markdown-css/github-markdown-light.css?raw';
3 | import { changeLanguage } from 'i18next';
4 | import prismLight from 'prism-themes/themes/prism-vs.css?raw';
5 | import prismDark from 'prism-themes/themes/prism-vsc-dark-plus.css?raw';
6 | import React, { useCallback, useEffect } from 'react';
7 | import { useTranslation } from 'react-i18next';
8 | import { Link, NavLink, Outlet } from 'react-router-dom';
9 | import tw, { css, styled } from 'twin.macro';
10 | import IconPosts from '~icons/ri/article-line';
11 | import IconProjects from '~icons/ri/function-line';
12 | import IconGithub from '~icons/ri/github-line';
13 | import IconLanguage from '~icons/ri/global-line';
14 | import IconEmail from '~icons/ri/mail-line';
15 | import IconDark from '~icons/ri/moon-line';
16 | import IconSnippets from '~icons/ri/sticky-note-line';
17 | import IconLight from '~icons/ri/sun-line';
18 |
19 | import useDarkMode, { DarkModeValueContext } from '../hooks/use-dark-mode';
20 | import i18n from '../i18n';
21 | import { loadThemeStyles } from '../utils';
22 |
23 | const title = import.meta.env.VITE_TITLE;
24 | const email = import.meta.env.VITE_EMAIL;
25 | const githubUrl = import.meta.env.VITE_GITHUB_URL;
26 |
27 | const Wrapper = styled.div`
28 | ${tw`relative pb-16 min-h-screen flex flex-col`}
29 | `;
30 |
31 | const Header = tw.header`h-20 w-full`;
32 |
33 | const HeaderCenter = tw.div`mx-auto max-w-screen-lg flex px-8 items-center h-full text-slate-500 font-semibold`;
34 |
35 | const TitleLink = styled(Link)`
36 | ${tw`text-lg`}
37 | `;
38 |
39 | const Title = tw.span`mx-0.5 text-blue-500`;
40 |
41 | const Nav = tw.nav`grid gap-3 lg:gap-6 grid-flow-col ml-auto leading-5`;
42 |
43 | const navItemStyle = tw`opacity-60 cursor-pointer hover:(opacity-100 text-blue-500)`;
44 |
45 | const NavItem = styled.a`
46 | ${navItemStyle}
47 | `;
48 |
49 | const NavLinkItem = styled(NavLink)`
50 | ${navItemStyle}
51 |
52 | &.active {
53 | ${tw`opacity-100 text-blue-500`}
54 | }
55 | `;
56 |
57 | const Divider = tw.div`w-[1px] h-full bg-gray-200 dark:bg-gray-800`;
58 |
59 | const Footer = tw.footer`
60 | absolute bottom-4 left-0
61 | space-x-2 w-full
62 | text-sm text-center text-slate-300
63 | select-none
64 | `;
65 |
66 | const FooterCenter = tw.div`mx-auto max-w-screen-lg dark:text-slate-800`;
67 |
68 | export default function Main() {
69 | const { t } = useTranslation();
70 |
71 | const [darkModeEnabled, setDarkModelEnabled] = useDarkMode();
72 |
73 | useEffect(() => {
74 | loadThemeStyles('prism-theme', darkModeEnabled ? prismDark : prismLight);
75 | loadThemeStyles('markdown-theme', darkModeEnabled ? mdDark : mdLight);
76 | }, [darkModeEnabled]);
77 |
78 | const onToggleDarkMode = useCallback(() => {
79 | setDarkModelEnabled(!darkModeEnabled);
80 | }, [darkModeEnabled]);
81 |
82 | const onToggleLanguage = useCallback(() => {
83 | changeLanguage(i18n.language === 'cn' ? 'en' : 'cn');
84 | localStorage.setItem('language', i18n.language);
85 | }, []);
86 |
87 | return (
88 |
89 |
90 |
91 |
92 |
93 | ://
94 | {title}
95 |
96 |
97 |
126 |
127 |
128 |
129 |
130 |
131 |
139 |
140 |
141 | );
142 | }
143 |
--------------------------------------------------------------------------------
/src/views/Projects.tsx:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useEffect, useState } from 'react';
2 | import { useTranslation } from 'react-i18next';
3 | import tw from 'twin.macro';
4 |
5 | import ProjectItem from '../components/ProjectItem';
6 | import ProjectSkeleton from '../components/ProjectSkeleton';
7 | import useHandling from '../hooks/use-handling';
8 | import ProjectModel from '../models/ProjectModel';
9 | import github, { Direction, RepositorySort, RepositoryType } from '../services/github';
10 |
11 | const Wrapper = tw.main`mx-auto w-full max-w-screen-lg px-8 py-12`;
12 |
13 | const Title = tw.h2`text-2xl text-slate-700`;
14 |
15 | const List = tw.div`mt-8 grid grid-cols-1 lg:grid-cols-2 gap-2`;
16 |
17 | export default function Projects() {
18 | const { t } = useTranslation();
19 | const [projects, setProjects] = useState([]);
20 |
21 | const [loadingProjects, loadProject] = useHandling(
22 | useCallback(async () => {
23 | const list = await github.listRepositories({
24 | type: RepositoryType.All,
25 | sort: RepositorySort.Pushed,
26 | direction: Direction.Desc,
27 | page: 1,
28 | pageSize: 50,
29 | });
30 |
31 | setProjects(
32 | list
33 | .map(ProjectModel.from)
34 | .filter((p) => p.stargazersCount > 0 && !p.archived && !p.disabled)
35 | .sort((a, b) => b.stargazersCount - a.stargazersCount),
36 | );
37 | }, []),
38 | true,
39 | );
40 |
41 | useEffect(() => {
42 | loadProject();
43 | }, []);
44 |
45 | return (
46 |
47 | {t('projects.title')}
48 |
49 | {loadingProjects && (
50 |
51 | {Array.from({ length: 10 }).map((_, i) => (
52 |
53 | ))}
54 |
55 | )}
56 |
57 | {!!projects.length && (
58 |
59 | {projects.map((project) => (
60 |
61 | ))}
62 |
63 | )}
64 |
65 | );
66 | }
67 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | darkMode: 'class',
3 | content: [],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | };
9 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx",
18 | "jsxImportSource": "@emotion/react",
19 | "types": ["unplugin-icons/types/react"]
20 | },
21 | "include": ["src", "types"],
22 | "references": [{ "path": "./tsconfig.node.json" }]
23 | }
24 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "esnext",
5 | "moduleResolution": "node"
6 | },
7 | "include": ["vite.config.ts"]
8 | }
9 |
--------------------------------------------------------------------------------
/types/env.d.ts:
--------------------------------------------------------------------------------
1 | interface ImportMetaEnv {
2 | VITE_APP_TITLE: string;
3 | VITE_GITHUB_URL: string;
4 | VITE_GITHUB_ACCESS_TOKEN_PART1: string;
5 | VITE_GITHUB_ACCESS_TOKEN_PART2: string;
6 | VITE_GITHUB_OWNER: string;
7 | VITE_GITHUB_REPO: string;
8 | VITE_GITHUB_MILESTONE_POSTS: string;
9 | VITE_GITHUB_MILESTONE_SNIPPETS: string;
10 | VITE_ARTICLE_PAGE_SIZE: string;
11 | VITE_COMMENT_PAGE_SIZE: string;
12 | }
13 |
--------------------------------------------------------------------------------
/types/react-i18next.d.ts:
--------------------------------------------------------------------------------
1 | import { defaultNS, resources } from '../src/i18n';
2 |
3 | declare module 'react-i18next' {
4 | interface CustomTypeOptions {
5 | defaultNS: typeof defaultNS;
6 | resources: typeof resources['cn'];
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/types/twin.d.ts:
--------------------------------------------------------------------------------
1 | import 'twin.macro';
2 |
3 | import { css as cssImport, DOMAttributes } from '@emotion/react';
4 | import { CSSInterpolation } from '@emotion/serialize';
5 | import styledImport from '@emotion/styled';
6 |
7 | declare module 'twin.macro' {
8 | // The styled and css imports
9 | export const styled: typeof styledImport;
10 | export const css: typeof cssImport;
11 | }
12 |
13 | declare module 'react' {
14 | // The css prop
15 | export interface HTMLAttributes extends DOMAttributes {
16 | css?: CSSInterpolation;
17 | tw?: string;
18 | }
19 | // The inline svg css prop
20 | interface SVGProps extends SVGProps {
21 | css?: CSSInterpolation;
22 | tw?: string;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/types/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import react from '@vitejs/plugin-react';
2 | import Icons from 'unplugin-icons/vite';
3 | import { defineConfig } from 'vite';
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | define: {
8 | // https://github.com/codesandbox/sandpack/pull/787#issuecomment-1450353368
9 | 'process.env.SANDPACK_BARE_COMPONENTS': 'false',
10 | },
11 | optimizeDeps: {
12 | esbuildOptions: {
13 | target: 'es2020',
14 | },
15 | },
16 | plugins: [
17 | react({
18 | babel: {
19 | plugins: [
20 | 'babel-plugin-macros',
21 | [
22 | '@emotion/babel-plugin-jsx-pragmatic',
23 | {
24 | export: 'jsx',
25 | import: '__cssprop',
26 | module: '@emotion/react',
27 | },
28 | ],
29 | ['@babel/plugin-transform-react-jsx', { pragma: '__cssprop' }, 'twin.macro'],
30 | ],
31 | },
32 | }),
33 | Icons({
34 | compiler: 'jsx',
35 | jsx: 'react',
36 | scale: 1.2,
37 | }),
38 | ],
39 | });
40 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@ampproject/remapping@^2.2.0":
6 | version "2.2.0"
7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
9 | dependencies:
10 | "@jridgewell/gen-mapping" "^0.1.0"
11 | "@jridgewell/trace-mapping" "^0.3.9"
12 |
13 | "@antfu/install-pkg@^0.1.1":
14 | version "0.1.1"
15 | resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-0.1.1.tgz#157bb04f0de8100b9e4c01734db1a6c77e98bbb5"
16 | integrity sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==
17 | dependencies:
18 | execa "^5.1.1"
19 | find-up "^5.0.0"
20 |
21 | "@antfu/utils@^0.7.2":
22 | version "0.7.2"
23 | resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.2.tgz#3bb6f37a6b188056fe9e2f363b6aa735ed65d7ca"
24 | integrity sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==
25 |
26 | "@babel/code-frame@^7.0.0":
27 | version "7.16.7"
28 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
29 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
30 | dependencies:
31 | "@babel/highlight" "^7.16.7"
32 |
33 | "@babel/code-frame@^7.18.6":
34 | version "7.18.6"
35 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
36 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
37 | dependencies:
38 | "@babel/highlight" "^7.18.6"
39 |
40 | "@babel/compat-data@^7.20.5":
41 | version "7.21.0"
42 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298"
43 | integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==
44 |
45 | "@babel/core@^7.17.7", "@babel/core@^7.19.6", "@babel/core@^7.20.12":
46 | version "7.21.0"
47 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13"
48 | integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==
49 | dependencies:
50 | "@ampproject/remapping" "^2.2.0"
51 | "@babel/code-frame" "^7.18.6"
52 | "@babel/generator" "^7.21.0"
53 | "@babel/helper-compilation-targets" "^7.20.7"
54 | "@babel/helper-module-transforms" "^7.21.0"
55 | "@babel/helpers" "^7.21.0"
56 | "@babel/parser" "^7.21.0"
57 | "@babel/template" "^7.20.7"
58 | "@babel/traverse" "^7.21.0"
59 | "@babel/types" "^7.21.0"
60 | convert-source-map "^1.7.0"
61 | debug "^4.1.0"
62 | gensync "^1.0.0-beta.2"
63 | json5 "^2.2.2"
64 | semver "^6.3.0"
65 |
66 | "@babel/generator@^7.17.7", "@babel/generator@^7.21.0", "@babel/generator@^7.21.1":
67 | version "7.21.1"
68 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd"
69 | integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==
70 | dependencies:
71 | "@babel/types" "^7.21.0"
72 | "@jridgewell/gen-mapping" "^0.3.2"
73 | "@jridgewell/trace-mapping" "^0.3.17"
74 | jsesc "^2.5.1"
75 |
76 | "@babel/helper-annotate-as-pure@^7.18.6":
77 | version "7.18.6"
78 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb"
79 | integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==
80 | dependencies:
81 | "@babel/types" "^7.18.6"
82 |
83 | "@babel/helper-compilation-targets@^7.20.7":
84 | version "7.20.7"
85 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb"
86 | integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==
87 | dependencies:
88 | "@babel/compat-data" "^7.20.5"
89 | "@babel/helper-validator-option" "^7.18.6"
90 | browserslist "^4.21.3"
91 | lru-cache "^5.1.1"
92 | semver "^6.3.0"
93 |
94 | "@babel/helper-environment-visitor@^7.18.9":
95 | version "7.18.9"
96 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
97 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
98 |
99 | "@babel/helper-function-name@^7.21.0":
100 | version "7.21.0"
101 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4"
102 | integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
103 | dependencies:
104 | "@babel/template" "^7.20.7"
105 | "@babel/types" "^7.21.0"
106 |
107 | "@babel/helper-hoist-variables@^7.18.6":
108 | version "7.18.6"
109 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
110 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
111 | dependencies:
112 | "@babel/types" "^7.18.6"
113 |
114 | "@babel/helper-module-imports@^7.16.7":
115 | version "7.16.7"
116 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
117 | integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
118 | dependencies:
119 | "@babel/types" "^7.16.7"
120 |
121 | "@babel/helper-module-imports@^7.18.6":
122 | version "7.18.6"
123 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
124 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
125 | dependencies:
126 | "@babel/types" "^7.18.6"
127 |
128 | "@babel/helper-module-transforms@^7.21.0":
129 | version "7.21.0"
130 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.0.tgz#89a8f86ad748870e3d024e470b2e8405e869db67"
131 | integrity sha512-eD/JQ21IG2i1FraJnTMbUarAUkA7G988ofehG5MDCRXaUU91rEBJuCeSoou2Sk1y4RbLYXzqEg1QLwEmRU4qcQ==
132 | dependencies:
133 | "@babel/helper-environment-visitor" "^7.18.9"
134 | "@babel/helper-module-imports" "^7.18.6"
135 | "@babel/helper-simple-access" "^7.20.2"
136 | "@babel/helper-split-export-declaration" "^7.18.6"
137 | "@babel/helper-validator-identifier" "^7.19.1"
138 | "@babel/template" "^7.20.7"
139 | "@babel/traverse" "^7.21.0"
140 | "@babel/types" "^7.21.0"
141 |
142 | "@babel/helper-plugin-utils@^7.18.6":
143 | version "7.18.6"
144 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d"
145 | integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==
146 |
147 | "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2":
148 | version "7.20.2"
149 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
150 | integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
151 |
152 | "@babel/helper-simple-access@^7.20.2":
153 | version "7.20.2"
154 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
155 | integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
156 | dependencies:
157 | "@babel/types" "^7.20.2"
158 |
159 | "@babel/helper-split-export-declaration@^7.18.6":
160 | version "7.18.6"
161 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
162 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
163 | dependencies:
164 | "@babel/types" "^7.18.6"
165 |
166 | "@babel/helper-string-parser@^7.19.4":
167 | version "7.19.4"
168 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
169 | integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
170 |
171 | "@babel/helper-validator-identifier@^7.16.7":
172 | version "7.16.7"
173 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
174 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
175 |
176 | "@babel/helper-validator-identifier@^7.18.6":
177 | version "7.18.6"
178 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
179 | integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==
180 |
181 | "@babel/helper-validator-identifier@^7.19.1":
182 | version "7.19.1"
183 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
184 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
185 |
186 | "@babel/helper-validator-option@^7.18.6":
187 | version "7.18.6"
188 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
189 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
190 |
191 | "@babel/helpers@^7.21.0":
192 | version "7.21.0"
193 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e"
194 | integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==
195 | dependencies:
196 | "@babel/template" "^7.20.7"
197 | "@babel/traverse" "^7.21.0"
198 | "@babel/types" "^7.21.0"
199 |
200 | "@babel/highlight@^7.16.7":
201 | version "7.17.9"
202 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
203 | integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
204 | dependencies:
205 | "@babel/helper-validator-identifier" "^7.16.7"
206 | chalk "^2.0.0"
207 | js-tokens "^4.0.0"
208 |
209 | "@babel/highlight@^7.18.6":
210 | version "7.18.6"
211 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
212 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
213 | dependencies:
214 | "@babel/helper-validator-identifier" "^7.18.6"
215 | chalk "^2.0.0"
216 | js-tokens "^4.0.0"
217 |
218 | "@babel/parser@^7.17.7", "@babel/parser@^7.21.2":
219 | version "7.21.2"
220 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3"
221 | integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==
222 |
223 | "@babel/parser@^7.20.7", "@babel/parser@^7.21.0":
224 | version "7.21.1"
225 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.1.tgz#a8f81ee2fe872af23faea4b17a08fcc869de7bcc"
226 | integrity sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==
227 |
228 | "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6":
229 | version "7.18.6"
230 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
231 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
232 | dependencies:
233 | "@babel/helper-plugin-utils" "^7.18.6"
234 |
235 | "@babel/plugin-transform-react-jsx-self@^7.18.6":
236 | version "7.21.0"
237 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54"
238 | integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==
239 | dependencies:
240 | "@babel/helper-plugin-utils" "^7.20.2"
241 |
242 | "@babel/plugin-transform-react-jsx-source@^7.19.6":
243 | version "7.19.6"
244 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86"
245 | integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==
246 | dependencies:
247 | "@babel/helper-plugin-utils" "^7.19.0"
248 |
249 | "@babel/plugin-transform-react-jsx@^7.21.0":
250 | version "7.21.0"
251 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2"
252 | integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==
253 | dependencies:
254 | "@babel/helper-annotate-as-pure" "^7.18.6"
255 | "@babel/helper-module-imports" "^7.18.6"
256 | "@babel/helper-plugin-utils" "^7.20.2"
257 | "@babel/plugin-syntax-jsx" "^7.18.6"
258 | "@babel/types" "^7.21.0"
259 |
260 | "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
261 | version "7.17.9"
262 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
263 | integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
264 | dependencies:
265 | regenerator-runtime "^0.13.4"
266 |
267 | "@babel/runtime@^7.18.3":
268 | version "7.18.6"
269 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
270 | integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
271 | dependencies:
272 | regenerator-runtime "^0.13.4"
273 |
274 | "@babel/runtime@^7.20.6":
275 | version "7.21.0"
276 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
277 | integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
278 | dependencies:
279 | regenerator-runtime "^0.13.11"
280 |
281 | "@babel/template@^7.18.10", "@babel/template@^7.20.7":
282 | version "7.20.7"
283 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
284 | integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
285 | dependencies:
286 | "@babel/code-frame" "^7.18.6"
287 | "@babel/parser" "^7.20.7"
288 | "@babel/types" "^7.20.7"
289 |
290 | "@babel/traverse@^7.17.3":
291 | version "7.21.2"
292 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75"
293 | integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==
294 | dependencies:
295 | "@babel/code-frame" "^7.18.6"
296 | "@babel/generator" "^7.21.1"
297 | "@babel/helper-environment-visitor" "^7.18.9"
298 | "@babel/helper-function-name" "^7.21.0"
299 | "@babel/helper-hoist-variables" "^7.18.6"
300 | "@babel/helper-split-export-declaration" "^7.18.6"
301 | "@babel/parser" "^7.21.2"
302 | "@babel/types" "^7.21.2"
303 | debug "^4.1.0"
304 | globals "^11.1.0"
305 |
306 | "@babel/traverse@^7.21.0":
307 | version "7.21.0"
308 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.0.tgz#0e1807abd5db98e6a19c204b80ed1e3f5bca0edc"
309 | integrity sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==
310 | dependencies:
311 | "@babel/code-frame" "^7.18.6"
312 | "@babel/generator" "^7.21.0"
313 | "@babel/helper-environment-visitor" "^7.18.9"
314 | "@babel/helper-function-name" "^7.21.0"
315 | "@babel/helper-hoist-variables" "^7.18.6"
316 | "@babel/helper-split-export-declaration" "^7.18.6"
317 | "@babel/parser" "^7.21.0"
318 | "@babel/types" "^7.21.0"
319 | debug "^4.1.0"
320 | globals "^11.1.0"
321 |
322 | "@babel/types@^7.16.7":
323 | version "7.17.0"
324 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
325 | integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
326 | dependencies:
327 | "@babel/helper-validator-identifier" "^7.16.7"
328 | to-fast-properties "^2.0.0"
329 |
330 | "@babel/types@^7.17.0", "@babel/types@^7.21.2":
331 | version "7.21.2"
332 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1"
333 | integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==
334 | dependencies:
335 | "@babel/helper-string-parser" "^7.19.4"
336 | "@babel/helper-validator-identifier" "^7.19.1"
337 | to-fast-properties "^2.0.0"
338 |
339 | "@babel/types@^7.18.6":
340 | version "7.18.7"
341 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.7.tgz#a4a2c910c15040ea52cdd1ddb1614a65c8041726"
342 | integrity sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==
343 | dependencies:
344 | "@babel/helper-validator-identifier" "^7.18.6"
345 | to-fast-properties "^2.0.0"
346 |
347 | "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0":
348 | version "7.21.0"
349 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.0.tgz#1da00d89c2f18b226c9207d96edbeb79316a1819"
350 | integrity sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==
351 | dependencies:
352 | "@babel/helper-string-parser" "^7.19.4"
353 | "@babel/helper-validator-identifier" "^7.19.1"
354 | to-fast-properties "^2.0.0"
355 |
356 | "@code-hike/classer@^0.0.0-aa6efee":
357 | version "0.0.0-e48fa74"
358 | resolved "https://registry.yarnpkg.com/@code-hike/classer/-/classer-0.0.0-e48fa74.tgz#17243ca84d5af303c51e62b378e8db65e01cd3f4"
359 | integrity sha512-CyPYvfl4K5Hp9uyhLhUemul56eiGOF0FNXh5ALzzK9VNhRmRmj1O0mKtLDpoccI8W90r9kQES/nW2FC8jVVieg==
360 |
361 | "@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.4.0":
362 | version "6.4.2"
363 | resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.4.2.tgz#938b25223bd21f97b2a6d85474643355f98b505b"
364 | integrity sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ==
365 | dependencies:
366 | "@codemirror/language" "^6.0.0"
367 | "@codemirror/state" "^6.0.0"
368 | "@codemirror/view" "^6.6.0"
369 | "@lezer/common" "^1.0.0"
370 |
371 | "@codemirror/commands@^6.1.3":
372 | version "6.2.1"
373 | resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.2.1.tgz#ab5e979ad1458bbe395bf69ac601f461ac73cf08"
374 | integrity sha512-FFiNKGuHA5O8uC6IJE5apI5rT9gyjlw4whqy4vlcX0wE/myxL6P1s0upwDhY4HtMWLOwzwsp0ap3bjdQhvfDOA==
375 | dependencies:
376 | "@codemirror/language" "^6.0.0"
377 | "@codemirror/state" "^6.2.0"
378 | "@codemirror/view" "^6.0.0"
379 | "@lezer/common" "^1.0.0"
380 |
381 | "@codemirror/lang-css@^6.0.0", "@codemirror/lang-css@^6.0.1":
382 | version "6.0.2"
383 | resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.0.2.tgz#b286d0226755a751f60599e1e2969d351aebbd4c"
384 | integrity sha512-4V4zmUOl2Glx0GWw0HiO1oGD4zvMlIQ3zx5hXOE6ipCjhohig2bhWRAasrZylH9pRNTcl1VMa59Lsl8lZWlTzw==
385 | dependencies:
386 | "@codemirror/autocomplete" "^6.0.0"
387 | "@codemirror/language" "^6.0.0"
388 | "@codemirror/state" "^6.0.0"
389 | "@lezer/css" "^1.0.0"
390 |
391 | "@codemirror/lang-html@^6.4.0":
392 | version "6.4.2"
393 | resolved "https://registry.yarnpkg.com/@codemirror/lang-html/-/lang-html-6.4.2.tgz#3c7117e45bae009bc7bc08eef8a79b5d05930d83"
394 | integrity sha512-bqCBASkteKySwtIbiV/WCtGnn/khLRbbiV5TE+d9S9eQJD7BA4c5dTRm2b3bVmSpilff5EYxvB4PQaZzM/7cNw==
395 | dependencies:
396 | "@codemirror/autocomplete" "^6.0.0"
397 | "@codemirror/lang-css" "^6.0.0"
398 | "@codemirror/lang-javascript" "^6.0.0"
399 | "@codemirror/language" "^6.4.0"
400 | "@codemirror/state" "^6.0.0"
401 | "@codemirror/view" "^6.2.2"
402 | "@lezer/common" "^1.0.0"
403 | "@lezer/css" "^1.1.0"
404 | "@lezer/html" "^1.3.0"
405 |
406 | "@codemirror/lang-javascript@^6.0.0", "@codemirror/lang-javascript@^6.1.2":
407 | version "6.1.4"
408 | resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.1.4.tgz#8a41f4d213e1143b4eef6f65f8b77b349aaf894c"
409 | integrity sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A==
410 | dependencies:
411 | "@codemirror/autocomplete" "^6.0.0"
412 | "@codemirror/language" "^6.6.0"
413 | "@codemirror/lint" "^6.0.0"
414 | "@codemirror/state" "^6.0.0"
415 | "@codemirror/view" "^6.0.0"
416 | "@lezer/common" "^1.0.0"
417 | "@lezer/javascript" "^1.0.0"
418 |
419 | "@codemirror/language@^6.0.0", "@codemirror/language@^6.3.2", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0":
420 | version "6.6.0"
421 | resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.6.0.tgz#2204407174a38a68053715c19e28ad61f491779f"
422 | integrity sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==
423 | dependencies:
424 | "@codemirror/state" "^6.0.0"
425 | "@codemirror/view" "^6.0.0"
426 | "@lezer/common" "^1.0.0"
427 | "@lezer/highlight" "^1.0.0"
428 | "@lezer/lr" "^1.0.0"
429 | style-mod "^4.0.0"
430 |
431 | "@codemirror/lint@^6.0.0":
432 | version "6.2.0"
433 | resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.2.0.tgz#25cdab7425fcda1b38a9d63f230f833c8b6b369f"
434 | integrity sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==
435 | dependencies:
436 | "@codemirror/state" "^6.0.0"
437 | "@codemirror/view" "^6.0.0"
438 | crelt "^1.0.5"
439 |
440 | "@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0":
441 | version "6.2.0"
442 | resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.2.0.tgz#a0fb08403ced8c2a68d1d0acee926bd20be922f2"
443 | integrity sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==
444 |
445 | "@codemirror/view@^6.0.0", "@codemirror/view@^6.2.2", "@codemirror/view@^6.6.0", "@codemirror/view@^6.7.1":
446 | version "6.9.1"
447 | resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.9.1.tgz#2ce4c528974b6172a5a4a738b7b0a0f04a4c1140"
448 | integrity sha512-bzfSjJn9dAADVpabLKWKNmMG4ibyTV2e3eOGowjElNPTdTkSbi6ixPYHm2u0ADcETfKsi2/R84Rkmi91dH9yEg==
449 | dependencies:
450 | "@codemirror/state" "^6.1.4"
451 | style-mod "^4.0.0"
452 | w3c-keyname "^2.2.4"
453 |
454 | "@codesandbox/nodebox@0.1.4":
455 | version "0.1.4"
456 | resolved "https://registry.yarnpkg.com/@codesandbox/nodebox/-/nodebox-0.1.4.tgz#1c9ed4caf6cda764500aec3d46b245e2e9b88ccc"
457 | integrity sha512-+MR7JibjGjTRDmyQbL8Mliej6wakQP7q99+wGL/nOzd0Q3s+YWGQfv0QpYKbdMClKUTFJGvwzwOeqHVTkpWNCQ==
458 | dependencies:
459 | outvariant "^1.3.0"
460 | strict-event-emitter "^0.4.3"
461 |
462 | "@codesandbox/sandpack-client@^2.0.26":
463 | version "2.0.26"
464 | resolved "https://registry.yarnpkg.com/@codesandbox/sandpack-client/-/sandpack-client-2.0.26.tgz#eaa8053cc7241a32ac91dea67796c3261caa20a8"
465 | integrity sha512-fVVGWfq72tV0Hu5jKo0rUnKP6tPnuDNtPM+HhvOpm12eeXAr7eImecdfSNZbnEcvR6onjXAyszoygI4xjFUJKg==
466 | dependencies:
467 | "@codesandbox/nodebox" "0.1.4"
468 | buffer "^6.0.3"
469 | dequal "^2.0.2"
470 | outvariant "1.3.0"
471 |
472 | "@codesandbox/sandpack-react@^2.0.26":
473 | version "2.0.26"
474 | resolved "https://registry.yarnpkg.com/@codesandbox/sandpack-react/-/sandpack-react-2.0.26.tgz#ceb69ad4998b8def161be5986966fe7a55de8810"
475 | integrity sha512-cFbTY+iOLKL8sqU0SQmLl52EDwZ2XKBMt+Bz7KZn+2+etfZ+UEuciBTb+g11ElGk+KcQ3Q6fp0OdcJT6FwPwcQ==
476 | dependencies:
477 | "@code-hike/classer" "^0.0.0-aa6efee"
478 | "@codemirror/autocomplete" "^6.4.0"
479 | "@codemirror/commands" "^6.1.3"
480 | "@codemirror/lang-css" "^6.0.1"
481 | "@codemirror/lang-html" "^6.4.0"
482 | "@codemirror/lang-javascript" "^6.1.2"
483 | "@codemirror/language" "^6.3.2"
484 | "@codemirror/state" "^6.2.0"
485 | "@codemirror/view" "^6.7.1"
486 | "@codesandbox/sandpack-client" "^2.0.26"
487 | "@lezer/highlight" "^1.1.3"
488 | "@react-hook/intersection-observer" "^3.1.1"
489 | "@stitches/core" "^1.2.6"
490 | ansi-to-react "6.1.6"
491 | clean-set "^1.1.2"
492 | codesandbox-import-util-types "^2.2.3"
493 | dequal "^2.0.2"
494 | lz-string "^1.4.4"
495 | react-devtools-inline "4.4.0"
496 | react-is "^17.0.2"
497 |
498 | "@emotion/babel-plugin-jsx-pragmatic@^0.2.0":
499 | version "0.2.0"
500 | resolved "https://registry.yarnpkg.com/@emotion/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-0.2.0.tgz#6fdd78600417973fa2610704693158181d8505b7"
501 | integrity sha512-VPfKAtb/bVyu5y+HzCPj9bb2nHnj9yX5mMAU7N0pIDcrFZo8aqDyHXLYF8BD7tY4pNL09N87dygVLKIkQvshJw==
502 | dependencies:
503 | "@babel/plugin-syntax-jsx" "^7.17.12"
504 |
505 | "@emotion/babel-plugin@^11.10.6":
506 | version "11.10.6"
507 | resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz#a68ee4b019d661d6f37dec4b8903255766925ead"
508 | integrity sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==
509 | dependencies:
510 | "@babel/helper-module-imports" "^7.16.7"
511 | "@babel/runtime" "^7.18.3"
512 | "@emotion/hash" "^0.9.0"
513 | "@emotion/memoize" "^0.8.0"
514 | "@emotion/serialize" "^1.1.1"
515 | babel-plugin-macros "^3.1.0"
516 | convert-source-map "^1.5.0"
517 | escape-string-regexp "^4.0.0"
518 | find-root "^1.1.0"
519 | source-map "^0.5.7"
520 | stylis "4.1.3"
521 |
522 | "@emotion/cache@^11.10.5":
523 | version "11.10.5"
524 | resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12"
525 | integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==
526 | dependencies:
527 | "@emotion/memoize" "^0.8.0"
528 | "@emotion/sheet" "^1.2.1"
529 | "@emotion/utils" "^1.2.0"
530 | "@emotion/weak-memoize" "^0.3.0"
531 | stylis "4.1.3"
532 |
533 | "@emotion/hash@^0.9.0":
534 | version "0.9.0"
535 | resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7"
536 | integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
537 |
538 | "@emotion/is-prop-valid@^1.2.0":
539 | version "1.2.0"
540 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83"
541 | integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==
542 | dependencies:
543 | "@emotion/memoize" "^0.8.0"
544 |
545 | "@emotion/memoize@^0.8.0":
546 | version "0.8.0"
547 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f"
548 | integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
549 |
550 | "@emotion/react@^11.10.6":
551 | version "11.10.6"
552 | resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11"
553 | integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==
554 | dependencies:
555 | "@babel/runtime" "^7.18.3"
556 | "@emotion/babel-plugin" "^11.10.6"
557 | "@emotion/cache" "^11.10.5"
558 | "@emotion/serialize" "^1.1.1"
559 | "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
560 | "@emotion/utils" "^1.2.0"
561 | "@emotion/weak-memoize" "^0.3.0"
562 | hoist-non-react-statics "^3.3.1"
563 |
564 | "@emotion/serialize@^1.1.1":
565 | version "1.1.1"
566 | resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0"
567 | integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==
568 | dependencies:
569 | "@emotion/hash" "^0.9.0"
570 | "@emotion/memoize" "^0.8.0"
571 | "@emotion/unitless" "^0.8.0"
572 | "@emotion/utils" "^1.2.0"
573 | csstype "^3.0.2"
574 |
575 | "@emotion/sheet@^1.2.1":
576 | version "1.2.1"
577 | resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c"
578 | integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==
579 |
580 | "@emotion/styled@^11.10.6":
581 | version "11.10.6"
582 | resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.6.tgz#d886afdc51ef4d66c787ebde848f3cc8b117ebba"
583 | integrity sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==
584 | dependencies:
585 | "@babel/runtime" "^7.18.3"
586 | "@emotion/babel-plugin" "^11.10.6"
587 | "@emotion/is-prop-valid" "^1.2.0"
588 | "@emotion/serialize" "^1.1.1"
589 | "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
590 | "@emotion/utils" "^1.2.0"
591 |
592 | "@emotion/unitless@^0.8.0":
593 | version "0.8.0"
594 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db"
595 | integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==
596 |
597 | "@emotion/use-insertion-effect-with-fallbacks@^1.0.0":
598 | version "1.0.0"
599 | resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df"
600 | integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==
601 |
602 | "@emotion/utils@^1.2.0":
603 | version "1.2.0"
604 | resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561"
605 | integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
606 |
607 | "@emotion/weak-memoize@^0.3.0":
608 | version "0.3.0"
609 | resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb"
610 | integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==
611 |
612 | "@esbuild/android-arm64@0.16.17":
613 | version "0.16.17"
614 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23"
615 | integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==
616 |
617 | "@esbuild/android-arm@0.16.17":
618 | version "0.16.17"
619 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2"
620 | integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==
621 |
622 | "@esbuild/android-x64@0.16.17":
623 | version "0.16.17"
624 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e"
625 | integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==
626 |
627 | "@esbuild/darwin-arm64@0.16.17":
628 | version "0.16.17"
629 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220"
630 | integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==
631 |
632 | "@esbuild/darwin-x64@0.16.17":
633 | version "0.16.17"
634 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4"
635 | integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==
636 |
637 | "@esbuild/freebsd-arm64@0.16.17":
638 | version "0.16.17"
639 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27"
640 | integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==
641 |
642 | "@esbuild/freebsd-x64@0.16.17":
643 | version "0.16.17"
644 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72"
645 | integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==
646 |
647 | "@esbuild/linux-arm64@0.16.17":
648 | version "0.16.17"
649 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca"
650 | integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==
651 |
652 | "@esbuild/linux-arm@0.16.17":
653 | version "0.16.17"
654 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196"
655 | integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==
656 |
657 | "@esbuild/linux-ia32@0.16.17":
658 | version "0.16.17"
659 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54"
660 | integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==
661 |
662 | "@esbuild/linux-loong64@0.16.17":
663 | version "0.16.17"
664 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8"
665 | integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==
666 |
667 | "@esbuild/linux-mips64el@0.16.17":
668 | version "0.16.17"
669 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726"
670 | integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==
671 |
672 | "@esbuild/linux-ppc64@0.16.17":
673 | version "0.16.17"
674 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8"
675 | integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==
676 |
677 | "@esbuild/linux-riscv64@0.16.17":
678 | version "0.16.17"
679 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9"
680 | integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==
681 |
682 | "@esbuild/linux-s390x@0.16.17":
683 | version "0.16.17"
684 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87"
685 | integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==
686 |
687 | "@esbuild/linux-x64@0.16.17":
688 | version "0.16.17"
689 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f"
690 | integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==
691 |
692 | "@esbuild/netbsd-x64@0.16.17":
693 | version "0.16.17"
694 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775"
695 | integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==
696 |
697 | "@esbuild/openbsd-x64@0.16.17":
698 | version "0.16.17"
699 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35"
700 | integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==
701 |
702 | "@esbuild/sunos-x64@0.16.17":
703 | version "0.16.17"
704 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c"
705 | integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==
706 |
707 | "@esbuild/win32-arm64@0.16.17":
708 | version "0.16.17"
709 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a"
710 | integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==
711 |
712 | "@esbuild/win32-ia32@0.16.17":
713 | version "0.16.17"
714 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09"
715 | integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==
716 |
717 | "@esbuild/win32-x64@0.16.17":
718 | version "0.16.17"
719 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
720 | integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
721 |
722 | "@ianvs/prettier-plugin-sort-imports@^3.7.1":
723 | version "3.7.1"
724 | resolved "https://registry.yarnpkg.com/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-3.7.1.tgz#260baf4bde78e6abf5dd1ab556f7ecf9054948b7"
725 | integrity sha512-XDnBUUruJY9KgNd7T2ZHnVPWo5B9NzVDCLEMm7HjXTA3rTtMg5Q46gYRjLvampDXSmN8+icu54aRE3IIT8U+1w==
726 | dependencies:
727 | "@babel/core" "^7.17.7"
728 | "@babel/generator" "^7.17.7"
729 | "@babel/parser" "^7.17.7"
730 | "@babel/traverse" "^7.17.3"
731 | "@babel/types" "^7.17.0"
732 | javascript-natural-sort "0.7.1"
733 | lodash.clone "^4.5.0"
734 | lodash.isequal "^4.5.0"
735 |
736 | "@iconify-json/octicon@^1.1.33":
737 | version "1.1.33"
738 | resolved "https://registry.yarnpkg.com/@iconify-json/octicon/-/octicon-1.1.33.tgz#f3f531fe114bbb4158228171de61f8e9393dc76a"
739 | integrity sha512-hMZbFew+2AQ50vrRJx+Ngfj8G3+6Lwmc02CjhT5FvtF6rEy/BW9TC1Qn1bUp0w7OrXa9c/gt0I4UYhIA/k637A==
740 | dependencies:
741 | "@iconify/types" "*"
742 |
743 | "@iconify-json/ri@^1.1.5":
744 | version "1.1.5"
745 | resolved "https://registry.yarnpkg.com/@iconify-json/ri/-/ri-1.1.5.tgz#569495ae788a3865805e7a17de553ab90d672ea7"
746 | integrity sha512-OrxKcKFHanTSPmU5esvSn5YfpNgjwJJ+6rkK1I1pIRCPXfuvmlTJGUjf+L5ZQHUiMWLQz+M2bqXx8iBUtW35Gg==
747 | dependencies:
748 | "@iconify/types" "*"
749 |
750 | "@iconify-json/teenyicons@^1.1.5":
751 | version "1.1.5"
752 | resolved "https://registry.yarnpkg.com/@iconify-json/teenyicons/-/teenyicons-1.1.5.tgz#d379117c93c694a138291dc5a6e19f4d7bd84d83"
753 | integrity sha512-nhMUhmQIyuRh7ZMeG+P2OI8kYPly7kLgec52Ett4NvIOv9+dOkIK3Gzchvlcg/ZZlugQn/n/hAJiCgzcNnrWRQ==
754 | dependencies:
755 | "@iconify/types" "*"
756 |
757 | "@iconify-json/vscode-icons@^1.1.22":
758 | version "1.1.22"
759 | resolved "https://registry.yarnpkg.com/@iconify-json/vscode-icons/-/vscode-icons-1.1.22.tgz#830fd2c29ff3fc47a8495a88809b73c0d37be47d"
760 | integrity sha512-lO0Sl2xApg/R7PlZJOiRbwuOQFXPRVbM8c+RHOMxWEUF0Hd/UiHBemYjdUDW5pr9QNmvv183rwJiBFHBvIeZ5A==
761 | dependencies:
762 | "@iconify/types" "*"
763 |
764 | "@iconify/types@*":
765 | version "1.1.0"
766 | resolved "https://registry.yarnpkg.com/@iconify/types/-/types-1.1.0.tgz#dc15fc988b1b3fd558dd140a24ede7e0aac11280"
767 | integrity sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==
768 |
769 | "@iconify/types@^2.0.0":
770 | version "2.0.0"
771 | resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57"
772 | integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
773 |
774 | "@iconify/utils@^2.1.2":
775 | version "2.1.4"
776 | resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.1.4.tgz#dd6fb39363e275fa9502b6e0f84f77032ef4041f"
777 | integrity sha512-7vzsYIvxv5Hng0MNEtSSnyMBD/+zqnORqmKiYsSgpMBGSz1r93URgBZHPYCZ1/gpoaVstYW4/SVLGCMJBNMCLQ==
778 | dependencies:
779 | "@antfu/install-pkg" "^0.1.1"
780 | "@antfu/utils" "^0.7.2"
781 | "@iconify/types" "^2.0.0"
782 | debug "^4.3.4"
783 | kolorist "^1.7.0"
784 | local-pkg "^0.4.3"
785 |
786 | "@jridgewell/gen-mapping@^0.1.0":
787 | version "0.1.1"
788 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
789 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
790 | dependencies:
791 | "@jridgewell/set-array" "^1.0.0"
792 | "@jridgewell/sourcemap-codec" "^1.4.10"
793 |
794 | "@jridgewell/gen-mapping@^0.3.2":
795 | version "0.3.2"
796 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
797 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
798 | dependencies:
799 | "@jridgewell/set-array" "^1.0.1"
800 | "@jridgewell/sourcemap-codec" "^1.4.10"
801 | "@jridgewell/trace-mapping" "^0.3.9"
802 |
803 | "@jridgewell/resolve-uri@3.1.0":
804 | version "3.1.0"
805 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
806 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
807 |
808 | "@jridgewell/resolve-uri@^3.0.3":
809 | version "3.0.5"
810 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
811 | integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
812 |
813 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
814 | version "1.1.2"
815 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
816 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
817 |
818 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.13":
819 | version "1.4.14"
820 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
821 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
822 |
823 | "@jridgewell/sourcemap-codec@^1.4.10":
824 | version "1.4.11"
825 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
826 | integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
827 |
828 | "@jridgewell/trace-mapping@^0.3.17":
829 | version "0.3.17"
830 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
831 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
832 | dependencies:
833 | "@jridgewell/resolve-uri" "3.1.0"
834 | "@jridgewell/sourcemap-codec" "1.4.14"
835 |
836 | "@jridgewell/trace-mapping@^0.3.9":
837 | version "0.3.14"
838 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
839 | integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
840 | dependencies:
841 | "@jridgewell/resolve-uri" "^3.0.3"
842 | "@jridgewell/sourcemap-codec" "^1.4.10"
843 |
844 | "@lezer/common@^1.0.0":
845 | version "1.0.2"
846 | resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087"
847 | integrity sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==
848 |
849 | "@lezer/css@^1.0.0", "@lezer/css@^1.1.0":
850 | version "1.1.1"
851 | resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.1.tgz#c36dcb0789317cb80c3740767dd3b85e071ad082"
852 | integrity sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==
853 | dependencies:
854 | "@lezer/highlight" "^1.0.0"
855 | "@lezer/lr" "^1.0.0"
856 |
857 | "@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3":
858 | version "1.1.3"
859 | resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.3.tgz#bf5a36c2ee227f526d74997ac91f7777e29bd25d"
860 | integrity sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==
861 | dependencies:
862 | "@lezer/common" "^1.0.0"
863 |
864 | "@lezer/html@^1.3.0":
865 | version "1.3.3"
866 | resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.3.3.tgz#2eddae2ad000f9b184d9fc4686394d0fa0849993"
867 | integrity sha512-04Fyvu66DjV2EjhDIG1kfDdktn5Pfw56SXPrzKNQH5B2m7BDfc6bDsz+ZJG8dLS3kIPEKbyyq1Sm2/kjeG0+AA==
868 | dependencies:
869 | "@lezer/common" "^1.0.0"
870 | "@lezer/highlight" "^1.0.0"
871 | "@lezer/lr" "^1.0.0"
872 |
873 | "@lezer/javascript@^1.0.0":
874 | version "1.4.1"
875 | resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.1.tgz#97a15042c76b5979af6a069fac83cf6485628cbf"
876 | integrity sha512-Hqx36DJeYhKtdpc7wBYPR0XF56ZzIp0IkMO/zNNj80xcaFOV4Oj/P7TQc/8k2TxNhzl7tV5tXS8ZOCPbT4L3nA==
877 | dependencies:
878 | "@lezer/highlight" "^1.1.3"
879 | "@lezer/lr" "^1.3.0"
880 |
881 | "@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
882 | version "1.3.3"
883 | resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.3.tgz#0ac6c889f1235874f33c45a1b9785d7054f60708"
884 | integrity sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==
885 | dependencies:
886 | "@lezer/common" "^1.0.0"
887 |
888 | "@nodelib/fs.scandir@2.1.5":
889 | version "2.1.5"
890 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
891 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
892 | dependencies:
893 | "@nodelib/fs.stat" "2.0.5"
894 | run-parallel "^1.1.9"
895 |
896 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
897 | version "2.0.5"
898 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
899 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
900 |
901 | "@nodelib/fs.walk@^1.2.3":
902 | version "1.2.8"
903 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
904 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
905 | dependencies:
906 | "@nodelib/fs.scandir" "2.1.5"
907 | fastq "^1.6.0"
908 |
909 | "@react-hook/intersection-observer@^3.1.1":
910 | version "3.1.1"
911 | resolved "https://registry.yarnpkg.com/@react-hook/intersection-observer/-/intersection-observer-3.1.1.tgz#6b8fdb80d133c9c28bc8318368ecb3a1f8befc50"
912 | integrity sha512-OTDx8/wFaRvzFtKl1dEUEXSOqK2zVJHporiTTdC2xO++0e9FEx9wIrPis5q3lqtXeZH9zYGLbk+aB75qNFbbuw==
913 | dependencies:
914 | "@react-hook/passive-layout-effect" "^1.2.0"
915 | intersection-observer "^0.10.0"
916 |
917 | "@react-hook/passive-layout-effect@^1.2.0":
918 | version "1.2.1"
919 | resolved "https://registry.yarnpkg.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz#c06dac2d011f36d61259aa1c6df4f0d5e28bc55e"
920 | integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==
921 |
922 | "@remix-run/router@1.3.3":
923 | version "1.3.3"
924 | resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.3.3.tgz#d6d531d69c0fa3a44fda7dc00b20d49b44549164"
925 | integrity sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==
926 |
927 | "@stitches/core@^1.2.6":
928 | version "1.2.8"
929 | resolved "https://registry.yarnpkg.com/@stitches/core/-/core-1.2.8.tgz#dce3b8fdc764fbc6dbea30c83b73bfb52cf96173"
930 | integrity sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==
931 |
932 | "@svgr/babel-plugin-add-jsx-attribute@^6.5.1":
933 | version "6.5.1"
934 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba"
935 | integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==
936 |
937 | "@svgr/babel-plugin-remove-jsx-attribute@*":
938 | version "6.5.0"
939 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e"
940 | integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==
941 |
942 | "@svgr/babel-plugin-remove-jsx-empty-expression@*":
943 | version "6.5.0"
944 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8"
945 | integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==
946 |
947 | "@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1":
948 | version "6.5.1"
949 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60"
950 | integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==
951 |
952 | "@svgr/babel-plugin-svg-dynamic-title@^6.5.1":
953 | version "6.5.1"
954 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4"
955 | integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==
956 |
957 | "@svgr/babel-plugin-svg-em-dimensions@^6.5.1":
958 | version "6.5.1"
959 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217"
960 | integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==
961 |
962 | "@svgr/babel-plugin-transform-react-native-svg@^6.5.1":
963 | version "6.5.1"
964 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305"
965 | integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==
966 |
967 | "@svgr/babel-plugin-transform-svg-component@^6.5.1":
968 | version "6.5.1"
969 | resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250"
970 | integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==
971 |
972 | "@svgr/babel-preset@^6.5.1":
973 | version "6.5.1"
974 | resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828"
975 | integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==
976 | dependencies:
977 | "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1"
978 | "@svgr/babel-plugin-remove-jsx-attribute" "*"
979 | "@svgr/babel-plugin-remove-jsx-empty-expression" "*"
980 | "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1"
981 | "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1"
982 | "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1"
983 | "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1"
984 | "@svgr/babel-plugin-transform-svg-component" "^6.5.1"
985 |
986 | "@svgr/core@^6.5.1":
987 | version "6.5.1"
988 | resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a"
989 | integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==
990 | dependencies:
991 | "@babel/core" "^7.19.6"
992 | "@svgr/babel-preset" "^6.5.1"
993 | "@svgr/plugin-jsx" "^6.5.1"
994 | camelcase "^6.2.0"
995 | cosmiconfig "^7.0.1"
996 |
997 | "@svgr/hast-util-to-babel-ast@^6.5.1":
998 | version "6.5.1"
999 | resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2"
1000 | integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==
1001 | dependencies:
1002 | "@babel/types" "^7.20.0"
1003 | entities "^4.4.0"
1004 |
1005 | "@svgr/plugin-jsx@^6.5.1":
1006 | version "6.5.1"
1007 | resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072"
1008 | integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==
1009 | dependencies:
1010 | "@babel/core" "^7.19.6"
1011 | "@svgr/babel-preset" "^6.5.1"
1012 | "@svgr/hast-util-to-babel-ast" "^6.5.1"
1013 | svg-parser "^2.0.4"
1014 |
1015 | "@types/linkify-it@*":
1016 | version "3.0.2"
1017 | resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9"
1018 | integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==
1019 |
1020 | "@types/markdown-it@^12.2.3":
1021 | version "12.2.3"
1022 | resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51"
1023 | integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==
1024 | dependencies:
1025 | "@types/linkify-it" "*"
1026 | "@types/mdurl" "*"
1027 |
1028 | "@types/mdurl@*":
1029 | version "1.0.2"
1030 | resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9"
1031 | integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==
1032 |
1033 | "@types/parse-json@^4.0.0":
1034 | version "4.0.0"
1035 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
1036 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
1037 |
1038 | "@types/prismjs@^1.26.0":
1039 | version "1.26.0"
1040 | resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654"
1041 | integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==
1042 |
1043 | "@types/prop-types@*":
1044 | version "15.7.4"
1045 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
1046 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
1047 |
1048 | "@types/react-dom@^18.0.11":
1049 | version "18.0.11"
1050 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
1051 | integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==
1052 | dependencies:
1053 | "@types/react" "*"
1054 |
1055 | "@types/react-transition-group@^4.4.5":
1056 | version "4.4.5"
1057 | resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416"
1058 | integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==
1059 | dependencies:
1060 | "@types/react" "*"
1061 |
1062 | "@types/react@*":
1063 | version "17.0.43"
1064 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
1065 | integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
1066 | dependencies:
1067 | "@types/prop-types" "*"
1068 | "@types/scheduler" "*"
1069 | csstype "^3.0.2"
1070 |
1071 | "@types/react@^18.0.28":
1072 | version "18.0.28"
1073 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
1074 | integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
1075 | dependencies:
1076 | "@types/prop-types" "*"
1077 | "@types/scheduler" "*"
1078 | csstype "^3.0.2"
1079 |
1080 | "@types/scheduler@*":
1081 | version "0.16.2"
1082 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
1083 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
1084 |
1085 | "@vitejs/plugin-react@^3.1.0":
1086 | version "3.1.0"
1087 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240"
1088 | integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==
1089 | dependencies:
1090 | "@babel/core" "^7.20.12"
1091 | "@babel/plugin-transform-react-jsx-self" "^7.18.6"
1092 | "@babel/plugin-transform-react-jsx-source" "^7.19.6"
1093 | magic-string "^0.27.0"
1094 | react-refresh "^0.14.0"
1095 |
1096 | acorn-node@^1.8.2:
1097 | version "1.8.2"
1098 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
1099 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
1100 | dependencies:
1101 | acorn "^7.0.0"
1102 | acorn-walk "^7.0.0"
1103 | xtend "^4.0.2"
1104 |
1105 | acorn-walk@^7.0.0:
1106 | version "7.2.0"
1107 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
1108 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
1109 |
1110 | acorn@^7.0.0:
1111 | version "7.4.1"
1112 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
1113 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
1114 |
1115 | acorn@^8.8.2:
1116 | version "8.8.2"
1117 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
1118 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
1119 |
1120 | anser@^1.4.1:
1121 | version "1.4.10"
1122 | resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b"
1123 | integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==
1124 |
1125 | ansi-styles@^3.2.1:
1126 | version "3.2.1"
1127 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1128 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1129 | dependencies:
1130 | color-convert "^1.9.0"
1131 |
1132 | ansi-styles@^4.1.0:
1133 | version "4.3.0"
1134 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
1135 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
1136 | dependencies:
1137 | color-convert "^2.0.1"
1138 |
1139 | ansi-to-react@6.1.6:
1140 | version "6.1.6"
1141 | resolved "https://registry.yarnpkg.com/ansi-to-react/-/ansi-to-react-6.1.6.tgz#d6fe15ecd4351df626a08121b1646adfe6c02ccb"
1142 | integrity sha512-+HWn72GKydtupxX9TORBedqOMsJRiKTqaLUKW8txSBZw9iBpzPKLI8KOu4WzwD4R7hSv1zEspobY6LwlWvwZ6Q==
1143 | dependencies:
1144 | anser "^1.4.1"
1145 | escape-carriage "^1.3.0"
1146 |
1147 | anymatch@~3.1.2:
1148 | version "3.1.2"
1149 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
1150 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
1151 | dependencies:
1152 | normalize-path "^3.0.0"
1153 | picomatch "^2.0.4"
1154 |
1155 | arg@^5.0.2:
1156 | version "5.0.2"
1157 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
1158 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
1159 |
1160 | argparse@^2.0.1:
1161 | version "2.0.1"
1162 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
1163 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
1164 |
1165 | babel-plugin-macros@^3.1.0:
1166 | version "3.1.0"
1167 | resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
1168 | integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
1169 | dependencies:
1170 | "@babel/runtime" "^7.12.5"
1171 | cosmiconfig "^7.0.0"
1172 | resolve "^1.19.0"
1173 |
1174 | base64-js@^1.3.1:
1175 | version "1.5.1"
1176 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
1177 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
1178 |
1179 | binary-extensions@^2.0.0:
1180 | version "2.2.0"
1181 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
1182 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1183 |
1184 | braces@^3.0.2, braces@~3.0.2:
1185 | version "3.0.2"
1186 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1187 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1188 | dependencies:
1189 | fill-range "^7.0.1"
1190 |
1191 | browserslist@^4.21.3:
1192 | version "4.21.5"
1193 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
1194 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
1195 | dependencies:
1196 | caniuse-lite "^1.0.30001449"
1197 | electron-to-chromium "^1.4.284"
1198 | node-releases "^2.0.8"
1199 | update-browserslist-db "^1.0.10"
1200 |
1201 | buffer@^6.0.3:
1202 | version "6.0.3"
1203 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
1204 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
1205 | dependencies:
1206 | base64-js "^1.3.1"
1207 | ieee754 "^1.2.1"
1208 |
1209 | callsites@^3.0.0:
1210 | version "3.1.0"
1211 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1212 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1213 |
1214 | camelcase-css@^2.0.1:
1215 | version "2.0.1"
1216 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
1217 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
1218 |
1219 | camelcase@^6.2.0:
1220 | version "6.3.0"
1221 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
1222 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
1223 |
1224 | caniuse-lite@^1.0.30001449:
1225 | version "1.0.30001457"
1226 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001457.tgz#6af34bb5d720074e2099432aa522c21555a18301"
1227 | integrity sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==
1228 |
1229 | chalk@4.1.2:
1230 | version "4.1.2"
1231 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
1232 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1233 | dependencies:
1234 | ansi-styles "^4.1.0"
1235 | supports-color "^7.1.0"
1236 |
1237 | chalk@^2.0.0:
1238 | version "2.4.2"
1239 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1240 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1241 | dependencies:
1242 | ansi-styles "^3.2.1"
1243 | escape-string-regexp "^1.0.5"
1244 | supports-color "^5.3.0"
1245 |
1246 | chokidar@^3.5.3:
1247 | version "3.5.3"
1248 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
1249 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
1250 | dependencies:
1251 | anymatch "~3.1.2"
1252 | braces "~3.0.2"
1253 | glob-parent "~5.1.2"
1254 | is-binary-path "~2.1.0"
1255 | is-glob "~4.0.1"
1256 | normalize-path "~3.0.0"
1257 | readdirp "~3.6.0"
1258 | optionalDependencies:
1259 | fsevents "~2.3.2"
1260 |
1261 | clean-set@^1.1.2:
1262 | version "1.1.2"
1263 | resolved "https://registry.yarnpkg.com/clean-set/-/clean-set-1.1.2.tgz#76d8bf238c3e27827bfa73073ecdfdc767187070"
1264 | integrity sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==
1265 |
1266 | codesandbox-import-util-types@^2.2.3:
1267 | version "2.2.3"
1268 | resolved "https://registry.yarnpkg.com/codesandbox-import-util-types/-/codesandbox-import-util-types-2.2.3.tgz#b354b2f732ad130e119ebd9ead3bda3be5981a54"
1269 | integrity sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ==
1270 |
1271 | color-convert@^1.9.0:
1272 | version "1.9.3"
1273 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1274 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1275 | dependencies:
1276 | color-name "1.1.3"
1277 |
1278 | color-convert@^2.0.1:
1279 | version "2.0.1"
1280 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
1281 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
1282 | dependencies:
1283 | color-name "~1.1.4"
1284 |
1285 | color-name@1.1.3:
1286 | version "1.1.3"
1287 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1288 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1289 |
1290 | color-name@^1.1.4, color-name@~1.1.4:
1291 | version "1.1.4"
1292 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1293 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1294 |
1295 | convert-source-map@^1.5.0, convert-source-map@^1.7.0:
1296 | version "1.8.0"
1297 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
1298 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
1299 | dependencies:
1300 | safe-buffer "~5.1.1"
1301 |
1302 | copy-text-to-clipboard@^3.0.1:
1303 | version "3.0.1"
1304 | resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
1305 | integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==
1306 |
1307 | cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
1308 | version "7.0.1"
1309 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
1310 | integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
1311 | dependencies:
1312 | "@types/parse-json" "^4.0.0"
1313 | import-fresh "^3.2.1"
1314 | parse-json "^5.0.0"
1315 | path-type "^4.0.0"
1316 | yaml "^1.10.0"
1317 |
1318 | crelt@^1.0.5:
1319 | version "1.0.5"
1320 | resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
1321 | integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
1322 |
1323 | cross-spawn@^7.0.3:
1324 | version "7.0.3"
1325 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1326 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1327 | dependencies:
1328 | path-key "^3.1.0"
1329 | shebang-command "^2.0.0"
1330 | which "^2.0.1"
1331 |
1332 | cssesc@^3.0.0:
1333 | version "3.0.0"
1334 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
1335 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
1336 |
1337 | csstype@^3.0.2:
1338 | version "3.0.11"
1339 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
1340 | integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
1341 |
1342 | d@1, d@^1.0.1:
1343 | version "1.0.1"
1344 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
1345 | integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
1346 | dependencies:
1347 | es5-ext "^0.10.50"
1348 | type "^1.0.1"
1349 |
1350 | date-fns@^2.29.3:
1351 | version "2.29.3"
1352 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
1353 | integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
1354 |
1355 | debug@^4.1.0, debug@^4.3.4:
1356 | version "4.3.4"
1357 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
1358 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
1359 | dependencies:
1360 | ms "2.1.2"
1361 |
1362 | defined@^1.0.0:
1363 | version "1.0.0"
1364 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
1365 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
1366 |
1367 | dequal@^2.0.2:
1368 | version "2.0.3"
1369 | resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
1370 | integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
1371 |
1372 | detective@^5.2.1:
1373 | version "5.2.1"
1374 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034"
1375 | integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
1376 | dependencies:
1377 | acorn-node "^1.8.2"
1378 | defined "^1.0.0"
1379 | minimist "^1.2.6"
1380 |
1381 | didyoumean@^1.2.2:
1382 | version "1.2.2"
1383 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
1384 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
1385 |
1386 | dlv@^1.1.3:
1387 | version "1.1.3"
1388 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
1389 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
1390 |
1391 | dom-helpers@^5.0.1:
1392 | version "5.2.1"
1393 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
1394 | integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
1395 | dependencies:
1396 | "@babel/runtime" "^7.8.7"
1397 | csstype "^3.0.2"
1398 |
1399 | electron-to-chromium@^1.4.284:
1400 | version "1.4.303"
1401 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.303.tgz#6c598653c52b2554f768d98374803236b8f022a8"
1402 | integrity sha512-XaqiQhVsGO5ymf/Lg6XEGpv2h8b5AFqQDQ9fQckolNP2VtD2VL1pn1TIx1SSYsf0srfXVi2Sm7n/K3slJSX3ig==
1403 |
1404 | entities@^4.4.0:
1405 | version "4.4.0"
1406 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
1407 | integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
1408 |
1409 | entities@~3.0.1:
1410 | version "3.0.1"
1411 | resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
1412 | integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
1413 |
1414 | error-ex@^1.3.1:
1415 | version "1.3.2"
1416 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1417 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1418 | dependencies:
1419 | is-arrayish "^0.2.1"
1420 |
1421 | es5-ext@^0.10.35, es5-ext@^0.10.50:
1422 | version "0.10.62"
1423 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
1424 | integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
1425 | dependencies:
1426 | es6-iterator "^2.0.3"
1427 | es6-symbol "^3.1.3"
1428 | next-tick "^1.1.0"
1429 |
1430 | es6-iterator@^2.0.3:
1431 | version "2.0.3"
1432 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
1433 | integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
1434 | dependencies:
1435 | d "1"
1436 | es5-ext "^0.10.35"
1437 | es6-symbol "^3.1.1"
1438 |
1439 | es6-symbol@^3, es6-symbol@^3.1.1, es6-symbol@^3.1.3:
1440 | version "3.1.3"
1441 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
1442 | integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
1443 | dependencies:
1444 | d "^1.0.1"
1445 | ext "^1.1.2"
1446 |
1447 | esbuild@^0.16.14:
1448 | version "0.16.17"
1449 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259"
1450 | integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==
1451 | optionalDependencies:
1452 | "@esbuild/android-arm" "0.16.17"
1453 | "@esbuild/android-arm64" "0.16.17"
1454 | "@esbuild/android-x64" "0.16.17"
1455 | "@esbuild/darwin-arm64" "0.16.17"
1456 | "@esbuild/darwin-x64" "0.16.17"
1457 | "@esbuild/freebsd-arm64" "0.16.17"
1458 | "@esbuild/freebsd-x64" "0.16.17"
1459 | "@esbuild/linux-arm" "0.16.17"
1460 | "@esbuild/linux-arm64" "0.16.17"
1461 | "@esbuild/linux-ia32" "0.16.17"
1462 | "@esbuild/linux-loong64" "0.16.17"
1463 | "@esbuild/linux-mips64el" "0.16.17"
1464 | "@esbuild/linux-ppc64" "0.16.17"
1465 | "@esbuild/linux-riscv64" "0.16.17"
1466 | "@esbuild/linux-s390x" "0.16.17"
1467 | "@esbuild/linux-x64" "0.16.17"
1468 | "@esbuild/netbsd-x64" "0.16.17"
1469 | "@esbuild/openbsd-x64" "0.16.17"
1470 | "@esbuild/sunos-x64" "0.16.17"
1471 | "@esbuild/win32-arm64" "0.16.17"
1472 | "@esbuild/win32-ia32" "0.16.17"
1473 | "@esbuild/win32-x64" "0.16.17"
1474 |
1475 | escalade@^3.1.1:
1476 | version "3.1.1"
1477 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1478 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
1479 |
1480 | escape-carriage@^1.3.0:
1481 | version "1.3.0"
1482 | resolved "https://registry.yarnpkg.com/escape-carriage/-/escape-carriage-1.3.0.tgz#71006b2d4da8cb6828686addafcb094239c742f3"
1483 | integrity sha512-ATWi5MD8QlAGQOeMgI8zTp671BG8aKvAC0M7yenlxU4CRLGO/sKthxVUyjiOFKjHdIo+6dZZUNFgHFeVEaKfGQ==
1484 |
1485 | escape-string-regexp@^1.0.5:
1486 | version "1.0.5"
1487 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1488 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1489 |
1490 | escape-string-regexp@^4.0.0:
1491 | version "4.0.0"
1492 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
1493 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
1494 |
1495 | execa@^5.1.1:
1496 | version "5.1.1"
1497 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1498 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1499 | dependencies:
1500 | cross-spawn "^7.0.3"
1501 | get-stream "^6.0.0"
1502 | human-signals "^2.1.0"
1503 | is-stream "^2.0.0"
1504 | merge-stream "^2.0.0"
1505 | npm-run-path "^4.0.1"
1506 | onetime "^5.1.2"
1507 | signal-exit "^3.0.3"
1508 | strip-final-newline "^2.0.0"
1509 |
1510 | ext@^1.1.2:
1511 | version "1.7.0"
1512 | resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
1513 | integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
1514 | dependencies:
1515 | type "^2.7.2"
1516 |
1517 | fast-glob@^3.2.12:
1518 | version "3.2.12"
1519 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
1520 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
1521 | dependencies:
1522 | "@nodelib/fs.stat" "^2.0.2"
1523 | "@nodelib/fs.walk" "^1.2.3"
1524 | glob-parent "^5.1.2"
1525 | merge2 "^1.3.0"
1526 | micromatch "^4.0.4"
1527 |
1528 | fastq@^1.6.0:
1529 | version "1.13.0"
1530 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
1531 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
1532 | dependencies:
1533 | reusify "^1.0.4"
1534 |
1535 | fill-range@^7.0.1:
1536 | version "7.0.1"
1537 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1538 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1539 | dependencies:
1540 | to-regex-range "^5.0.1"
1541 |
1542 | find-root@^1.1.0:
1543 | version "1.1.0"
1544 | resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
1545 | integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
1546 |
1547 | find-up@^5.0.0:
1548 | version "5.0.0"
1549 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
1550 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
1551 | dependencies:
1552 | locate-path "^6.0.0"
1553 | path-exists "^4.0.0"
1554 |
1555 | fsevents@~2.3.2:
1556 | version "2.3.2"
1557 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1558 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1559 |
1560 | function-bind@^1.1.1:
1561 | version "1.1.1"
1562 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1563 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1564 |
1565 | gensync@^1.0.0-beta.2:
1566 | version "1.0.0-beta.2"
1567 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1568 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1569 |
1570 | get-stream@^6.0.0:
1571 | version "6.0.1"
1572 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1573 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1574 |
1575 | github-markdown-css@^5.2.0:
1576 | version "5.2.0"
1577 | resolved "https://registry.yarnpkg.com/github-markdown-css/-/github-markdown-css-5.2.0.tgz#9f9e30f16cbc1d3b76110667b7c36ca3d96c9cdc"
1578 | integrity sha512-hq5RaCInSUZ48bImOZpkppW2/MT44StRgsbsZ8YA4vJFwLKB/Vo3k7R2t+pUGqO+ThG0QDMi96TewV/B3vyItg==
1579 |
1580 | glob-parent@^5.1.2, glob-parent@~5.1.2:
1581 | version "5.1.2"
1582 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1583 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1584 | dependencies:
1585 | is-glob "^4.0.1"
1586 |
1587 | glob-parent@^6.0.2:
1588 | version "6.0.2"
1589 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
1590 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
1591 | dependencies:
1592 | is-glob "^4.0.3"
1593 |
1594 | globals@^11.1.0:
1595 | version "11.12.0"
1596 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1597 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1598 |
1599 | has-flag@^3.0.0:
1600 | version "3.0.0"
1601 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1602 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1603 |
1604 | has-flag@^4.0.0:
1605 | version "4.0.0"
1606 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1607 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1608 |
1609 | has@^1.0.3:
1610 | version "1.0.3"
1611 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1612 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1613 | dependencies:
1614 | function-bind "^1.1.1"
1615 |
1616 | hoist-non-react-statics@^3.3.1:
1617 | version "3.3.2"
1618 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
1619 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
1620 | dependencies:
1621 | react-is "^16.7.0"
1622 |
1623 | html-parse-stringify@^3.0.1:
1624 | version "3.0.1"
1625 | resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2"
1626 | integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==
1627 | dependencies:
1628 | void-elements "3.1.0"
1629 |
1630 | human-signals@^2.1.0:
1631 | version "2.1.0"
1632 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1633 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1634 |
1635 | i18next@^22.4.10:
1636 | version "22.4.10"
1637 | resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.10.tgz#cfbfc412c6bc83e3c16564f47e6a5c145255960e"
1638 | integrity sha512-3EqgGK6fAJRjnGgfkNSStl4mYLCjUoJID338yVyLMj5APT67HUtWoqSayZewiiC5elzMUB1VEUwcmSCoeQcNEA==
1639 | dependencies:
1640 | "@babel/runtime" "^7.20.6"
1641 |
1642 | ieee754@^1.2.1:
1643 | version "1.2.1"
1644 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
1645 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
1646 |
1647 | import-fresh@^3.2.1:
1648 | version "3.3.0"
1649 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1650 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1651 | dependencies:
1652 | parent-module "^1.0.0"
1653 | resolve-from "^4.0.0"
1654 |
1655 | intersection-observer@^0.10.0:
1656 | version "0.10.0"
1657 | resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.10.0.tgz#4d11d63c1ff67e21e62987be24d55218da1a1a69"
1658 | integrity sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==
1659 |
1660 | is-arrayish@^0.2.1:
1661 | version "0.2.1"
1662 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1663 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
1664 |
1665 | is-binary-path@~2.1.0:
1666 | version "2.1.0"
1667 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1668 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1669 | dependencies:
1670 | binary-extensions "^2.0.0"
1671 |
1672 | is-core-module@^2.8.1:
1673 | version "2.8.1"
1674 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
1675 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
1676 | dependencies:
1677 | has "^1.0.3"
1678 |
1679 | is-core-module@^2.9.0:
1680 | version "2.9.0"
1681 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
1682 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
1683 | dependencies:
1684 | has "^1.0.3"
1685 |
1686 | is-extglob@^2.1.1:
1687 | version "2.1.1"
1688 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1689 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1690 |
1691 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
1692 | version "4.0.3"
1693 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1694 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1695 | dependencies:
1696 | is-extglob "^2.1.1"
1697 |
1698 | is-number@^7.0.0:
1699 | version "7.0.0"
1700 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1701 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1702 |
1703 | is-stream@^2.0.0:
1704 | version "2.0.1"
1705 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1706 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1707 |
1708 | isexe@^2.0.0:
1709 | version "2.0.0"
1710 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1711 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1712 |
1713 | javascript-natural-sort@0.7.1:
1714 | version "0.7.1"
1715 | resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59"
1716 | integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==
1717 |
1718 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
1719 | version "4.0.0"
1720 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1721 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1722 |
1723 | jsesc@^2.5.1:
1724 | version "2.5.2"
1725 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1726 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
1727 |
1728 | json-parse-even-better-errors@^2.3.0:
1729 | version "2.3.1"
1730 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1731 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1732 |
1733 | json5@^2.2.2:
1734 | version "2.2.3"
1735 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
1736 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
1737 |
1738 | kolorist@^1.7.0:
1739 | version "1.7.0"
1740 | resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.7.0.tgz#8e22bc470ea2d2743dbd461808f8b5246b19f5f4"
1741 | integrity sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==
1742 |
1743 | lilconfig@^2.0.5:
1744 | version "2.0.5"
1745 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25"
1746 | integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==
1747 |
1748 | lilconfig@^2.0.6:
1749 | version "2.0.6"
1750 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
1751 | integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
1752 |
1753 | lines-and-columns@^1.1.6:
1754 | version "1.2.4"
1755 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
1756 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
1757 |
1758 | linkify-it@^4.0.1:
1759 | version "4.0.1"
1760 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec"
1761 | integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
1762 | dependencies:
1763 | uc.micro "^1.0.1"
1764 |
1765 | local-pkg@^0.4.3:
1766 | version "0.4.3"
1767 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
1768 | integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
1769 |
1770 | locate-path@^6.0.0:
1771 | version "6.0.0"
1772 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
1773 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
1774 | dependencies:
1775 | p-locate "^5.0.0"
1776 |
1777 | lodash.clone@^4.5.0:
1778 | version "4.5.0"
1779 | resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6"
1780 | integrity sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==
1781 |
1782 | lodash.get@^4.4.2:
1783 | version "4.4.2"
1784 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
1785 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
1786 |
1787 | lodash.isequal@^4.5.0:
1788 | version "4.5.0"
1789 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
1790 | integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
1791 |
1792 | lodash.merge@^4.6.2:
1793 | version "4.6.2"
1794 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
1795 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1796 |
1797 | loose-envify@^1.1.0, loose-envify@^1.4.0:
1798 | version "1.4.0"
1799 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1800 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1801 | dependencies:
1802 | js-tokens "^3.0.0 || ^4.0.0"
1803 |
1804 | lru-cache@^5.1.1:
1805 | version "5.1.1"
1806 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
1807 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
1808 | dependencies:
1809 | yallist "^3.0.2"
1810 |
1811 | lz-string@^1.4.4:
1812 | version "1.4.4"
1813 | resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
1814 | integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==
1815 |
1816 | magic-string@^0.27.0:
1817 | version "0.27.0"
1818 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
1819 | integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
1820 | dependencies:
1821 | "@jridgewell/sourcemap-codec" "^1.4.13"
1822 |
1823 | markdown-it@^13.0.1:
1824 | version "13.0.1"
1825 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
1826 | integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
1827 | dependencies:
1828 | argparse "^2.0.1"
1829 | entities "~3.0.1"
1830 | linkify-it "^4.0.1"
1831 | mdurl "^1.0.1"
1832 | uc.micro "^1.0.5"
1833 |
1834 | mdurl@^1.0.1:
1835 | version "1.0.1"
1836 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
1837 | integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
1838 |
1839 | merge-stream@^2.0.0:
1840 | version "2.0.0"
1841 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1842 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1843 |
1844 | merge2@^1.3.0:
1845 | version "1.4.1"
1846 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
1847 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1848 |
1849 | micromatch@^4.0.4, micromatch@^4.0.5:
1850 | version "4.0.5"
1851 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
1852 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
1853 | dependencies:
1854 | braces "^3.0.2"
1855 | picomatch "^2.3.1"
1856 |
1857 | mimic-fn@^2.1.0:
1858 | version "2.1.0"
1859 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1860 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1861 |
1862 | minimist@^1.2.6:
1863 | version "1.2.6"
1864 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
1865 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
1866 |
1867 | ms@2.1.2:
1868 | version "2.1.2"
1869 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1870 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1871 |
1872 | nanoid@^3.3.4:
1873 | version "3.3.4"
1874 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
1875 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
1876 |
1877 | next-tick@^1.1.0:
1878 | version "1.1.0"
1879 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
1880 | integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
1881 |
1882 | node-releases@^2.0.8:
1883 | version "2.0.10"
1884 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
1885 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
1886 |
1887 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1888 | version "3.0.0"
1889 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1890 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1891 |
1892 | npm-run-path@^4.0.1:
1893 | version "4.0.1"
1894 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1895 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1896 | dependencies:
1897 | path-key "^3.0.0"
1898 |
1899 | object-assign@^4.1.1:
1900 | version "4.1.1"
1901 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1902 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1903 |
1904 | object-hash@^3.0.0:
1905 | version "3.0.0"
1906 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
1907 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
1908 |
1909 | onetime@^5.1.2:
1910 | version "5.1.2"
1911 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1912 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1913 | dependencies:
1914 | mimic-fn "^2.1.0"
1915 |
1916 | outvariant@1.3.0, outvariant@^1.3.0:
1917 | version "1.3.0"
1918 | resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.3.0.tgz#c39723b1d2cba729c930b74bf962317a81b9b1c9"
1919 | integrity sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==
1920 |
1921 | p-limit@^3.0.2:
1922 | version "3.1.0"
1923 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1924 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1925 | dependencies:
1926 | yocto-queue "^0.1.0"
1927 |
1928 | p-locate@^5.0.0:
1929 | version "5.0.0"
1930 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1931 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1932 | dependencies:
1933 | p-limit "^3.0.2"
1934 |
1935 | parent-module@^1.0.0:
1936 | version "1.0.1"
1937 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1938 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1939 | dependencies:
1940 | callsites "^3.0.0"
1941 |
1942 | parse-json@^5.0.0:
1943 | version "5.2.0"
1944 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
1945 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
1946 | dependencies:
1947 | "@babel/code-frame" "^7.0.0"
1948 | error-ex "^1.3.1"
1949 | json-parse-even-better-errors "^2.3.0"
1950 | lines-and-columns "^1.1.6"
1951 |
1952 | path-exists@^4.0.0:
1953 | version "4.0.0"
1954 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1955 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1956 |
1957 | path-key@^3.0.0, path-key@^3.1.0:
1958 | version "3.1.1"
1959 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1960 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1961 |
1962 | path-parse@^1.0.7:
1963 | version "1.0.7"
1964 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1965 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1966 |
1967 | path-type@^4.0.0:
1968 | version "4.0.0"
1969 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1970 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1971 |
1972 | picocolors@^1.0.0:
1973 | version "1.0.0"
1974 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1975 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1976 |
1977 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1978 | version "2.3.1"
1979 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1980 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1981 |
1982 | pify@^2.3.0:
1983 | version "2.3.0"
1984 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1985 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
1986 |
1987 | postcss-import@^14.1.0:
1988 | version "14.1.0"
1989 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0"
1990 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
1991 | dependencies:
1992 | postcss-value-parser "^4.0.0"
1993 | read-cache "^1.0.0"
1994 | resolve "^1.1.7"
1995 |
1996 | postcss-js@^4.0.0:
1997 | version "4.0.0"
1998 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
1999 | integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
2000 | dependencies:
2001 | camelcase-css "^2.0.1"
2002 |
2003 | postcss-load-config@^3.1.4:
2004 | version "3.1.4"
2005 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
2006 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
2007 | dependencies:
2008 | lilconfig "^2.0.5"
2009 | yaml "^1.10.2"
2010 |
2011 | postcss-nested@6.0.0:
2012 | version "6.0.0"
2013 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735"
2014 | integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==
2015 | dependencies:
2016 | postcss-selector-parser "^6.0.10"
2017 |
2018 | postcss-selector-parser@^6.0.10:
2019 | version "6.0.10"
2020 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
2021 | integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
2022 | dependencies:
2023 | cssesc "^3.0.0"
2024 | util-deprecate "^1.0.2"
2025 |
2026 | postcss-selector-parser@^6.0.11:
2027 | version "6.0.11"
2028 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
2029 | integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
2030 | dependencies:
2031 | cssesc "^3.0.0"
2032 | util-deprecate "^1.0.2"
2033 |
2034 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
2035 | version "4.2.0"
2036 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
2037 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
2038 |
2039 | postcss@^8.0.9, postcss@^8.4.21:
2040 | version "8.4.21"
2041 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4"
2042 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
2043 | dependencies:
2044 | nanoid "^3.3.4"
2045 | picocolors "^1.0.0"
2046 | source-map-js "^1.0.2"
2047 |
2048 | prettier@^2.8.4:
2049 | version "2.8.4"
2050 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3"
2051 | integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==
2052 |
2053 | prism-themes@^1.9.0:
2054 | version "1.9.0"
2055 | resolved "https://registry.yarnpkg.com/prism-themes/-/prism-themes-1.9.0.tgz#19c034f3205f1e28d75d89728e54ccd745f7e3dd"
2056 | integrity sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==
2057 |
2058 | prismjs@^1.29.0:
2059 | version "1.29.0"
2060 | resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
2061 | integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
2062 |
2063 | prop-types@^15.6.2:
2064 | version "15.8.1"
2065 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
2066 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
2067 | dependencies:
2068 | loose-envify "^1.4.0"
2069 | object-assign "^4.1.1"
2070 | react-is "^16.13.1"
2071 |
2072 | queue-microtask@^1.2.2:
2073 | version "1.2.3"
2074 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
2075 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
2076 |
2077 | quick-lru@^5.1.1:
2078 | version "5.1.1"
2079 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
2080 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
2081 |
2082 | react-devtools-inline@4.4.0:
2083 | version "4.4.0"
2084 | resolved "https://registry.yarnpkg.com/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz#e032a6eb17a9977b682306f84b46e683adf4bf68"
2085 | integrity sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ==
2086 | dependencies:
2087 | es6-symbol "^3"
2088 |
2089 | react-dom@^18.2.0:
2090 | version "18.2.0"
2091 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
2092 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
2093 | dependencies:
2094 | loose-envify "^1.1.0"
2095 | scheduler "^0.23.0"
2096 |
2097 | react-i18next@^12.2.0:
2098 | version "12.2.0"
2099 | resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-12.2.0.tgz#010e3f6070b8d700442947233352ebe4b252d7a1"
2100 | integrity sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==
2101 | dependencies:
2102 | "@babel/runtime" "^7.20.6"
2103 | html-parse-stringify "^3.0.1"
2104 |
2105 | react-is@^16.13.1, react-is@^16.7.0:
2106 | version "16.13.1"
2107 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
2108 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
2109 |
2110 | react-is@^17.0.2:
2111 | version "17.0.2"
2112 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
2113 | integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
2114 |
2115 | react-refresh@^0.14.0:
2116 | version "0.14.0"
2117 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
2118 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
2119 |
2120 | react-router-dom@^6.8.2:
2121 | version "6.8.2"
2122 | resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.8.2.tgz#a6654a3400be9aafd504d7125573568921b78b57"
2123 | integrity sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==
2124 | dependencies:
2125 | "@remix-run/router" "1.3.3"
2126 | react-router "6.8.2"
2127 |
2128 | react-router@6.8.2:
2129 | version "6.8.2"
2130 | resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.8.2.tgz#98f83582a73f316a3287118b440f0cee30ed6f33"
2131 | integrity sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==
2132 | dependencies:
2133 | "@remix-run/router" "1.3.3"
2134 |
2135 | react-transition-group@^4.4.5:
2136 | version "4.4.5"
2137 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
2138 | integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
2139 | dependencies:
2140 | "@babel/runtime" "^7.5.5"
2141 | dom-helpers "^5.0.1"
2142 | loose-envify "^1.4.0"
2143 | prop-types "^15.6.2"
2144 |
2145 | react@^18.2.0:
2146 | version "18.2.0"
2147 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
2148 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
2149 | dependencies:
2150 | loose-envify "^1.1.0"
2151 |
2152 | read-cache@^1.0.0:
2153 | version "1.0.0"
2154 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
2155 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
2156 | dependencies:
2157 | pify "^2.3.0"
2158 |
2159 | readdirp@~3.6.0:
2160 | version "3.6.0"
2161 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
2162 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
2163 | dependencies:
2164 | picomatch "^2.2.1"
2165 |
2166 | regenerator-runtime@^0.13.11:
2167 | version "0.13.11"
2168 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
2169 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
2170 |
2171 | regenerator-runtime@^0.13.4:
2172 | version "0.13.9"
2173 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
2174 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
2175 |
2176 | resolve-from@^4.0.0:
2177 | version "4.0.0"
2178 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
2179 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
2180 |
2181 | resolve@^1.1.7, resolve@^1.22.1:
2182 | version "1.22.1"
2183 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
2184 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
2185 | dependencies:
2186 | is-core-module "^2.9.0"
2187 | path-parse "^1.0.7"
2188 | supports-preserve-symlinks-flag "^1.0.0"
2189 |
2190 | resolve@^1.19.0:
2191 | version "1.22.0"
2192 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
2193 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
2194 | dependencies:
2195 | is-core-module "^2.8.1"
2196 | path-parse "^1.0.7"
2197 | supports-preserve-symlinks-flag "^1.0.0"
2198 |
2199 | reusify@^1.0.4:
2200 | version "1.0.4"
2201 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
2202 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
2203 |
2204 | rollup@^3.10.0:
2205 | version "3.17.2"
2206 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.17.2.tgz#a4ecd29c488672a0606e41ef57474fad715750a9"
2207 | integrity sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==
2208 | optionalDependencies:
2209 | fsevents "~2.3.2"
2210 |
2211 | run-parallel@^1.1.9:
2212 | version "1.2.0"
2213 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
2214 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
2215 | dependencies:
2216 | queue-microtask "^1.2.2"
2217 |
2218 | safe-buffer@~5.1.1:
2219 | version "5.1.2"
2220 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2221 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2222 |
2223 | scheduler@^0.23.0:
2224 | version "0.23.0"
2225 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
2226 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
2227 | dependencies:
2228 | loose-envify "^1.1.0"
2229 |
2230 | semver@^6.3.0:
2231 | version "6.3.0"
2232 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
2233 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
2234 |
2235 | shebang-command@^2.0.0:
2236 | version "2.0.0"
2237 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2238 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2239 | dependencies:
2240 | shebang-regex "^3.0.0"
2241 |
2242 | shebang-regex@^3.0.0:
2243 | version "3.0.0"
2244 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2245 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2246 |
2247 | signal-exit@^3.0.3:
2248 | version "3.0.7"
2249 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
2250 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
2251 |
2252 | source-map-js@^1.0.2:
2253 | version "1.0.2"
2254 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
2255 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
2256 |
2257 | source-map@^0.5.7:
2258 | version "0.5.7"
2259 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2260 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
2261 |
2262 | strict-event-emitter@^0.4.3:
2263 | version "0.4.6"
2264 | resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz#ff347c8162b3e931e3ff5f02cfce6772c3b07eb3"
2265 | integrity sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==
2266 |
2267 | strip-final-newline@^2.0.0:
2268 | version "2.0.0"
2269 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2270 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2271 |
2272 | style-mod@^4.0.0:
2273 | version "4.0.0"
2274 | resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
2275 | integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
2276 |
2277 | stylis@4.1.3:
2278 | version "4.1.3"
2279 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
2280 | integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
2281 |
2282 | supports-color@^5.3.0:
2283 | version "5.5.0"
2284 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2285 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2286 | dependencies:
2287 | has-flag "^3.0.0"
2288 |
2289 | supports-color@^7.1.0:
2290 | version "7.2.0"
2291 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2292 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2293 | dependencies:
2294 | has-flag "^4.0.0"
2295 |
2296 | supports-preserve-symlinks-flag@^1.0.0:
2297 | version "1.0.0"
2298 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2299 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2300 |
2301 | svg-parser@^2.0.4:
2302 | version "2.0.4"
2303 | resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
2304 | integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
2305 |
2306 | tailwindcss@^3.2.7:
2307 | version "3.2.7"
2308 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07"
2309 | integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==
2310 | dependencies:
2311 | arg "^5.0.2"
2312 | chokidar "^3.5.3"
2313 | color-name "^1.1.4"
2314 | detective "^5.2.1"
2315 | didyoumean "^1.2.2"
2316 | dlv "^1.1.3"
2317 | fast-glob "^3.2.12"
2318 | glob-parent "^6.0.2"
2319 | is-glob "^4.0.3"
2320 | lilconfig "^2.0.6"
2321 | micromatch "^4.0.5"
2322 | normalize-path "^3.0.0"
2323 | object-hash "^3.0.0"
2324 | picocolors "^1.0.0"
2325 | postcss "^8.0.9"
2326 | postcss-import "^14.1.0"
2327 | postcss-js "^4.0.0"
2328 | postcss-load-config "^3.1.4"
2329 | postcss-nested "6.0.0"
2330 | postcss-selector-parser "^6.0.11"
2331 | postcss-value-parser "^4.2.0"
2332 | quick-lru "^5.1.1"
2333 | resolve "^1.22.1"
2334 |
2335 | to-fast-properties@^2.0.0:
2336 | version "2.0.0"
2337 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2338 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
2339 |
2340 | to-regex-range@^5.0.1:
2341 | version "5.0.1"
2342 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2343 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2344 | dependencies:
2345 | is-number "^7.0.0"
2346 |
2347 | twin.macro@^3.1.0:
2348 | version "3.1.0"
2349 | resolved "https://registry.yarnpkg.com/twin.macro/-/twin.macro-3.1.0.tgz#2056a83f7e4043c03587e664477e92feefc8df0e"
2350 | integrity sha512-7DSR/xdvSaAqhTM4JptBgI+1IzXQR5v+2hp0CDMmHMjlm44IBEewU8MeqPlXmFgQI06zpLyJMaKRbJu96drAJw==
2351 | dependencies:
2352 | "@babel/template" "^7.18.10"
2353 | babel-plugin-macros "^3.1.0"
2354 | chalk "4.1.2"
2355 | lodash.get "^4.4.2"
2356 | lodash.merge "^4.6.2"
2357 | postcss-selector-parser "^6.0.10"
2358 |
2359 | type@^1.0.1:
2360 | version "1.2.0"
2361 | resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
2362 | integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
2363 |
2364 | type@^2.7.2:
2365 | version "2.7.2"
2366 | resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
2367 | integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
2368 |
2369 | typescript@^4.9.5:
2370 | version "4.9.5"
2371 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
2372 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
2373 |
2374 | uc.micro@^1.0.1, uc.micro@^1.0.5:
2375 | version "1.0.6"
2376 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
2377 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
2378 |
2379 | unplugin-icons@^0.15.3:
2380 | version "0.15.3"
2381 | resolved "https://registry.yarnpkg.com/unplugin-icons/-/unplugin-icons-0.15.3.tgz#0d7d0cbcd6c420c2638d6a95f9929e75e66f86e6"
2382 | integrity sha512-YWgJqv5AahrokeOnta8uX/m1damZA6Rf6zPClgHg2Fa/45iyOe3Lj+Wn/Ba+CSsq9yBffn17YfKfJNyWCNZPvw==
2383 | dependencies:
2384 | "@antfu/install-pkg" "^0.1.1"
2385 | "@antfu/utils" "^0.7.2"
2386 | "@iconify/utils" "^2.1.2"
2387 | debug "^4.3.4"
2388 | kolorist "^1.7.0"
2389 | local-pkg "^0.4.3"
2390 | unplugin "^1.0.1"
2391 |
2392 | unplugin@^1.0.1:
2393 | version "1.1.0"
2394 | resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.1.0.tgz#96a14aa52d7637a56a88dec6baf4a73902f2db87"
2395 | integrity sha512-I8obQ8Rs/hnkxokRV6g8JKOQFgYNnTd9DL58vcSt5IJ9AkK8wbrtsnzD5hi4BJlvcY536JzfEXj9L6h7j559/A==
2396 | dependencies:
2397 | acorn "^8.8.2"
2398 | chokidar "^3.5.3"
2399 | webpack-sources "^3.2.3"
2400 | webpack-virtual-modules "^0.5.0"
2401 |
2402 | update-browserslist-db@^1.0.10:
2403 | version "1.0.10"
2404 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
2405 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
2406 | dependencies:
2407 | escalade "^3.1.1"
2408 | picocolors "^1.0.0"
2409 |
2410 | util-deprecate@^1.0.2:
2411 | version "1.0.2"
2412 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2413 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
2414 |
2415 | vite@^4.1.4:
2416 | version "4.1.4"
2417 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.4.tgz#170d93bcff97e0ebc09764c053eebe130bfe6ca0"
2418 | integrity sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==
2419 | dependencies:
2420 | esbuild "^0.16.14"
2421 | postcss "^8.4.21"
2422 | resolve "^1.22.1"
2423 | rollup "^3.10.0"
2424 | optionalDependencies:
2425 | fsevents "~2.3.2"
2426 |
2427 | void-elements@3.1.0:
2428 | version "3.1.0"
2429 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
2430 | integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
2431 |
2432 | w3c-keyname@^2.2.4:
2433 | version "2.2.6"
2434 | resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f"
2435 | integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
2436 |
2437 | webpack-sources@^3.2.3:
2438 | version "3.2.3"
2439 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
2440 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
2441 |
2442 | webpack-virtual-modules@^0.5.0:
2443 | version "0.5.0"
2444 | resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c"
2445 | integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
2446 |
2447 | which@^2.0.1:
2448 | version "2.0.2"
2449 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2450 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2451 | dependencies:
2452 | isexe "^2.0.0"
2453 |
2454 | xtend@^4.0.2:
2455 | version "4.0.2"
2456 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
2457 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
2458 |
2459 | yallist@^3.0.2:
2460 | version "3.1.1"
2461 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
2462 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
2463 |
2464 | yaml@^1.10.0, yaml@^1.10.2:
2465 | version "1.10.2"
2466 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
2467 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
2468 |
2469 | yocto-queue@^0.1.0:
2470 | version "0.1.0"
2471 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2472 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2473 |
--------------------------------------------------------------------------------