From 916e97a2cce741fdf049051d01d97844241eb356 Mon Sep 17 00:00:00 2001 From: Nicolas Lee Date: Sun, 3 Nov 2024 20:11:09 -0800 Subject: [PATCH] Installed tailwind and rebuilt leaderboard page (#528) * installed tailwind and rebuilt leaderboard page * Use new sidebar * Change bonus points modal, integrate topbar --------- Co-authored-by: Jiong Yan Yap --- .../components/battlepass/battlepass-page.tsx | 171 ++------ .../battlepass/battlepass-points-bar.tsx | 57 +-- .../battlepass/battlepass-welcome-header.tsx | 33 -- .../bonus-points/bonus-points-item.tsx | 41 +- .../bonus-points/bonus-points-list.tsx | 64 +-- .../leaderboard/battlepass-leaderboard.tsx | 185 ++++----- .../components/nav/side-nav-button.tsx | 4 +- apps/dashboard/layouts/themeless-layout.tsx | 89 ++-- apps/dashboard/pages/styles.css | 4 + apps/dashboard/postcss.config.js | 10 + apps/dashboard/project.json | 3 +- apps/dashboard/tailwind.config.js | 14 + package.json | 3 + yarn.lock | 385 +++++++++++++++++- 14 files changed, 653 insertions(+), 410 deletions(-) delete mode 100644 apps/dashboard/components/battlepass/battlepass-welcome-header.tsx create mode 100644 apps/dashboard/postcss.config.js create mode 100644 apps/dashboard/tailwind.config.js diff --git a/apps/dashboard/components/battlepass/battlepass-page.tsx b/apps/dashboard/components/battlepass/battlepass-page.tsx index 23e010e2..16507eeb 100644 --- a/apps/dashboard/components/battlepass/battlepass-page.tsx +++ b/apps/dashboard/components/battlepass/battlepass-page.tsx @@ -1,28 +1,16 @@ -import { H3, Text } from '@hibiscus/ui'; -import { GlobalStyles } from '@hibiscus/styles'; -import { - GlobalStyle, - BodyTextSmall, - BodyText, - Heading, -} from '@hacksc/sctw-ui-kit'; +import { Text } from '@hibiscus/ui'; import { useBattlepassAPI } from '../../hooks/use-battlepass-api/use-battlepass-api'; import React, { useEffect, useState } from 'react'; -import styled from 'styled-components'; import BattlepassPointsBar from './battlepass-points-bar'; -import { BattlepassWelcomeHeader } from './battlepass-welcome-header'; import BattlepassLeaderboard from './leaderboard/battlepass-leaderboard'; import { BonusPointItem } from './bonus-points/types'; import BattlepassBonusPointsList from './bonus-points/bonus-points-list'; import useHibiscusUser from '../../hooks/use-hibiscus-user/use-hibiscus-user'; -import Image from 'next/image'; import { BattlepassProgress, BATTLEPASS_LEVEL_POINTS, calculateBattlepassProgress, } from '../../common/calculate-battlepass-progress'; -import { GlowSpan } from '@hibiscus/ui-kit-2023'; -import { Colors2023 } from '@hibiscus/styles'; function BattlepassPage() { const battlepassAPI = useBattlepassAPI(); @@ -61,127 +49,54 @@ function BattlepassPage() { }, []); return ( - - - - Your Points - {bpProg !== null && ( - {userPoints} PTS} - maxLabel={ - BATTLEPASS_LEVEL_POINTS[bpProg.level] < - BATTLEPASS_LEVEL_POINTS[3] ? ( - - Next level @{' '} - - {bpProg.nextLevel} PTS - - - ) : null - } - /> - )} - - - - - Leaderboard - - - - - - Bonus Points +
+ {/* content */} +
+ {/* left column */} +
+ {/* points bar */} +
+

Points

+ {bpProg !== null && ( + {userPoints + ' pts'}
+ } + maxLabel={ + BATTLEPASS_LEVEL_POINTS[bpProg.level] < + BATTLEPASS_LEVEL_POINTS[3] ? ( +
+ {'NEXT LEVEL @ '}{' '} + + {bpProg.nextLevel + ' pts'} + +
+ ) : null + } + /> + )} +
+ {/* bonus points activities */} +
+

Bonus Points

{bonusPointItems.loading ? ( Loading ) : ( )} - - - - +
+
+ {/* leaderboard */} +
+

Leaderboard

+ +
+
+ ); } export default BattlepassPage; - -const PreNextLevelText = styled(BodyTextSmall)` - color: #939393; - font-size: 15px; - font-style: normal; - font-weight: 400; - line-height: normal; -`; -const NextLevelTextSpan = styled.span` - color: var(--Redward, #ff514f); - text-align: center; - /* smaller red glow */ - text-shadow: 0px 0px 10px rgba(255, 94, 92, 0.5); - font-style: normal; - font-weight: 700; - line-height: normal; - letter-spacing: 0; - text-transform: uppercase; -`; - -const YellowPoints = styled(BodyTextSmall)` - color: var(--Arthurs-Sweater, #ecb400); - text-align: center; - /* smaller yellow glow */ - text-shadow: 0px 0px 10px #ffd13c; - font-size: 15px; - font-style: normal; - font-weight: 700; - line-height: normal; - letter-spacing: 0; - text-transform: uppercase; -`; - -const Wrapper = styled.div` - display: flex; - flex-direction: column; - gap: 2rem; - background-color: white; - padding-bottom: 50px; -`; - -const WidgetContainer = styled.div` - display: flex; - flex-direction: column; - gap: 10px; -`; - -const LeftColumnSecondSection = styled.div` - display: flex; - flex-direction: column; - flex: 1; -`; - -const RightColumnSecondSection = styled.div` - display: flex; - flex-direction: column; - flex: 1; -`; - -const SecondSection = styled.div` - display: flex; - - gap: 30px; - @media (max-width: 1024px) { - flex-direction: column; - } -`; - -const WidgetHeader = styled.p` - font-family: 'filson-pro', sans-serif; - color: var(--Redward, #ff514f); - font-size: 20px; - font-style: normal; - font-weight: 700; - line-height: normal; - letter-spacing: -1.25px; -`; diff --git a/apps/dashboard/components/battlepass/battlepass-points-bar.tsx b/apps/dashboard/components/battlepass/battlepass-points-bar.tsx index 0f39b7f4..0082c4fd 100644 --- a/apps/dashboard/components/battlepass/battlepass-points-bar.tsx +++ b/apps/dashboard/components/battlepass/battlepass-points-bar.tsx @@ -1,6 +1,4 @@ -import { Colors2023 } from '@hibiscus/styles'; import React from 'react'; -import styled from 'styled-components'; interface Props { rangeMinPoint: number; @@ -21,47 +19,22 @@ function BattlepassPointsBar(props: Props) { ); return ( - - - - - -
{props.minLabel}
-
{props.maxLabel}
-
-
+
+
+ {progress > 0 && ( +
+ )} +
+
+
+
{props.minLabel}
+
{props.maxLabel}
+
+
); } export default BattlepassPointsBar; - -const Container = styled.div` - width: 26rem; - max-width: 100%; -`; - -const BarBack = styled.div` - position: relative; - width: 100%; - height: 1.3rem; - border: 3px solid #ff514f; - border-radius: 100px; - box-shadow: 0px 0px 10px 0px #fe513980; -`; - -const BarFront = styled.div<{ progress: number }>` - position: absolute; - top: 0; - left: 0; - width: ${(props) => props.progress * 100}%; - height: 100%; - border-radius: inherit; - background-color: #ff514f; - text-shadow: 0px 0px 10px #ffffff; -`; - -const BottomDiv = styled.div` - margin-top: 8px; - display: flex; - justify-content: space-between; -`; diff --git a/apps/dashboard/components/battlepass/battlepass-welcome-header.tsx b/apps/dashboard/components/battlepass/battlepass-welcome-header.tsx deleted file mode 100644 index cab49b56..00000000 --- a/apps/dashboard/components/battlepass/battlepass-welcome-header.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Colors2023 } from '@hibiscus/styles'; -import { H1, Text } from '@hibiscus/ui'; - -import useHibiscusUser from '../../hooks/use-hibiscus-user/use-hibiscus-user'; - -export const BattlepassWelcomeHeader = () => { - const { user } = useHibiscusUser(); - return ( -
-
-

- Your Leaderboard -

- - Check your ranking on the leaderboard and win prizes! - -
-
- ); -}; diff --git a/apps/dashboard/components/battlepass/bonus-points/bonus-points-item.tsx b/apps/dashboard/components/battlepass/bonus-points/bonus-points-item.tsx index de8f2284..1b25c6b5 100644 --- a/apps/dashboard/components/battlepass/bonus-points/bonus-points-item.tsx +++ b/apps/dashboard/components/battlepass/bonus-points/bonus-points-item.tsx @@ -1,8 +1,4 @@ -import { H3, H4, Text } from '@hibiscus/ui'; -// import { Button } from '@hibiscus/ui-kit-2023'; -import { Button } from '@hacksc/sctw-ui-kit'; import React from 'react'; -import styled from 'styled-components'; import { BonusPointsStatus } from '../../../common/apis/battlepass/types'; import { BonusPointItem } from './types'; @@ -13,39 +9,22 @@ interface Props { function BonusPointsItem({ data, handleClick }: Props) { return ( - - - {data.points} pts -

{data.title}

-
-
- +
-
+
); } export default BonusPointsItem; - -const TextDiv = styled.div` - @media (max-width: 768px) { - width: 100%; - } -`; - -const Container = styled.div` - display: flex; - justify-content: space-between; - @media (max-width: 768px) { - flex-direction: column; - align-items: center; - } - padding: 10px; - gap: 10px; -`; diff --git a/apps/dashboard/components/battlepass/bonus-points/bonus-points-list.tsx b/apps/dashboard/components/battlepass/bonus-points/bonus-points-list.tsx index 1a061ec1..9873e44b 100644 --- a/apps/dashboard/components/battlepass/bonus-points/bonus-points-list.tsx +++ b/apps/dashboard/components/battlepass/bonus-points/bonus-points-list.tsx @@ -1,7 +1,6 @@ import { H3, Modal, Text, Link } from '@hibiscus/ui'; import { Button } from '@hacksc/sctw-ui-kit'; import React, { useState } from 'react'; -import styled from 'styled-components'; import { useBattlepassAPI } from '../../../hooks/use-battlepass-api/use-battlepass-api'; import useHibiscusUser from '../../../hooks/use-hibiscus-user/use-hibiscus-user'; import { GrayBox } from '../../gray-box/gray-box'; @@ -19,46 +18,51 @@ function BattlepassBonusPointsList({ items }: Props) { const { user } = useHibiscusUser(); return ( -
+
{ setOpen(false); }} > - -

{chosenBP?.title}

- - - POINTS - - : {chosenBP?.points} - - {chosenBP?.description} -
+
+

+ {chosenBP?.title} +

+
+

Points

+

{chosenBP?.points}

+
+
+

+ Description +

+

{chosenBP?.description}

+
+
- +
- +
- {items.map((item, i) => ( - { - setChosenBP(item); - setOpen(true); - await battlepassApi.setBonusPointPending(user.id, item.id); - }} - /> - ))} -
+
+ {items.map((item, i) => ( + { + setChosenBP(item); + setOpen(true); + await battlepassApi.setBonusPointPending(user.id, item.id); + }} + /> + ))} +
+
); } export default BattlepassBonusPointsList; - -const Div = styled(GrayBox)` - gap: 10px; -`; diff --git a/apps/dashboard/components/battlepass/leaderboard/battlepass-leaderboard.tsx b/apps/dashboard/components/battlepass/leaderboard/battlepass-leaderboard.tsx index 15957f5e..707d2f7b 100644 --- a/apps/dashboard/components/battlepass/leaderboard/battlepass-leaderboard.tsx +++ b/apps/dashboard/components/battlepass/leaderboard/battlepass-leaderboard.tsx @@ -100,36 +100,33 @@ function BattlepassLeaderboard() { }, []); return ( - +
{leaderboardResults.data.map((item) => ( - - {item.rank} -
- +
+

{item.rank}

+
+

{item.firstName} {item.lastName} - - {item.rank === 1 && } - {item.rank === 2 && } - {item.rank === 3 && } +

+ {item.rank === 1 && ( + + )} + {item.rank === 2 && ( + + )} + {item.rank === 3 && ( + + )}
- {item.points} pts - +

{item.points} pts

+
))} {!userRankLeaderboard.loading && ( - - - {userRankLeaderboard.data.rank} - +
+

{userRankLeaderboard.data.rank}

- - {user.firstName} {user.lastName} +

+ You {userRankLeaderboard.data.rank === 1 && ( )} @@ -139,14 +136,12 @@ function BattlepassLeaderboard() { {userRankLeaderboard.data.rank === 3 && ( )} - +

- - {userRankLeaderboard.data.points} pts - - +

{userRankLeaderboard.data.points} pts

+
)} - { setLeaderboardResults((prev) => ({ @@ -162,90 +157,64 @@ function BattlepassLeaderboard() { pageNumber: num, })); }} - /> - + /> */} +
); } export default BattlepassLeaderboard; -interface LeaderboardPageTabsProps { - totalPages: number; - onClickNext: (newPageNumber: number) => void; - onClickPrev: (newPageNumber: number) => void; -} - -const LeaderboardPageTabs = (props: LeaderboardPageTabsProps) => { - const [currentPageNum, setCPN] = useState(1); - const minPageNumber = 1; - - const handleClickPrev = () => { - if (currentPageNum === minPageNumber) return; - setCPN((prev) => prev - 1); - props.onClickPrev(currentPageNum - 1); - }; - - const handleClickNext = () => { - if (currentPageNum >= props.totalPages - 1) return; - setCPN((prev) => prev + 1); - props.onClickNext(currentPageNum + 1); - }; - - return ( - - - {currentPageNum} - - - ); -}; +// interface LeaderboardPageTabsProps { +// totalPages: number; +// onClickNext: (newPageNumber: number) => void; +// onClickPrev: (newPageNumber: number) => void; +// } -const GrayContainer = styled(GrayBox)` - gap: 20px; - padding: 30px; - border-radius: 10px; - border: 2px solid var(--Blue-Ivy, #002990); - background: var(--Blue-Ivy, #002990); - box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); -`; +// const LeaderboardPageTabs = (props: LeaderboardPageTabsProps) => { +// const [currentPageNum, setCPN] = useState(1); +// const minPageNumber = 1; -const Entry = styled.div` - display: flex; - justify-content: space-between; -`; +// const handleClickPrev = () => { +// if (currentPageNum === minPageNumber) return; +// setCPN((prev) => prev - 1); +// props.onClickPrev(currentPageNum - 1); +// }; -const CurrentUserEntry = styled(Entry)` - background-color: ${Colors2023.GRAY.SCHEMDIUM}; - padding: 10px; - border-radius: 5px; -`; +// const handleClickNext = () => { +// if (currentPageNum >= props.totalPages - 1) return; +// setCPN((prev) => prev + 1); +// props.onClickNext(currentPageNum + 1); +// }; -const LeaderboardTabContainer = styled.div` - display: flex; - justify-content: space-between; - width: 100%; -`; +// return ( +//
+// +// {currentPageNum} +// +//
+// ); +// }; diff --git a/apps/dashboard/components/nav/side-nav-button.tsx b/apps/dashboard/components/nav/side-nav-button.tsx index 47d3846d..4c94ce5b 100644 --- a/apps/dashboard/components/nav/side-nav-button.tsx +++ b/apps/dashboard/components/nav/side-nav-button.tsx @@ -2,7 +2,7 @@ import { Dispatch, SetStateAction } from 'react'; import styled from 'styled-components'; import { IconType } from 'react-icons'; import React from 'react'; -import { useRouter } from 'next/router' +import { useRouter } from 'next/router'; interface Props { name: string; @@ -23,7 +23,7 @@ const SideNavButton = ({ const handleClick = () => { setSelectedButton(name); - router.push(`/${router.pathname}/${url}`); + router.push(url); }; return ( diff --git a/apps/dashboard/layouts/themeless-layout.tsx b/apps/dashboard/layouts/themeless-layout.tsx index 8170d378..da13b5f5 100644 --- a/apps/dashboard/layouts/themeless-layout.tsx +++ b/apps/dashboard/layouts/themeless-layout.tsx @@ -10,6 +10,10 @@ import { HibiscusRole } from '@hibiscus/types'; import { Colors2023 } from '@hibiscus/styles'; import { useMediaQuery } from 'react-responsive'; import StyledTopNav from '../components/nav/top-nav'; +import SideNav from '../components/nav/side-nav2'; +import { MdOutlineCalendarViewMonth, MdStarOutline } from 'react-icons/md'; +import { FaRegUserCircle } from 'react-icons/fa'; +import { useRouter } from 'next/router'; export type ThemelessLayoutProps = React.PropsWithChildren; @@ -19,7 +23,7 @@ function ThemelessLayout({ children }: ThemelessLayoutProps) { const { user } = useHibiscusUser(); const color = useMemo(() => { if (user == null) return Colors.Yellow.ArthurSweater; - if (user.role === HibiscusRole.HACKER) return Colors.Yellow.ArthurSweater; + if (user.role === HibiscusRole.HACKER) return Colors.Red.Redward; if (user.role === HibiscusRole.SPONSOR) return Colors.Red.DonatedBlood; return Colors.Yellow.ArthurSweater; }, [user]); @@ -29,42 +33,63 @@ function ThemelessLayout({ children }: ThemelessLayoutProps) { if (user.role === HibiscusRole.SPONSOR) return Colors.Red.Redward; return Colors.Yellow.Yuhlow; }, [user]); + const navbarOptions = useMemo(() => { + if (user == null) return []; + if (user.role === HibiscusRole.HACKER) + return [ + { name: 'Events', url: '/events', image: MdOutlineCalendarViewMonth }, + { name: 'Leaderboard', url: '/leaderboard', image: MdStarOutline }, + { name: 'Profile', url: '/profile', image: FaRegUserCircle }, + ]; + return []; + }, [user]); + + const router = useRouter(); + const pageTitle = useMemo(() => { + const map = { + '/leaderboard': 'Leaderboard', + }; + return map[router.pathname] ?? ''; + }, [router]); - if (user == null) { + if (user == null || router == null) { return <>; } - return isSmallScreen ? ( - - - {children} - - ) : ( - - + return ( + + - - {user.tag} - - - {user.role} - - - - Log out of Hibiscus - - - +
+ + {user.tag} + + + {user.role} + + + + Log out of Hibiscus + + +

{pageTitle}

+
+
{children}
); + /* isSmallScreen ? ( + + + {children} + + ) : */ } export default ThemelessLayout; @@ -84,11 +109,11 @@ const Content = styled.div` height: 100%; min-height: 100vh; background-color: white; - border-radius: 30px 0 0 30px; + // border-radius: 30px 0 0 30px; - padding: 40px; + // padding: 40px; - gap: 20px; + // gap: 20px; flex-grow: 1; flex-shrink: 1; @@ -114,11 +139,13 @@ const RightUtilityContainer = styled.div` align-items: center; gap: 20px; margin-left: auto; + // padding: 40px 40px 0; `; const ChildrenWrapper = styled.div` height: 100%; max-height: 100%; + padding: 40px; `; const VerticalMainPageWrapper = styled.div` diff --git a/apps/dashboard/pages/styles.css b/apps/dashboard/pages/styles.css index 10bf3abe..f1a6416b 100644 --- a/apps/dashboard/pages/styles.css +++ b/apps/dashboard/pages/styles.css @@ -1,3 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + html { -webkit-text-size-adjust: 100%; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, diff --git a/apps/dashboard/postcss.config.js b/apps/dashboard/postcss.config.js new file mode 100644 index 00000000..cbdd9c22 --- /dev/null +++ b/apps/dashboard/postcss.config.js @@ -0,0 +1,10 @@ +const { join } = require('path'); + +module.exports = { + plugins: { + tailwindcss: { + config: join(__dirname, 'tailwind.config.js'), + }, + autoprefixer: {}, + }, +}; diff --git a/apps/dashboard/project.json b/apps/dashboard/project.json index f710aa2e..145a8b74 100644 --- a/apps/dashboard/project.json +++ b/apps/dashboard/project.json @@ -10,7 +10,8 @@ "defaultConfiguration": "production", "options": { "root": "apps/dashboard", - "outputPath": "dist/apps/dashboard" + "outputPath": "dist/apps/dashboard", + "postcssConfig": "apps/dashboard/postcss.config.js" }, "configurations": { "development": { diff --git a/apps/dashboard/tailwind.config.js b/apps/dashboard/tailwind.config.js new file mode 100644 index 00000000..04904858 --- /dev/null +++ b/apps/dashboard/tailwind.config.js @@ -0,0 +1,14 @@ +module.exports = { + content: ['apps/dashboard/{pages,components,layouts}/**/*.{js,jsx,ts,tsx}'], + theme: { + extend: { + colors: { + 'theme-red': '#FF6347', + 'theme-redward': '#FF514F', + 'theme-blue': '#429FEE', + 'theme-gray': '#777777', + }, + }, + }, + plugins: [], +}; diff --git a/package.json b/package.json index 9d718d28..9a4575d5 100644 --- a/package.json +++ b/package.json @@ -156,6 +156,7 @@ "@vanilla-extract/next-plugin": "^2.3.1", "@vitejs/plugin-react": "^3.0.0", "@vitest/ui": "^0.25.8", + "autoprefixer": "^10.4.20", "babel-jest": "28.1.1", "babel-loader": "8.1.0", "babel-plugin-styled-components": "^2.0.7", @@ -178,6 +179,7 @@ "jsdom": "~20.0.3", "miniflare": "^3.20230904.0", "nx": "15.4.1", + "postcss": "^8.4.47", "prettier": "^2.6.2", "react-test-renderer": "18.2.0", "sass": "1.55.0", @@ -187,6 +189,7 @@ "serverless-wsgi": "^3.0.1", "storybook-addon-next": "^1.6.6", "storybook-addon-swc": "^1.1.7", + "tailwindcss": "^3.4.14", "ts-jest": "28.0.5", "ts-loader": "^9.3.0", "ts-node": "10.9.1", diff --git a/yarn.lock b/yarn.lock index 8242d35e..80bd7419 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,6 +24,11 @@ cross-fetch "3.1.5" uuid "9.0.0" +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@2.2.0", "@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": version "2.2.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" @@ -4496,6 +4501,18 @@ resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" @@ -5926,6 +5943,11 @@ dependencies: esquery "^1.0.1" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.10" resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz" @@ -10076,6 +10098,11 @@ ansi-to-html@^0.6.11: dependencies: entities "^2.0.0" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" @@ -10169,6 +10196,11 @@ arg@^4.1.0: resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7, argparse@~1.0.9: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" @@ -10455,6 +10487,18 @@ autoprefixer@^10.4.2, autoprefixer@^10.4.9: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +autoprefixer@^10.4.20: + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + dependencies: + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.1" + postcss-value-parser "^4.2.0" + autoprefixer@^9.8.6: version "9.8.8" resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" @@ -11260,6 +11304,16 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4 node-releases "^2.0.13" update-browserslist-db "^1.0.13" +browserslist@^4.23.3: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" @@ -11555,7 +11609,7 @@ camel-case@^4.1.1, camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase-css@2.0.1: +camelcase-css@2.0.1, camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== @@ -11613,6 +11667,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001299, can resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz" integrity sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA== +caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + capnp-ts@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/capnp-ts/-/capnp-ts-0.7.0.tgz#16fd8e76b667d002af8fcf4bf92bf15d1a7b54a9" @@ -12194,7 +12253,7 @@ commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1: resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1, commander@~4.1.1: +commander@^4.0.0, commander@^4.1.1, commander@~4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -13491,6 +13550,11 @@ diagnostics@^1.1.1: enabled "1.0.x" kuler "1.0.x" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" @@ -13539,6 +13603,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" @@ -13815,6 +13884,11 @@ electron-to-chromium@^1.4.526: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz" integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== +electron-to-chromium@^1.5.28: + version "1.5.41" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz#eae1ba6c49a1a61d84cf8263351d3513b2bcc534" + integrity sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" @@ -14351,6 +14425,11 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" @@ -15033,6 +15112,17 @@ fast-glob@^3.2.12, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-parse@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" @@ -15375,6 +15465,14 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" @@ -15535,6 +15633,11 @@ fraction.js@^4.2.0: resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" @@ -15684,6 +15787,11 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.0, function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" @@ -15896,7 +16004,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -15956,6 +16064,18 @@ glob@7.2.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glo once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^7.2.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" @@ -16327,6 +16447,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" @@ -17189,6 +17316,13 @@ is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.4.0, is-core-mo dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" @@ -17707,6 +17841,15 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.8.5" resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" @@ -18627,6 +18770,11 @@ jest@28.1.1: import-local "^3.0.2" jest-cli "^28.1.1" +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + jju@~1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz" @@ -19254,6 +19402,16 @@ lilconfig@^2.0.3, lilconfig@^2.0.5: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" @@ -19627,6 +19785,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -20176,6 +20339,13 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.7" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" @@ -20219,6 +20389,11 @@ minipass@^4.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-4.0.1.tgz" integrity sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -20417,6 +20592,15 @@ mute-stream@0.0.8: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + namespace-emitter@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz" @@ -20449,6 +20633,11 @@ nanoid@^3.1.30, nanoid@^3.3.1, nanoid@^3.3.3, nanoid@^3.3.4, nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + nanoid@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/nanoid/-/nanoid-4.0.0.tgz" @@ -20713,6 +20902,11 @@ node-releases@^2.0.13: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + node-schedule@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz" @@ -21429,6 +21623,11 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + package-json@^6.3.0: version "6.5.0" resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" @@ -21657,6 +21856,14 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-strip-sep@^1.0.17: version "1.0.17" resolved "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.17.tgz" @@ -21746,6 +21953,11 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" @@ -22028,6 +22240,15 @@ postcss-import@14.0.2: read-cache "^1.0.0" resolve "^1.1.7" +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + postcss-import@~14.1.0: version "14.1.0" resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" @@ -22042,6 +22263,13 @@ postcss-initial@^4.0.1: resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + postcss-lab-function@^4.0.3: version "4.2.1" resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" @@ -22058,6 +22286,14 @@ postcss-load-config@^3.0.0: lilconfig "^2.0.5" yaml "^1.10.2" +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + postcss-loader@6.2.1, postcss-loader@^6.1.1: version "6.2.1" resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" @@ -22222,6 +22458,13 @@ postcss-modules@^4.0.0: postcss-modules-values "^4.0.0" string-hash "^1.1.1" +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + postcss-nesting@^10.1.2: version "10.2.0" resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" @@ -22401,6 +22644,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selecto cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-svgo@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" @@ -22465,6 +22716,15 @@ postcss@^8.4.19: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.23, postcss@^8.4.47: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + postcss@^8.4.27: version "8.4.30" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz" @@ -23642,6 +23902,15 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3: version "2.0.0-next.4" resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" @@ -24642,6 +24911,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" @@ -24883,6 +25157,11 @@ source-list-map@^2.0.0: resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-loader@3.0.1, source-map-loader@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz" @@ -25252,6 +25531,15 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" @@ -25344,6 +25632,13 @@ string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" @@ -25612,6 +25907,19 @@ stylus@^0.55.0: semver "^6.3.0" source-map "^0.7.3" +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supabase@^1.45.1: version "1.45.1" resolved "https://registry.npmjs.org/supabase/-/supabase-1.45.1.tgz" @@ -25758,6 +26066,34 @@ tabtab@^3.0.2: mkdirp "^0.5.1" untildify "^3.0.3" +tailwindcss@^3.4.14: + version "3.4.14" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.14.tgz#6dd23a7f54ec197b19159e91e3bb1e55e7aa73ac" + integrity sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" @@ -25944,6 +26280,20 @@ text-table@0.2.0, text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + throat@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" @@ -26207,6 +26557,11 @@ ts-dedent@2.2.0, ts-dedent@^2.0.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + ts-jest@28.0.5: version "28.0.5" resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.5.tgz" @@ -26789,6 +27144,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + uppercamelcase@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/uppercamelcase/-/uppercamelcase-3.0.0.tgz" @@ -27810,6 +28173,15 @@ wrangler@^3.6.0: optionalDependencies: fsevents "~2.3.2" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -27828,7 +28200,7 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.0.1: +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== @@ -27992,6 +28364,11 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.3.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3" + integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ== + yamljs@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz"