From d3cb7b7effd52d2180666bd5ed564ace6e8474af Mon Sep 17 00:00:00 2001 From: Nasreddine Bac Ali Date: Wed, 2 Mar 2022 20:33:56 +0100 Subject: [PATCH] feat: add Alert component --- package.json | 3 + public/favicon.png | Bin 0 -> 2528 bytes public/index.html | 2 +- src/Dashboard.tsx | 33 +++--- src/components/Alert.tsx | 73 ++++++++++++ src/components/index.ts | 1 + src/index.css | 11 +- src/index.tsx | 6 +- src/pages/Alerts.tsx | 241 +++++++++++++++++++++++++++++++++++++++ yarn.lock | 178 ++++++++++++++++++++++++++++- 10 files changed, 524 insertions(+), 24 deletions(-) create mode 100644 public/favicon.png create mode 100644 src/components/Alert.tsx create mode 100644 src/pages/Alerts.tsx diff --git a/package.json b/package.json index b7422a1be..8180f1a42 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "@types/node": "^16.11.26", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.11", + "@types/react-syntax-highlighter": "^13.5.2", "@typescript-eslint/eslint-plugin": "^5.10.1", "@typescript-eslint/parser": "^5.10.1", "autoprefixer": "^10.4.2", @@ -62,7 +63,9 @@ "prettier": "^2.5.1", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-router-dom": "^6.2.2", "react-scripts": "^5.0.0", + "react-syntax-highlighter": "^15.4.5", "standard-version": "^9.3.2", "tailwindcss": "^3.0.23", "typescript": "^4.5.5" diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..918fd4a0c7983607e245e17c57f6fe7f32c69f61 GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index 45be2a4bf..084c1c6eb 100644 --- a/public/index.html +++ b/public/index.html @@ -2,7 +2,7 @@ - + { const [collapsed, setCollapsed] = useState(false); @@ -12,44 +14,41 @@ export const Dashboard: FC = () => { ), title: 'Dashboard', - href: '#', + href: '/', label: '1', }, { - dropdown: true, + dropdown: false, icon: ( ), - title: 'Dropdown', - items: [ - { - href: '#', - title: 'First item', - }, - { - href: '#', - title: 'Second item', - label: '2', - }, - ], + title: 'Alerts', + href: '/alerts', }, ], ]; return ( -
+
setCollapsed(!collapsed)} /> - Flowbite React Components + + Flowbite React Components +
-
+
+
+ + } /> + +
); diff --git a/src/components/Alert.tsx b/src/components/Alert.tsx new file mode 100644 index 000000000..d4688c9fe --- /dev/null +++ b/src/components/Alert.tsx @@ -0,0 +1,73 @@ +import { ComponentProps, FC, ReactNode } from 'react'; +import classNames from 'classnames'; +import { XIcon } from '@heroicons/react/solid'; + +export type AlertProps = { + color?: 'blue' | 'red' | 'green' | 'yellow' | 'gray'; + Icon?: FC>; + rounded?: boolean; + withBorderAccent?: boolean; + additionalContent?: ReactNode; + onDismiss?: () => void; +}; + +export const Alert: FC = ({ + children, + color = 'blue', + Icon, + rounded = true, + withBorderAccent, + additionalContent, + onDismiss, +}) => { + return ( +
+
+ {Icon && } +
{children}
+ {onDismiss && ( + + )} +
+ {additionalContent &&
{additionalContent}
} +
+ ); +}; diff --git a/src/components/index.ts b/src/components/index.ts index 0aa76f641..6eece8e18 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,3 +1,4 @@ +export * from './Alert'; export * from './Navbar'; export * from './Sidebar'; export * from './DarkThemeToggle'; diff --git a/src/index.css b/src/index.css index b5c61c956..0c2861199 100644 --- a/src/index.css +++ b/src/index.css @@ -1,3 +1,12 @@ -@tailwind base; +@import "~flowbite"; + @tailwind components; @tailwind utilities; + +::-webkit-scrollbar { + @apply w-1 h-1 bg-gray-100 dark:bg-gray-900; +} + +::-webkit-scrollbar-thumb { + @apply bg-gray-300 hover:bg-gray-400 dark:border-gray-900 dark:bg-gray-700 dark:hover:bg-gray-600; +} diff --git a/src/index.tsx b/src/index.tsx index d4f2a7c17..438ae9dd5 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,13 +1,13 @@ -import { StrictMode } from 'react'; import { render } from 'react-dom'; import { Dashboard } from './Dashboard'; +import { BrowserRouter } from 'react-router-dom'; import './index.css'; import 'flowbite'; render( - + - , + , document.getElementById('root'), ); diff --git a/src/pages/Alerts.tsx b/src/pages/Alerts.tsx new file mode 100644 index 000000000..7739a956e --- /dev/null +++ b/src/pages/Alerts.tsx @@ -0,0 +1,241 @@ +import { FC } from 'react'; +import { EyeIcon, InformationCircleIcon } from '@heroicons/react/solid'; +import { PrismLight as SyntaxHighlighter } from 'react-syntax-highlighter'; +import { dracula } from 'react-syntax-highlighter/dist/esm/styles/prism'; +import tsx from 'react-syntax-highlighter/dist/esm/languages/prism/tsx'; + +SyntaxHighlighter.registerLanguage('tsx', tsx); + +import { Alert } from '../components'; + +export const Alerts: FC = () => { + const alertText = ( + <> + Info alert! Change a few things up + and try submitting again. + + ); + + return ( +
+
+ Default alert +
+ {alertText} + + {` + + Info alert! Change a few things... +`.trim()} + +
+
+
+ Alerts with icon +
+ + {alertText} + + + {` + + Info alert! Change a few things... +`.trim()} + +
+
+
+ Dismissible alerts +
+ alert('Alert dismissed!')}> + {alertText} + + + {` + alert('Alert dismissed!')}> + Info alert! Change a few things... +`.trim()} + +
+
+
+ Rounded +
+ + {alertText} + + + {` + + Info alert! Change a few things... +`.trim()} + +
+
+
+ Border accent +
+ + {alertText} + + + {` + + Info alert! Change a few things... +`.trim()} + +
+
+
+ Additional content +
+ +
+ More info about this info alert goes here. This example text + is going to run a bit longer so that you can see how spacing + within an alert works with this kind of content. +
+
+ + +
+ + } + Icon={InformationCircleIcon} + > +

+ This is a info alert +

+
+ + {` + +
+ More info about this info alert goes here. This example text + is going to run a bit longer so that you can see how spacing + within an alert works with this kind of content. +
+
+ + +
+ + } + Icon={InformationCircleIcon} +> +

+ This is a info alert +

+
`.trim()} +
+
+
+
+ All options +
+ alert('Alert dismissed!')} + additionalContent={ + <> +
+ More info about this info alert goes here. This example text + is going to run a bit longer so that you can see how spacing + within an alert works with this kind of content. +
+
+ + +
+ + } + Icon={InformationCircleIcon} + > +

+ This is a info alert +

+
+ + {` + alert('Alert dismissed!')} + additionalContent={ + <> +
+ More info about this info alert goes here. This example text + is going to run a bit longer so that you can see how spacing + within an alert works with this kind of content. +
+
+ + +
+ + } + Icon={InformationCircleIcon} +> +

+ This is a info alert +

+
`.trim()} +
+
+
+
+ ); +}; diff --git a/yarn.lock b/yarn.lock index f4bfb3bd9..bc589f4a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1154,7 +1154,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.17.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== @@ -2129,6 +2129,13 @@ dependencies: "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" @@ -2240,6 +2247,13 @@ dependencies: "@types/react" "*" +"@types/react-syntax-highlighter@^13.5.2": + version "13.5.2" + resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-13.5.2.tgz#357cc03581dc434c57c3b31f70e0eecdbf7b3ab0" + integrity sha512-sRZoKZBGKaE7CzMvTTgz+0x/aVR58ZYUTfB7HN76vC+yQnvo1FWtzNARBt0fGqcLGEVakEzMu/CtPzssmanu8Q== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^17.0.39": version "17.0.39" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" @@ -2305,6 +2319,11 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== +"@types/unist@*": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@types/ws@^8.2.2": version "8.5.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.1.tgz#79136958b48bc73d5165f286707ceb9f04471599" @@ -3283,6 +3302,21 @@ char-regex@^2.0.0: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + charcodes@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" @@ -3409,6 +3443,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -4924,6 +4963,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + faye-websocket@^0.11.3: version "0.11.4" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" @@ -5086,6 +5132,11 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -5389,11 +5440,39 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +history@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" @@ -5669,6 +5748,19 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -5723,6 +5815,11 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -5750,6 +5847,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6683,6 +6785,14 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" + integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== + dependencies: + fault "^1.0.0" + highlight.js "~10.7.0" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7259,6 +7369,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -7974,6 +8096,11 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" +prismjs@^1.25.0, prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -8008,6 +8135,13 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +property-information@^5.0.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -8151,6 +8285,21 @@ react-refresh@^0.11.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-router-dom@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442" + integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ== + dependencies: + history "^5.2.0" + react-router "6.2.2" + +react-router@6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249" + integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ== + dependencies: + history "^5.2.0" + react-scripts@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.0.tgz#6547a6d7f8b64364ef95273767466cc577cb4b60" @@ -8206,6 +8355,17 @@ react-scripts@^5.0.0: optionalDependencies: fsevents "^2.3.2" +react-syntax-highlighter@^15.4.5: + version "15.4.5" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz#db900d411d32a65c8e90c39cd64555bf463e712e" + integrity sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ== + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "^10.4.1" + lowlight "^1.17.0" + prismjs "^1.25.0" + refractor "^3.2.0" + react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -8294,6 +8454,15 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +refractor@^3.2.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== + dependencies: + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.27.0" + regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -8800,6 +8969,11 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -10048,7 +10222,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.2, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==