diff --git a/.gitignore b/.gitignore index dbbdfa7af..5daa8f4f6 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,6 @@ _testmain.go # Without this, the *.[568vq] above ignores this folder. !**/graphrbac/1.6 - .DS_Store .idea .vscode @@ -59,7 +58,6 @@ tags *.ipr *.iml - # dependencies ui/node_modules ui/bower_components diff --git a/ui/package.json b/ui/package.json index 61d169165..59e65c4fc 100644 --- a/ui/package.json +++ b/ui/package.json @@ -29,7 +29,7 @@ "@fontsource/dm-sans": "^5.0.13", "@mui/icons-material": "^5.14.9", "@mui/material": "^5.4.0", - "luxon": "^2.5.2", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.2.1", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -37,13 +37,13 @@ }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^4.2.1", - "@types/luxon": "^2.0.9", - "@types/node": "^17.0.14", + "@types/lodash": "^4.17.1", + "@types/node": "^20.12.11", "@types/react": "^17.0.34", "@types/react-dom": "^17.0.11", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.59.11", - "esbuild": "^0.13.12", + "esbuild": "^0.21.1", "eslint": "7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-react": "^7.28.0", diff --git a/ui/scripts/esbuild.ts b/ui/scripts/esbuild.ts index 2ac470346..fd2093953 100644 --- a/ui/scripts/esbuild.ts +++ b/ui/scripts/esbuild.ts @@ -1,16 +1,28 @@ -import { build } from "esbuild"; +/// +import { BuildOptions, build, context } from "esbuild"; -build({ - entryPoints: ["src/index.tsx"], - bundle: true, - outfile: "dist/index.js", - sourcemap: "inline", - watch: process.argv.includes("--watch"), - minify: !process.argv.includes("--watch"), - logLevel: "info", - loader: { - ".svg": "dataurl", - ".woff": "dataurl", - ".woff2": "dataurl", - }, -}); +async function run() { + const watching = process.argv.includes("--watch"); + + const cfg: BuildOptions = { + entryPoints: ["src/index.tsx"], + bundle: true, + outdir: "dist", + sourcemap: watching ? "inline" : false, + minify: !watching, + logLevel: "info", + loader: { + ".svg": "dataurl", + ".woff": "dataurl", + ".woff2": "dataurl", + }, + }; + + if (watching) { + await (await context(cfg)).watch(); + } else { + await build(cfg); + } +} + +run(); diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 48d645910..ee315e1b4 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,6 +1,4 @@ -import Box from "@mui/material/Box"; -import CssBaseline from "@mui/material/CssBaseline"; -import { ThemeProvider } from "@mui/material/styles"; +import { Box, CssBaseline, ThemeProvider } from "@mui/material"; import React, { FC, useLayoutEffect } from "react"; import ErrorPage from "./components/ErrorPage"; diff --git a/ui/src/components/AlertDialog.tsx b/ui/src/components/AlertDialog.tsx index a263b94da..0654fb6bb 100644 --- a/ui/src/components/AlertDialog.tsx +++ b/ui/src/components/AlertDialog.tsx @@ -1,8 +1,12 @@ -import Alert, { AlertColor } from "@mui/material/Alert"; -import Dialog, { DialogProps } from "@mui/material/Dialog"; -import DialogActions from "@mui/material/DialogActions"; -import DialogContent from "@mui/material/DialogContent"; -import DialogTitle from "@mui/material/DialogTitle"; +import { + Alert, + AlertColor, + Dialog, + DialogActions, + DialogContent, + DialogProps, + DialogTitle, +} from "@mui/material"; import React, { FC } from "react"; export type AlertDialogProps = DialogProps & { diff --git a/ui/src/components/Avatar.tsx b/ui/src/components/Avatar.tsx index f47928e24..222e2c811 100644 --- a/ui/src/components/Avatar.tsx +++ b/ui/src/components/Avatar.tsx @@ -1,5 +1,5 @@ -import MuiAvatar from "@mui/material/Avatar"; -import { isArray } from "lodash"; +import { Avatar as MuiAvatar } from "@mui/material"; +import isArray from "lodash/isArray"; import React from "react"; import { User } from "react-feather"; diff --git a/ui/src/components/ClaimRow.tsx b/ui/src/components/ClaimRow.tsx index 0af5a55f1..8f4d0504a 100644 --- a/ui/src/components/ClaimRow.tsx +++ b/ui/src/components/ClaimRow.tsx @@ -1,6 +1,6 @@ -import TableCell from "@mui/material/TableCell"; -import TableRow from "@mui/material/TableRow"; -import { isArray, startCase } from "lodash"; +import { TableCell, TableRow } from "@mui/material"; +import isArray from "lodash/isArray"; +import startCase from "lodash/startCase"; import React, { FC } from "react"; import ClaimValue from "./ClaimValue"; diff --git a/ui/src/components/ClaimValue.tsx b/ui/src/components/ClaimValue.tsx index a0d03b46e..ea7cb839b 100644 --- a/ui/src/components/ClaimValue.tsx +++ b/ui/src/components/ClaimValue.tsx @@ -1,7 +1,7 @@ -import IDField from "./IDField"; -import { DateTime } from "luxon"; import React, { FC } from "react"; +import IDField from "./IDField"; + const unixSecondTimestampFields = new Set(["exp", "iat", "nbf", "auth_time"]); const idFields = new Set(["groups", "jti", "oid", "tid", "wids"]); @@ -12,7 +12,7 @@ type ClaimValueProps = { }; const ClaimValue: FC = ({ claimKey, claimValue }) => { if (unixSecondTimestampFields.has(claimKey)) { - return <>{DateTime.fromMillis((claimValue as number) * 1000).toISO()}; + return <>{new Date((claimValue as number) * 1000).toISOString()}; } if (idFields.has(claimKey)) { diff --git a/ui/src/components/DeviceCredentialsTable.tsx b/ui/src/components/DeviceCredentialsTable.tsx index 3f01aaafa..d08e181f2 100644 --- a/ui/src/components/DeviceCredentialsTable.tsx +++ b/ui/src/components/DeviceCredentialsTable.tsx @@ -1,14 +1,17 @@ -import IDField from "./IDField"; -import Alert from "@mui/material/Alert"; -import Button from "@mui/material/Button"; -import Table from "@mui/material/Table"; -import TableBody from "@mui/material/TableBody"; -import TableCell from "@mui/material/TableCell"; -import TableContainer from "@mui/material/TableContainer"; -import TableHead from "@mui/material/TableHead"; -import TableRow from "@mui/material/TableRow"; +import { + Alert, + Button, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, +} from "@mui/material"; import React, { FC } from "react"; +import IDField from "./IDField"; + export type DeviceCredentialsTableProps = { csrfToken: string; ids: string[]; @@ -17,7 +20,7 @@ export type DeviceCredentialsTableProps = { export const DeviceCredentialsTable: FC = ({ csrfToken, ids, - webAuthnUrl + webAuthnUrl, }) => { return ( diff --git a/ui/src/components/ErrorPage.tsx b/ui/src/components/ErrorPage.tsx index d8164162a..e6613cc1b 100644 --- a/ui/src/components/ErrorPage.tsx +++ b/ui/src/components/ErrorPage.tsx @@ -1,14 +1,17 @@ -import { ListItemProps, TableCell } from "@mui/material"; -import Alert from "@mui/material/Alert"; -import AlertTitle from "@mui/material/AlertTitle"; -import Box from "@mui/material/Box"; -import Container from "@mui/material/Container"; -import Paper from "@mui/material/Paper"; -import Stack from "@mui/material/Stack"; -import Table from "@mui/material/Table"; -import TableHead from "@mui/material/TableHead"; -import TableRow from "@mui/material/TableRow"; -import Typography from "@mui/material/Typography"; +import { + Alert, + AlertTitle, + Box, + Container, + ListItemProps, + Paper, + Stack, + Table, + TableCell, + TableHead, + TableRow, + Typography, +} from "@mui/material"; import Markdown from "markdown-to-jsx"; import React, { FC } from "react"; import { CheckCircle, MinusCircle, XCircle } from "react-feather"; @@ -20,7 +23,7 @@ type PolicyEvaluationTraceDetailsProps = { trace: PolicyEvaluationTrace; } & ListItemProps; const PolicyEvaluationTraceDetails: FC = ({ - trace + trace, }) => { return ( @@ -58,10 +61,11 @@ export const ErrorPage: FC = ({ data }) => { - = 300 ? "error" : "success"}> + = 300 ? "error" : "success"} + > - {status}{" "} - {data?.statusText || "Internal Server Error"} + {status} {data?.statusText || "Internal Server Error"} {data?.description ? ( {data.description} diff --git a/ui/src/components/ExperimentalIcon.tsx b/ui/src/components/ExperimentalIcon.tsx index 458d51e7c..a83b49286 100644 --- a/ui/src/components/ExperimentalIcon.tsx +++ b/ui/src/components/ExperimentalIcon.tsx @@ -6,7 +6,7 @@ const ExperimentalIcon = createSvgIcon( diff --git a/ui/src/components/Footer.tsx b/ui/src/components/Footer.tsx index a738768ba..5b5522297 100644 --- a/ui/src/components/Footer.tsx +++ b/ui/src/components/Footer.tsx @@ -1,6 +1,4 @@ -import AppBar from "@mui/material/AppBar"; -import Box from "@mui/material/Box"; -import Stack from "@mui/material/Stack"; +import { AppBar, Box, Stack } from "@mui/material"; import React, { FC } from "react"; import { FooterLink } from "./FooterLink"; diff --git a/ui/src/components/FooterLink.tsx b/ui/src/components/FooterLink.tsx index 15d3cf2d8..ce51c4ff5 100644 --- a/ui/src/components/FooterLink.tsx +++ b/ui/src/components/FooterLink.tsx @@ -1,9 +1,9 @@ -import * as React from 'react'; -import { styled } from '@mui/system'; -import {Link} from "@mui/material"; +import { Link } from "@mui/material"; +import { styled } from "@mui/system"; +import * as React from "react"; export const FooterLink = styled(Link)(({ theme }) => ({ - fontSize: '1.25rem', + fontSize: "1.25rem", fontWeight: `bold`, color: theme.palette.background.default, })); diff --git a/ui/src/components/GroupDetails.tsx b/ui/src/components/GroupDetails.tsx index 7a93cbb34..53fd7af92 100644 --- a/ui/src/components/GroupDetails.tsx +++ b/ui/src/components/GroupDetails.tsx @@ -1,10 +1,12 @@ -import Alert from "@mui/material/Alert"; -import Table from "@mui/material/Table"; -import TableBody from "@mui/material/TableBody"; -import TableCell from "@mui/material/TableCell"; -import TableContainer from "@mui/material/TableContainer"; -import TableHead from "@mui/material/TableHead"; -import TableRow from "@mui/material/TableRow"; +import { + Alert, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, +} from "@mui/material"; import React, { FC } from "react"; import { Group } from "../types"; diff --git a/ui/src/components/Header.tsx b/ui/src/components/Header.tsx index e562fb85a..2320bbbc9 100644 --- a/ui/src/components/Header.tsx +++ b/ui/src/components/Header.tsx @@ -1,16 +1,16 @@ import { + AppBar, + Box, Drawer, IconButton, Menu, MenuItem, + Toolbar, + styled, useMediaQuery, + useTheme, } from "@mui/material"; -import AppBar from "@mui/material/AppBar"; -import Box from "@mui/material/Box"; -import Toolbar from "@mui/material/Toolbar"; -import { useTheme } from "@mui/material/styles"; -import styled from "@mui/material/styles/styled"; -import { get } from "lodash"; +import get from "lodash/get"; import React, { FC, useState } from "react"; import { ChevronLeft, ChevronRight, Menu as MenuIcon } from "react-feather"; diff --git a/ui/src/components/HeroSection.tsx b/ui/src/components/HeroSection.tsx index c7178c4cc..edd267145 100644 --- a/ui/src/components/HeroSection.tsx +++ b/ui/src/components/HeroSection.tsx @@ -1,6 +1,4 @@ -import Paper from "@mui/material/Paper"; -import Stack from "@mui/material/Stack"; -import Typography from "@mui/material/Typography"; +import { Paper, Stack, Typography } from "@mui/material"; import React, { FC } from "react"; export type HeroSectionProps = { diff --git a/ui/src/components/IDField.tsx b/ui/src/components/IDField.tsx index ad56ca0c7..6ec9b33d0 100644 --- a/ui/src/components/IDField.tsx +++ b/ui/src/components/IDField.tsx @@ -1,4 +1,4 @@ -import Box from "@mui/material/Box"; +import { Box } from "@mui/material"; import React, { FC } from "react"; export type IDFieldProps = { diff --git a/ui/src/components/JwtIcon.tsx b/ui/src/components/JwtIcon.tsx index dd64931b7..236a87d50 100644 --- a/ui/src/components/JwtIcon.tsx +++ b/ui/src/components/JwtIcon.tsx @@ -13,7 +13,7 @@ const JwtIcon = createSvgIcon( stroke: "none", fillRule: "evenodd", fill: "#fff", - fillOpacity: 1 + fillOpacity: 1, }} d="M8.586 4.04 8.57.042H6.34l.015 3.996L7.47 5.57ZM6.355 10.887v4.008h2.23v-4.008L7.47 9.355Zm0 0" /> @@ -22,7 +22,7 @@ const JwtIcon = createSvgIcon( stroke: "none", fillRule: "evenodd", fill: "#00f2e6", - fillOpacity: 1 + fillOpacity: 1, }} d="m8.586 10.887 2.344 3.238 1.797-1.309-2.344-3.238L8.586 9ZM6.355 4.04 3.996.8 2.2 2.11l2.344 3.238 1.812.578Zm0 0" /> @@ -31,7 +31,7 @@ const JwtIcon = createSvgIcon( stroke: "none", fillRule: "evenodd", fill: "#00b9f1", - fillOpacity: 1 + fillOpacity: 1, }} d="m4.543 5.348-3.8-1.235-.684 2.11 3.804 1.246 1.797-.594ZM9.266 8.05l1.117 1.528 3.8 1.235.684-2.11-3.805-1.234Zm0 0" /> @@ -40,7 +40,7 @@ const JwtIcon = createSvgIcon( stroke: "none", fillRule: "evenodd", fill: "#d63aff", - fillOpacity: 1 + fillOpacity: 1, }} d="m11.063 7.469 3.804-1.246-.683-2.11-3.801 1.235-1.117 1.527ZM3.863 7.469.06 8.703l.683 2.11 3.801-1.235L5.66 8.051Zm0 0" /> @@ -49,7 +49,7 @@ const JwtIcon = createSvgIcon( stroke: "none", fillRule: "evenodd", fill: "#fb015b", - fillOpacity: 1 + fillOpacity: 1, }} d="m4.543 9.578-2.344 3.238 1.797 1.309 2.36-3.238V9ZM10.383 5.348l2.344-3.239L10.93.801 8.586 4.039v1.887Zm0 0" /> diff --git a/ui/src/components/Logo.tsx b/ui/src/components/Logo.tsx index 295c851e9..2360644e2 100644 --- a/ui/src/components/Logo.tsx +++ b/ui/src/components/Logo.tsx @@ -1,7 +1,6 @@ -import React from "react"; -import type { FC } from "react"; +import React, { FC } from "react"; -const Logo: FC<{src: string}> = ({src}) => { +const Logo: FC<{ src: string }> = ({ src }) => { return Logo; }; diff --git a/ui/src/components/PersonIcon.tsx b/ui/src/components/PersonIcon.tsx index 29013beeb..72e48663e 100644 --- a/ui/src/components/PersonIcon.tsx +++ b/ui/src/components/PersonIcon.tsx @@ -1,4 +1,4 @@ -import SvgIcon, { SvgIconProps } from "@mui/material/SvgIcon"; +import { SvgIcon, SvgIconProps } from "@mui/material"; import React, { FC } from "react"; import { User } from "react-feather"; diff --git a/ui/src/components/Section.tsx b/ui/src/components/Section.tsx index de65698f9..fa346650f 100644 --- a/ui/src/components/Section.tsx +++ b/ui/src/components/Section.tsx @@ -1,11 +1,8 @@ -import SectionFooter from "./SectionFooter"; -import Box from "@mui/material/Box"; -import Paper from "@mui/material/Paper"; -import Stack from "@mui/material/Stack"; -import Toolbar from "@mui/material/Toolbar"; -import Typography from "@mui/material/Typography"; +import { Box, Paper, Stack, Toolbar, Typography } from "@mui/material"; import React, { FC } from "react"; +import SectionFooter from "./SectionFooter"; + export type SectionProps = React.PropsWithChildren<{ title: React.ReactNode; icon?: React.ReactNode; @@ -15,16 +12,16 @@ export const Section: FC = ({ title, icon, children, - footer + footer, }) => { return ( - - {title} - - {!!icon && ( theme.spacing(3)}}>{icon})} + {title} + {!!icon && ( + theme.spacing(3) }}>{icon} + )} {children} {footer ? ( diff --git a/ui/src/components/SectionFooter.tsx b/ui/src/components/SectionFooter.tsx index f1b23170e..392a7c113 100644 --- a/ui/src/components/SectionFooter.tsx +++ b/ui/src/components/SectionFooter.tsx @@ -1,9 +1,8 @@ -import Box from "@mui/material/Box"; -import styled from "@mui/material/styles/styled"; +import { Box, styled } from "@mui/material"; import React, { FC } from "react"; export const SectionFooter = styled(Box)(({ theme }) => ({ backgroundColor: theme.palette.grey[100], - padding: theme.spacing(3) + padding: theme.spacing(3), })); export default SectionFooter; diff --git a/ui/src/components/SessionDetails.tsx b/ui/src/components/SessionDetails.tsx index d5d073f06..40252d22f 100644 --- a/ui/src/components/SessionDetails.tsx +++ b/ui/src/components/SessionDetails.tsx @@ -1,11 +1,13 @@ -import Alert from "@mui/material/Alert"; -import AlertTitle from "@mui/material/AlertTitle"; -import Stack from "@mui/material/Stack"; -import Table from "@mui/material/Table"; -import TableBody from "@mui/material/TableBody"; -import TableCell from "@mui/material/TableCell"; -import TableContainer from "@mui/material/TableContainer"; -import TableRow from "@mui/material/TableRow"; +import { + Alert, + AlertTitle, + Stack, + Table, + TableBody, + TableCell, + TableContainer, + TableRow, +} from "@mui/material"; import React, { FC } from "react"; import { Profile, Session } from "../types"; diff --git a/ui/src/components/SessionDeviceCredentials.tsx b/ui/src/components/SessionDeviceCredentials.tsx index 39f95b9f4..b2e9b52f7 100644 --- a/ui/src/components/SessionDeviceCredentials.tsx +++ b/ui/src/components/SessionDeviceCredentials.tsx @@ -1,8 +1,4 @@ -import Box from "@mui/material/Box"; -import Paper from "@mui/material/Paper"; -import Stack from "@mui/material/Stack"; -import Toolbar from "@mui/material/Toolbar"; -import Typography from "@mui/material/Typography"; +import { Box, Paper, Stack, Toolbar, Typography } from "@mui/material"; import React, { FC } from "react"; import DeviceCredentialsTable from "../components/DeviceCredentialsTable"; diff --git a/ui/src/components/SignOutConfirmPage.tsx b/ui/src/components/SignOutConfirmPage.tsx index ce6840e0c..b7c57a6cf 100644 --- a/ui/src/components/SignOutConfirmPage.tsx +++ b/ui/src/components/SignOutConfirmPage.tsx @@ -1,13 +1,15 @@ -import Button from "@mui/material/Button"; -import Container from "@mui/material/Container"; -import Dialog from "@mui/material/Dialog"; -import DialogActions from "@mui/material/DialogActions"; -import DialogContent from "@mui/material/DialogContent"; -import DialogContentText from "@mui/material/DialogContentText"; -import DialogTitle from "@mui/material/DialogTitle"; -import styled from "@mui/material/styles/styled"; +import { + Button, + Container, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, +} from "@mui/material"; import React, { FC } from "react"; -import { SignOutConfirmPageData } from "src/types"; + +import { SignOutConfirmPageData } from "../types"; type SignOutConfirmPageProps = { data: SignOutConfirmPageData; diff --git a/ui/src/components/SignedOutPage.tsx b/ui/src/components/SignedOutPage.tsx index ab3822da2..aa5653021 100644 --- a/ui/src/components/SignedOutPage.tsx +++ b/ui/src/components/SignedOutPage.tsx @@ -1,7 +1,7 @@ -import { Alert } from "@mui/material"; -import Container from "@mui/material/Container"; +import { Alert, Container } from "@mui/material"; import React, { FC } from "react"; -import { SignedOutPageData } from "src/types"; + +import { SignedOutPageData } from "../types"; type SignedOutPageProps = { data: SignedOutPageData; diff --git a/ui/src/components/ToolbarOffset.tsx b/ui/src/components/ToolbarOffset.tsx index 9396cbe87..781c378bb 100644 --- a/ui/src/components/ToolbarOffset.tsx +++ b/ui/src/components/ToolbarOffset.tsx @@ -1,6 +1,6 @@ -import styled from "@mui/material/styles/styled"; -import {BaseCSSProperties} from "@mui/material/styles/createMixins"; +import { styled } from "@mui/material"; +import { BaseCSSProperties } from "@mui/material/styles/createMixins"; -export const ToolbarOffset = styled('div')(({ theme }) => ({ +export const ToolbarOffset = styled("div")(({ theme }) => ({ ...(theme.mixins.toolbar as BaseCSSProperties), })); diff --git a/ui/src/components/UserInfoPage.tsx b/ui/src/components/UserInfoPage.tsx index 0146ca30a..aa90b6f5d 100644 --- a/ui/src/components/UserInfoPage.tsx +++ b/ui/src/components/UserInfoPage.tsx @@ -1,20 +1,20 @@ import { Button, + Container, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Drawer, + Stack, useMediaQuery, + useTheme, } from "@mui/material"; -import Container from "@mui/material/Container"; -import Stack from "@mui/material/Stack"; -import { useTheme } from "@mui/material/styles"; import React, { FC, useContext, useEffect, useState } from "react"; -import { UserInfoData } from "src/types"; import { SubpageContext } from "../context/Subpage"; +import { UserInfoData } from "../types"; import GroupDetails from "./GroupDetails"; import SessionDetails from "./SessionDetails"; import SessionDeviceCredentials from "./SessionDeviceCredentials"; diff --git a/ui/src/components/UserSidebarContent.tsx b/ui/src/components/UserSidebarContent.tsx index 7dd9773d8..2aa57a527 100644 --- a/ui/src/components/UserSidebarContent.tsx +++ b/ui/src/components/UserSidebarContent.tsx @@ -1,8 +1,14 @@ -import React, {FC, ReactNode, useContext} from "react"; -import {SubpageContext} from "../context/Subpage"; -import {List, ListItemButton, ListItemIcon, ListItemText} from "@mui/material"; -import {User, Users} from "react-feather"; -import {Devices} from "@mui/icons-material"; +import { Devices } from "@mui/icons-material"; +import { + List, + ListItemButton, + ListItemIcon, + ListItemText, +} from "@mui/material"; +import React, { FC, ReactNode, useContext } from "react"; +import { User, Users } from "react-feather"; + +import { SubpageContext } from "../context/Subpage"; export interface Subpage { icon: ReactNode; @@ -11,45 +17,44 @@ export interface Subpage { export const sectionList: Subpage[] = [ { - title: 'User', - icon: + title: "User", + icon: , }, { - title: 'Groups Info', - icon: + title: "Groups Info", + icon: , }, { - title: 'Devices Info', - icon: + title: "Devices Info", + icon: , }, -] +]; type UserSidebarContent = { close: () => void | null; }; -export const UserSidebarContent:FC = ({close}:UserSidebarContent):JSX.Element => { - +export const UserSidebarContent: FC = ({ + close, +}: UserSidebarContent): JSX.Element => { const info = useContext(SubpageContext); return ( - {sectionList.map(({title, icon}) => { + {sectionList.map(({ title, icon }) => { return ( { - info.setSubpage(title) + info.setSubpage(title); !!close && close(); }} > - - {icon} - + {icon} - ) + ); })} ); -} +}; export default UserSidebarContent; diff --git a/ui/src/components/WebAuthnAuthenticateButton.tsx b/ui/src/components/WebAuthnAuthenticateButton.tsx index bf4b1ed40..7de3821f6 100644 --- a/ui/src/components/WebAuthnAuthenticateButton.tsx +++ b/ui/src/components/WebAuthnAuthenticateButton.tsx @@ -1,4 +1,4 @@ -import React, { FC, useRef, useState } from "react"; +import React, { FC } from "react"; import { WebAuthnRequestOptions } from "../types"; import { decode, encodeUrl } from "../util/base64"; diff --git a/ui/src/components/WebAuthnButton.tsx b/ui/src/components/WebAuthnButton.tsx index ff3fa420e..fbd70e83a 100644 --- a/ui/src/components/WebAuthnButton.tsx +++ b/ui/src/components/WebAuthnButton.tsx @@ -1,4 +1,4 @@ -import Button, { ButtonProps } from "@mui/material/Button"; +import { Button, ButtonProps } from "@mui/material"; import React, { FC, useRef, useState } from "react"; import AlertDialog from "./AlertDialog"; diff --git a/ui/src/components/WebAuthnRegistrationPage.tsx b/ui/src/components/WebAuthnRegistrationPage.tsx index c7d93e1a8..adbacb127 100644 --- a/ui/src/components/WebAuthnRegistrationPage.tsx +++ b/ui/src/components/WebAuthnRegistrationPage.tsx @@ -1,7 +1,7 @@ -import Stack from "@mui/material/Stack"; +import { Stack } from "@mui/material"; import React, { FC } from "react"; -import { WebAuthnRegistrationPageData } from "src/types"; +import { WebAuthnRegistrationPageData } from "../types"; import ExperimentalIcon from "./ExperimentalIcon"; import Section from "./Section"; import WebAuthnAuthenticateButton from "./WebAuthnAuthenticateButton"; diff --git a/ui/src/context/Subpage.tsx b/ui/src/context/Subpage.tsx index 1d0311004..be8692f46 100644 --- a/ui/src/context/Subpage.tsx +++ b/ui/src/context/Subpage.tsx @@ -1,4 +1,4 @@ -import React, { createContext, FC, useState } from "react"; +import React, { FC, createContext, useState } from "react"; export interface SubpageContextValue { subpage: string; diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 9873e9e71..1ccdf637e 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -1,5 +1,6 @@ -import App from "./App"; import React from "react"; import ReactDOM from "react-dom"; +import App from "./App"; + ReactDOM.render(, document.getElementById("root")); diff --git a/ui/src/theme/index.ts b/ui/src/theme/index.ts index 9430e8488..0ea8215f4 100644 --- a/ui/src/theme/index.ts +++ b/ui/src/theme/index.ts @@ -1,13 +1,18 @@ -import { softShadows } from "./shadows"; import "@fontsource/dm-mono"; import "@fontsource/dm-sans"; -import common from "@mui/material/colors/common"; -import muiCreateTheme, { +import { Theme as MuiTheme, -} from "@mui/material/styles/createTheme"; + createTheme as muiCreateTheme, +} from "@mui/material"; +import common from "@mui/material/colors/common"; -export const createTheme = (primaryColor: string, secondaryColor: string): MuiTheme => { - return muiCreateTheme({ +import { softShadows } from "./shadows"; + +export const createTheme = ( + primaryColor: string, + secondaryColor: string +): MuiTheme => { + return muiCreateTheme({ components: { MuiBackdrop: { styleOverrides: { @@ -117,7 +122,7 @@ export const createTheme = (primaryColor: string, secondaryColor: string): MuiTh }, shadows: softShadows, shape: { - borderRadius: "16px", + borderRadius: 16, }, typography: { fontFamily: [ @@ -159,4 +164,4 @@ export const createTheme = (primaryColor: string, secondaryColor: string): MuiTh }, }, }); -} +}; diff --git a/ui/yarn.lock b/ui/yarn.lock index 20c8eb177..c11551212 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -360,6 +360,121 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@esbuild/aix-ppc64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.1.tgz#044268dc9ca4dc67f8d4aad8f51cfb894bfd7114" + integrity sha512-O7yppwipkXvnEPjzkSXJRk2g4bS8sUx9p9oXHq9MU/U7lxUzZVsnFZMDTmeeX9bfQxrFcvOacl/ENgOh0WP9pA== + +"@esbuild/android-arm64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.1.tgz#76aacd934449e541f05b66d5ec8cbff96ec2ae81" + integrity sha512-jXhccq6es+onw7x8MxoFnm820mz7sGa9J14kLADclmiEUH4fyj+FjR6t0M93RgtlI/awHWhtF0Wgfhqgf9gDZA== + +"@esbuild/android-arm@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.1.tgz#8247c5aef933a212bca261290f6e43a9dca07cc5" + integrity sha512-hh3jKWikdnTtHCglDAeVO3Oyh8MaH8xZUaWMiCCvJ9/c3NtPqZq+CACOlGTxhddypXhl+8B45SeceYBfB/e8Ow== + +"@esbuild/android-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.1.tgz#80cbfa35412299edefbc4ab78064f0b66e448008" + integrity sha512-NPObtlBh4jQHE01gJeucqEhdoD/4ya2owSIS8lZYS58aR0x7oZo9lB2lVFxgTANSa5MGCBeoQtr+yA9oKCGPvA== + +"@esbuild/darwin-arm64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.1.tgz#154167fb9e54017dac4b343f8e5e25c9d9324036" + integrity sha512-BLT7TDzqsVlQRmJfO/FirzKlzmDpBWwmCUlyggfzUwg1cAxVxeA4O6b1XkMInlxISdfPAOunV9zXjvh5x99Heg== + +"@esbuild/darwin-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.1.tgz#db971502c9fa204906b89e489810c902bf6d9afb" + integrity sha512-D3h3wBQmeS/vp93O4B+SWsXB8HvRDwMyhTNhBd8yMbh5wN/2pPWRW5o/hM3EKgk9bdKd9594lMGoTCTiglQGRQ== + +"@esbuild/freebsd-arm64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.1.tgz#f0f3bc20c23af999bd696099a324dceb66d77761" + integrity sha512-/uVdqqpNKXIxT6TyS/oSK4XE4xWOqp6fh4B5tgAwozkyWdylcX+W4YF2v6SKsL4wCQ5h1bnaSNjWPXG/2hp8AQ== + +"@esbuild/freebsd-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.1.tgz#d36af9085edb34244b41e5a57640e6b4452cbec2" + integrity sha512-paAkKN1n1jJitw+dAoR27TdCzxRl1FOEITx3h201R6NoXUojpMzgMLdkXVgCvaCSCqwYkeGLoe9UVNRDKSvQgw== + +"@esbuild/linux-arm64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.1.tgz#9d2ad42eea33b2a9571f13e7ecc39ee9d3ff0c6d" + integrity sha512-G65d08YoH00TL7Xg4LaL3gLV21bpoAhQ+r31NUu013YB7KK0fyXIt05VbsJtpqh/6wWxoLJZOvQHYnodRrnbUQ== + +"@esbuild/linux-arm@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.1.tgz#d6f7c5873479dd97148bef3e3a7f09d486642883" + integrity sha512-tRHnxWJnvNnDpNVnsyDhr1DIQZUfCXlHSCDohbXFqmg9W4kKR7g8LmA3kzcwbuxbRMKeit8ladnCabU5f2traA== + +"@esbuild/linux-ia32@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.1.tgz#8f2aef34a31c8d16dbce0b8679021f4881f38efe" + integrity sha512-tt/54LqNNAqCz++QhxoqB9+XqdsaZOtFD/srEhHYwBd3ZUOepmR1Eeot8bS+Q7BiEvy9vvKbtpHf+r6q8hF5UA== + +"@esbuild/linux-loong64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.1.tgz#44461ea2388efbafa6cf12b2bc1407a5388da066" + integrity sha512-MhNalK6r0nZD0q8VzUBPwheHzXPr9wronqmZrewLfP7ui9Fv1tdPmg6e7A8lmg0ziQCziSDHxh3cyRt4YMhGnQ== + +"@esbuild/linux-mips64el@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.1.tgz#754d533a4fef4b0790d82bfe1e82d6876f18370e" + integrity sha512-YCKVY7Zen5rwZV+nZczOhFmHaeIxR4Zn3jcmNH53LbgF6IKRwmrMywqDrg4SiSNApEefkAbPSIzN39FC8VsxPg== + +"@esbuild/linux-ppc64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.1.tgz#2aafcfe2826c7d5d2e3c41eb8934e6368a7cada5" + integrity sha512-bw7bcQ+270IOzDV4mcsKAnDtAFqKO0jVv3IgRSd8iM0ac3L8amvCrujRVt1ajBTJcpDaFhIX+lCNRKteoDSLig== + +"@esbuild/linux-riscv64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.1.tgz#481ceaf5939d14fb25da62a385b5e6c2096a3370" + integrity sha512-ARmDRNkcOGOm1AqUBSwRVDfDeD9hGYRfkudP2QdoonBz1ucWVnfBPfy7H4JPI14eYtZruRSczJxyu7SRYDVOcg== + +"@esbuild/linux-s390x@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.1.tgz#e25b97005e4c82540d1bc7af88e333fb55142570" + integrity sha512-o73TcUNMuoTZlhwFdsgr8SfQtmMV58sbgq6gQq9G1xUiYnHMTmJbwq65RzMx89l0iya69lR4bxBgtWiiOyDQZA== + +"@esbuild/linux-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.1.tgz#a05a61d0a0cbb03baa6db12cd8164c1e5265ffb2" + integrity sha512-da4/1mBJwwgJkbj4fMH7SOXq2zapgTo0LKXX1VUZ0Dxr+e8N0WbS80nSZ5+zf3lvpf8qxrkZdqkOqFfm57gXwA== + +"@esbuild/netbsd-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.1.tgz#e298f854e8999563f2e4668bd542678c46be4b53" + integrity sha512-CPWs0HTFe5woTJN5eKPvgraUoRHrCtzlYIAv9wBC+FAyagBSaf+UdZrjwYyTGnwPGkThV4OCI7XibZOnPvONVw== + +"@esbuild/openbsd-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.1.tgz#640d34de1e3c6bc3ff64e0379aae00ede3608f14" + integrity sha512-xxhTm5QtzNLc24R0hEkcH+zCx/o49AsdFZ0Cy5zSd/5tOj4X2g3/2AJB625NoadUuc4A8B3TenLJoYdWYOYCew== + +"@esbuild/sunos-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.1.tgz#f53cb1cdcbf05b3320e147ddb85ec2b1cf2b6cfc" + integrity sha512-CWibXszpWys1pYmbr9UiKAkX6x+Sxw8HWtw1dRESK1dLW5fFJ6rMDVw0o8MbadusvVQx1a8xuOxnHXT941Hp1A== + +"@esbuild/win32-arm64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.1.tgz#df4f44f9b4fec9598c0ec2c34fec9c568c8ab85d" + integrity sha512-jb5B4k+xkytGbGUS4T+Z89cQJ9DJ4lozGRSV+hhfmCPpfJ3880O31Q1srPCimm+V6UCbnigqD10EgDNgjvjerQ== + +"@esbuild/win32-ia32@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.1.tgz#a57edbd9905db9f957327ae0facfbf406a80a4e4" + integrity sha512-PgyFvjJhXqHn1uxPhyN1wZ6dIomKjiLUQh1LjFvjiV1JmnkZ/oMPrfeEAZg5R/1ftz4LZWZr02kefNIQ5SKREQ== + +"@esbuild/win32-x64@0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.1.tgz#eb86553d90e86a8c174b96650fdb4c60f2de16a7" + integrity sha512-W9NttRZQR5ehAiqHGDnvfDaGmQOm6Fi4vSlce8mjM75x//XKuVAByohlEX6N17yZnVXxQFuh4fDRunP8ca6bfA== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -632,15 +747,17 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/luxon@^2.0.9": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.4.0.tgz#897d3abc23b68d78b69d76a12c21e01eb5adab95" - integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== +"@types/lodash@^4.17.1": + version "4.17.1" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.1.tgz#0fabfcf2f2127ef73b119d98452bd317c4a17eb8" + integrity sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q== -"@types/node@^17.0.14": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^20.12.11": + version "20.12.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" + integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== + dependencies: + undici-types "~5.26.4" "@types/parse-json@^4.0.0": version "4.0.2" @@ -1339,113 +1456,34 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" - integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== - -esbuild-darwin-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" - integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== - -esbuild-darwin-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" - integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== - -esbuild-freebsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" - integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== - -esbuild-freebsd-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" - integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== - -esbuild-linux-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" - integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== - -esbuild-linux-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" - integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== - -esbuild-linux-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" - integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== - -esbuild-linux-arm@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" - integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== - -esbuild-linux-mips64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" - integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== - -esbuild-linux-ppc64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" - integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== - -esbuild-netbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" - integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== - -esbuild-openbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" - integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== - -esbuild-sunos-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" - integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== - -esbuild-windows-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" - integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== - -esbuild-windows-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" - integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== - -esbuild-windows-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" - integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== - -esbuild@^0.13.12: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" - integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== +esbuild@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.1.tgz#3d6f199f6ec849158278c6632f438463bab88c38" + integrity sha512-GPqx+FX7mdqulCeQ4TsGZQ3djBJkx5k7zBGtqt9ycVlWNg8llJ4RO9n2vciu8BN2zAEs6lPbPl0asZsAh7oWzg== optionalDependencies: - esbuild-android-arm64 "0.13.15" - esbuild-darwin-64 "0.13.15" - esbuild-darwin-arm64 "0.13.15" - esbuild-freebsd-64 "0.13.15" - esbuild-freebsd-arm64 "0.13.15" - esbuild-linux-32 "0.13.15" - esbuild-linux-64 "0.13.15" - esbuild-linux-arm "0.13.15" - esbuild-linux-arm64 "0.13.15" - esbuild-linux-mips64le "0.13.15" - esbuild-linux-ppc64le "0.13.15" - esbuild-netbsd-64 "0.13.15" - esbuild-openbsd-64 "0.13.15" - esbuild-sunos-64 "0.13.15" - esbuild-windows-32 "0.13.15" - esbuild-windows-64 "0.13.15" - esbuild-windows-arm64 "0.13.15" + "@esbuild/aix-ppc64" "0.21.1" + "@esbuild/android-arm" "0.21.1" + "@esbuild/android-arm64" "0.21.1" + "@esbuild/android-x64" "0.21.1" + "@esbuild/darwin-arm64" "0.21.1" + "@esbuild/darwin-x64" "0.21.1" + "@esbuild/freebsd-arm64" "0.21.1" + "@esbuild/freebsd-x64" "0.21.1" + "@esbuild/linux-arm" "0.21.1" + "@esbuild/linux-arm64" "0.21.1" + "@esbuild/linux-ia32" "0.21.1" + "@esbuild/linux-loong64" "0.21.1" + "@esbuild/linux-mips64el" "0.21.1" + "@esbuild/linux-ppc64" "0.21.1" + "@esbuild/linux-riscv64" "0.21.1" + "@esbuild/linux-s390x" "0.21.1" + "@esbuild/linux-x64" "0.21.1" + "@esbuild/netbsd-x64" "0.21.1" + "@esbuild/openbsd-x64" "0.21.1" + "@esbuild/sunos-x64" "0.21.1" + "@esbuild/win32-arm64" "0.21.1" + "@esbuild/win32-ia32" "0.21.1" + "@esbuild/win32-x64" "0.21.1" escalade@^3.1.1: version "3.1.2" @@ -2200,11 +2238,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luxon@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.5.2.tgz#17ed497f0277e72d58a4756d6a9abee4681457b6" - integrity sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA== - make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -2881,6 +2914,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"