From aa3fc7a625aa00b6d3ac948ec790269c2a2c9e2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Ctan-nhu=E2=80=9D?= <“tan@harness.io”> Date: Mon, 22 Jul 2024 14:47:56 -0700 Subject: [PATCH] Initial integration with Harness Canary --- web/config/webpack.common copy.js | 331 +++++ web/package.json | 8 +- web/src/App.tsx | 2 +- web/src/bootstrap.scss | 2 + .../components/canary/layout/BottomBar.tsx | 17 + web/src/components/canary/layout/Content.tsx | 9 + .../components/canary/layout/FooterStrap.tsx | 9 + .../canary/layout/NavCompanyBadge.tsx | 29 + .../components/canary/layout/NavUserBadge.tsx | 12 + web/src/components/canary/layout/TopBar.tsx | 21 + .../components/canary/layout/container.tsx | 35 + web/src/components/canary/layout/navbar.tsx | 83 ++ web/src/components/canary/misc/logo-green.tsx | 18 + .../components/canary/misc/logo-purple.tsx | 18 + web/src/images/body-green-blur.svg | 16 + web/src/images/body-purple-blur.svg | 16 + web/src/images/chaos-engineering-icon.svg | 10 + web/src/images/company-avatar.svg | 4 + web/src/images/connectors-icon.svg | 14 + web/src/images/environment-icon.svg | 10 + web/src/images/executions-icon.svg | 10 + web/src/images/featured-flags-icon.svg | 3 + web/src/images/gitness-logo-green.svg | 43 + web/src/images/gitness-logo-purple.svg | 43 + web/src/images/logo-green-blur.svg | 12 + web/src/images/logo-purple-blur.svg | 12 + web/src/images/more-dots-icon.svg | 5 + web/src/images/navbar-item-placeholder.svg | 10 + web/src/images/navbar-more.svg | 5 + web/src/images/noise.jpg | Bin 0 -> 35687 bytes web/src/images/pipelines-icon.svg | 5 + web/src/images/repositories-icon.svg | 10 + web/src/images/secrets-icon.svg | 4 + web/src/images/system-administration-icon.svg | 11 + web/src/images/user-avatar.svg | 9 + web/src/pages/SignIn/SignIn.tsx | 324 ++-- web/src/styles.css | 1 + web/src/styles.out.css | 1309 +++++++++++++++++ web/tailwind.config.js | 5 + web/yarn.lock | 437 +++++- 40 files changed, 2795 insertions(+), 127 deletions(-) create mode 100644 web/config/webpack.common copy.js create mode 100644 web/src/components/canary/layout/BottomBar.tsx create mode 100644 web/src/components/canary/layout/Content.tsx create mode 100644 web/src/components/canary/layout/FooterStrap.tsx create mode 100644 web/src/components/canary/layout/NavCompanyBadge.tsx create mode 100644 web/src/components/canary/layout/NavUserBadge.tsx create mode 100644 web/src/components/canary/layout/TopBar.tsx create mode 100644 web/src/components/canary/layout/container.tsx create mode 100644 web/src/components/canary/layout/navbar.tsx create mode 100644 web/src/components/canary/misc/logo-green.tsx create mode 100644 web/src/components/canary/misc/logo-purple.tsx create mode 100644 web/src/images/body-green-blur.svg create mode 100644 web/src/images/body-purple-blur.svg create mode 100644 web/src/images/chaos-engineering-icon.svg create mode 100644 web/src/images/company-avatar.svg create mode 100644 web/src/images/connectors-icon.svg create mode 100644 web/src/images/environment-icon.svg create mode 100644 web/src/images/executions-icon.svg create mode 100644 web/src/images/featured-flags-icon.svg create mode 100644 web/src/images/gitness-logo-green.svg create mode 100644 web/src/images/gitness-logo-purple.svg create mode 100644 web/src/images/logo-green-blur.svg create mode 100644 web/src/images/logo-purple-blur.svg create mode 100644 web/src/images/more-dots-icon.svg create mode 100644 web/src/images/navbar-item-placeholder.svg create mode 100644 web/src/images/navbar-more.svg create mode 100644 web/src/images/noise.jpg create mode 100644 web/src/images/pipelines-icon.svg create mode 100644 web/src/images/repositories-icon.svg create mode 100644 web/src/images/secrets-icon.svg create mode 100644 web/src/images/system-administration-icon.svg create mode 100644 web/src/images/user-avatar.svg create mode 100644 web/src/styles.css create mode 100644 web/src/styles.out.css create mode 100644 web/tailwind.config.js diff --git a/web/config/webpack.common copy.js b/web/config/webpack.common copy.js new file mode 100644 index 000000000..bb9b2a310 --- /dev/null +++ b/web/config/webpack.common copy.js @@ -0,0 +1,331 @@ +/* + * Copyright 2023 Harness, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const path = require('path') + +const { + container: { ModuleFederationPlugin }, + DefinePlugin +} = require('webpack') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const HTMLWebpackPlugin = require('html-webpack-plugin') +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin') +const GenerateStringTypesPlugin = require('../scripts/webpack/GenerateStringTypesPlugin').GenerateStringTypesPlugin +const { RetryChunkLoadPlugin } = require('webpack-retry-chunk-load-plugin') +const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin') +const moduleFederationConfig = require('./moduleFederation.config') +const moduleFederationConfigCDE = require('./cde/moduleFederation.config') +const CONTEXT = process.cwd() +const DEV = process.env.NODE_ENV === 'development' + +const getModuleFields = () => { + if (process.env.MODULE === 'cde') { + return { + moduleFederationConfigEntryName: moduleFederationConfigCDE.name, + moduleFederationPlugin: new ModuleFederationPlugin(moduleFederationConfigCDE) + } + } else { + return { + moduleFederationConfigEntryName: moduleFederationConfig.name, + moduleFederationPlugin: new ModuleFederationPlugin(moduleFederationConfig) + } + } +} + +const { moduleFederationConfigEntryName, moduleFederationPlugin } = getModuleFields() + +module.exports = { + target: 'web', + context: CONTEXT, + stats: { + modules: false, + children: false + }, + entry: { + [moduleFederationConfigEntryName]: './src/public-path' + }, + output: { + publicPath: 'auto', + pathinfo: false, + filename: '[name].[contenthash:6].js', + chunkFilename: '[name].[id].[contenthash:6].js' + }, + module: { + rules: [ + { + test: /\.m?js$/, + include: /node_modules/, + type: 'javascript/auto' + }, + { + test: /\.(j|t)sx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true + } + } + ] + }, + { + test: /\.module\.scss$/, + exclude: /node_modules/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + importLoaders: 1, + modules: { + mode: 'local', + localIdentName: DEV ? '[name]_[local]_[hash:base64:6]' : '[hash:base64:6]', + exportLocalsConvention: 'camelCaseOnly' + } + } + }, + { + loader: 'sass-loader', + options: { + sassOptions: { + includePaths: [path.join(CONTEXT, 'src')] + }, + sourceMap: false, + implementation: require('sass') + } + } + ] + }, + { + test: /(? = React.memo(function App({ const Wrapper: React.FC<{ fullPage: boolean }> = useCallback( props => { return strings ? ( - + {children} + }, + + Left: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }), + + Right: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }) +} + +export default BottomBar diff --git a/web/src/components/canary/layout/Content.tsx b/web/src/components/canary/layout/Content.tsx new file mode 100644 index 000000000..b17b073ab --- /dev/null +++ b/web/src/components/canary/layout/Content.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const Content = { + Root: function Root({ children }: { children: React.ReactNode }) { + return
{children}
+ } +} + +export default Content diff --git a/web/src/components/canary/layout/FooterStrap.tsx b/web/src/components/canary/layout/FooterStrap.tsx new file mode 100644 index 000000000..a15e5ef37 --- /dev/null +++ b/web/src/components/canary/layout/FooterStrap.tsx @@ -0,0 +1,9 @@ +import React, { ReactNode } from 'react' + +interface footerStrapProps { + children: ReactNode +} + +export default function FooterStrap({ children }: footerStrapProps) { + return
{children}
+} diff --git a/web/src/components/canary/layout/NavCompanyBadge.tsx b/web/src/components/canary/layout/NavCompanyBadge.tsx new file mode 100644 index 000000000..d0820166e --- /dev/null +++ b/web/src/components/canary/layout/NavCompanyBadge.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { NavArrowDown } from '@harnessio/icons-noir' +import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from '@harnessio/canary' + +interface CompanyProps { + name: string + avatar: React.ReactElement +} + +const NavCompanyBadge: React.FC = ({ avatar, name }) => { + return ( + + +
+
{avatar}
+

+ {name || 'No name'} +

+ +
+
+ +

Company settings...

+
+
+ ) +} + +export default NavCompanyBadge diff --git a/web/src/components/canary/layout/NavUserBadge.tsx b/web/src/components/canary/layout/NavUserBadge.tsx new file mode 100644 index 000000000..8c912703c --- /dev/null +++ b/web/src/components/canary/layout/NavUserBadge.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import userAvatar from 'images/user-avatar.svg?url' + +export default function NavUserBadge() { + return ( +
+ +

Steven M.

+

Admin

+
+ ) +} diff --git a/web/src/components/canary/layout/TopBar.tsx b/web/src/components/canary/layout/TopBar.tsx new file mode 100644 index 000000000..c5b4db0cd --- /dev/null +++ b/web/src/components/canary/layout/TopBar.tsx @@ -0,0 +1,21 @@ +import React from 'react' + +const Topbar = { + Root: function Root({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ) + }, + + Left: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }), + + Right: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }) +} + +export default Topbar diff --git a/web/src/components/canary/layout/container.tsx b/web/src/components/canary/layout/container.tsx new file mode 100644 index 000000000..c34bb7987 --- /dev/null +++ b/web/src/components/canary/layout/container.tsx @@ -0,0 +1,35 @@ +import React from 'react' + +const Container = { + Root: function Root({ children }: { children: React.ReactNode }) { + return
{children}
+ }, + + Sidebar: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }), + + Main: function Content({ children }: { children: React.ReactNode }) { + return
{children}
+ }, + + Topbar: function Content({ children }: { children: React.ReactNode }) { + return
{children}
+ }, + + Content: function Content({ children }: { children: React.ReactNode }) { + return
{children}
+ }, + + CenteredContent: function CenteredContent({ children }: { children: React.ReactNode }) { + return ( +
{children}
+ ) + }, + + Bottombar: function Content({ children }: { children: React.ReactNode }) { + return
{children}
+ } +} + +export default Container diff --git a/web/src/components/canary/layout/navbar.tsx b/web/src/components/canary/layout/navbar.tsx new file mode 100644 index 000000000..c10ee2b5b --- /dev/null +++ b/web/src/components/canary/layout/navbar.tsx @@ -0,0 +1,83 @@ +import React from 'react' +import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, cn } from '@harnessio/canary' + +const Navbar = { + Root: function Root({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ) + }, + + Header: React.memo(function Header({ children }: { children: React.ReactNode }) { + return
{children}
+ }), + + Content: function Content({ children }: { children: React.ReactNode }) { + return
{children}
+ }, + + Group: function Group({ children, topBorder }: { children: React.ReactNode; topBorder?: boolean }) { + return ( +
+ {children} +
+ ) + }, + + AccordionGroup: function AccordionGroup({ title, children }: { title: string; children: React.ReactNode }) { + return ( +
+ + + +

+ {title} +

+
+ {children} +
+
+
+ ) + }, + + Item: React.memo( + ({ + icon, + text, + active + }: { + icon: React.ReactElement + text: string + active?: boolean + onClick?: () => void + }) => { + return ( +
+
{icon}
+

+ {text} +

+
+ ) + } + ), + + Footer: React.memo(function Footer({ children }: { children: React.ReactNode }) { + return
{children}
+ }) +} + +export default Navbar diff --git a/web/src/components/canary/misc/logo-green.tsx b/web/src/components/canary/misc/logo-green.tsx new file mode 100644 index 000000000..0682904b1 --- /dev/null +++ b/web/src/components/canary/misc/logo-green.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import logoBlur from 'images/logo-green-blur.svg?url' +import logo from 'images/gitness-logo-green.svg?url' + +export default function Logo() { + return ( +
+ + +
+ ) +} diff --git a/web/src/components/canary/misc/logo-purple.tsx b/web/src/components/canary/misc/logo-purple.tsx new file mode 100644 index 000000000..1c730c578 --- /dev/null +++ b/web/src/components/canary/misc/logo-purple.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import logoBlur from 'images/logo-purple-blur.svg?url' +import logo from 'images/gitness-logo-purple.svg?url' + +export default function Logo() { + return ( +
+ + +
+ ) +} diff --git a/web/src/images/body-green-blur.svg b/web/src/images/body-green-blur.svg new file mode 100644 index 000000000..58eb0376c --- /dev/null +++ b/web/src/images/body-green-blur.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/web/src/images/body-purple-blur.svg b/web/src/images/body-purple-blur.svg new file mode 100644 index 000000000..ac9a2c7b0 --- /dev/null +++ b/web/src/images/body-purple-blur.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/web/src/images/chaos-engineering-icon.svg b/web/src/images/chaos-engineering-icon.svg new file mode 100644 index 000000000..66c7cd16d --- /dev/null +++ b/web/src/images/chaos-engineering-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/src/images/company-avatar.svg b/web/src/images/company-avatar.svg new file mode 100644 index 000000000..5207f183a --- /dev/null +++ b/web/src/images/company-avatar.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/src/images/connectors-icon.svg b/web/src/images/connectors-icon.svg new file mode 100644 index 000000000..5de38ea06 --- /dev/null +++ b/web/src/images/connectors-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/web/src/images/environment-icon.svg b/web/src/images/environment-icon.svg new file mode 100644 index 000000000..0ec19d640 --- /dev/null +++ b/web/src/images/environment-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/src/images/executions-icon.svg b/web/src/images/executions-icon.svg new file mode 100644 index 000000000..2a9b19c9a --- /dev/null +++ b/web/src/images/executions-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/src/images/featured-flags-icon.svg b/web/src/images/featured-flags-icon.svg new file mode 100644 index 000000000..697b2df8b --- /dev/null +++ b/web/src/images/featured-flags-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/src/images/gitness-logo-green.svg b/web/src/images/gitness-logo-green.svg new file mode 100644 index 000000000..0347198aa --- /dev/null +++ b/web/src/images/gitness-logo-green.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/images/gitness-logo-purple.svg b/web/src/images/gitness-logo-purple.svg new file mode 100644 index 000000000..39a319033 --- /dev/null +++ b/web/src/images/gitness-logo-purple.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/images/logo-green-blur.svg b/web/src/images/logo-green-blur.svg new file mode 100644 index 000000000..02bd38aff --- /dev/null +++ b/web/src/images/logo-green-blur.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/web/src/images/logo-purple-blur.svg b/web/src/images/logo-purple-blur.svg new file mode 100644 index 000000000..e1985584b --- /dev/null +++ b/web/src/images/logo-purple-blur.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/web/src/images/more-dots-icon.svg b/web/src/images/more-dots-icon.svg new file mode 100644 index 000000000..0ecf0c171 --- /dev/null +++ b/web/src/images/more-dots-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/web/src/images/navbar-item-placeholder.svg b/web/src/images/navbar-item-placeholder.svg new file mode 100644 index 000000000..66c7cd16d --- /dev/null +++ b/web/src/images/navbar-item-placeholder.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/src/images/navbar-more.svg b/web/src/images/navbar-more.svg new file mode 100644 index 000000000..0ecf0c171 --- /dev/null +++ b/web/src/images/navbar-more.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/web/src/images/noise.jpg b/web/src/images/noise.jpg new file mode 100644 index 0000000000000000000000000000000000000000..951b2084f092453e1d70f5946a0f808be454269b GIT binary patch literal 35687 zcmeIzIZPHo7{>8;c4ogz3zo~HFtg4+KM#yakO>VkxaH zqix$5Z}l$kyBNogPDso4#T1tK6DwlVYwGF)NjVM8aYgNe$r+`UwZTyQl&RCEr_7v{ zI(ts$+^l)?7c9(Oyd=CdFTY^ + + + + diff --git a/web/src/images/repositories-icon.svg b/web/src/images/repositories-icon.svg new file mode 100644 index 000000000..373a91d23 --- /dev/null +++ b/web/src/images/repositories-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/src/images/secrets-icon.svg b/web/src/images/secrets-icon.svg new file mode 100644 index 000000000..63fbfff35 --- /dev/null +++ b/web/src/images/secrets-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/src/images/system-administration-icon.svg b/web/src/images/system-administration-icon.svg new file mode 100644 index 000000000..1fbe4c298 --- /dev/null +++ b/web/src/images/system-administration-icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/web/src/images/user-avatar.svg b/web/src/images/user-avatar.svg new file mode 100644 index 000000000..f1c82f439 --- /dev/null +++ b/web/src/images/user-avatar.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web/src/pages/SignIn/SignIn.tsx b/web/src/pages/SignIn/SignIn.tsx index 4904c2393..7558d8d49 100644 --- a/web/src/pages/SignIn/SignIn.tsx +++ b/web/src/pages/SignIn/SignIn.tsx @@ -14,113 +14,231 @@ * limitations under the License. */ -import React, { useCallback } from 'react' -import { - Button, - Container, - FlexExpander, - FormInput, - Formik, - FormikForm, - Layout, - Text, - useToaster, - StringSubstitute -} from '@harnessio/uicore' -import { Color } from '@harnessio/design-system' -import * as Yup from 'yup' -import { Link } from 'react-router-dom' -import { useStrings } from 'framework/strings' -import { useOnLogin } from 'services/code' -import AuthLayout from 'components/AuthLayout/AuthLayout' -import { useAppContext } from 'AppContext' -import { getErrorMessage, type LoginForm } from 'utils/Utils' -import css from './SignIn.module.scss' +import React, { useState } from 'react' +// import { +// Button, +// Container, +// FlexExpander, +// FormInput, +// Formik, +// FormikForm, +// Layout, +// Text, +// useToaster, +// StringSubstitute +// } from '@harnessio/uicore' +import { Button, Card, CardContent, CardHeader, CardTitle, Input, Label } from '@harnessio/canary' +import { useForm } from 'react-hook-form' +import { zodResolver } from '@hookform/resolvers/zod' +import { z } from 'zod' -export const SignIn: React.FC = () => { - const { routes } = useAppContext() - const { getString } = useStrings() - const { mutate } = useOnLogin({ - queryParams: { - include_cookie: true - } +import Logo from 'components/canary/misc/logo-purple' +import bodyBlur from 'images/body-purple-blur.svg?url' +import FooterStrap from 'components/canary/layout/FooterStrap' +import Container from 'components/canary/layout/container' + +// import { Color } from '@harnessio/design-system' +// import * as Yup from 'yup' +// import { Link } from 'react-router-dom' +// import { useStrings } from 'framework/strings' +// import { useOnLogin } from 'services/code' +// import AuthLayout from 'components/AuthLayout/AuthLayout' +// import { useAppContext } from 'AppContext' +// import { getErrorMessage, type LoginForm } from 'utils/Utils' +// import css from './SignIn.module.scss' + +// export const SignIn: React.FC = () => { +// const { routes } = useAppContext() +// const { getString } = useStrings() +// const { mutate } = useOnLogin({ +// queryParams: { +// include_cookie: true +// } +// }) +// const { showError } = useToaster() +// const onLogin = useCallback( +// ({ username, password }: LoginForm) => { +// mutate( +// { login_identifier: username, password }, +// { +// headers: { Authorization: '' } +// } +// ) +// .then(() => { +// window.location.replace(window.location.origin + routes.toCODEHome()) +// }) +// .catch(error => { +// showError(getErrorMessage(error)) +// }) +// }, +// [mutate, showError, routes] +// ) +// const onSubmit = useCallback( +// (data: LoginForm): void => { +// if (data.username && data.password) { +// onLogin(data) +// } +// }, +// [onLogin] +// ) + +// return ( +// +// +// +// +// {getString('signIn')} +// +// +// +// {getString('noAccount?')} +// {getString('signUp')} +// +// + +// +// +// initialValues={{ username: '', password: '' }} +// formName="loginPageForm" +// onSubmit={onSubmit} +// validationSchema={Yup.object().shape({ +// username: Yup.string().required(getString('userNameRequired')), +// password: Yup.string().required(getString('passwordRequired')) +// })}> +// +// +// +// +// HELLO WORLD +// +// +// +// +// +// {getString('privacyPolicy')} , +// terms: {getString('termsOfUse')} +// }} +// /> +// +// +// +// +// ) +// } + +interface DataProps { + email?: string + password?: string +} + +const signInSchema = z.object({ + email: z.string().email({ message: 'Invalid email address' }), + password: z.string().min(6, { message: 'Password must be at least 6 characters' }) +}) + +export default { + title: 'Pages/Sign In', + parameters: { + layout: 'fullscreen' + } +} + +export function SignIn() { + const { + register, + handleSubmit, + formState: { errors } + } = useForm({ + resolver: zodResolver(signInSchema) }) - const { showError } = useToaster() - const onLogin = useCallback( - ({ username, password }: LoginForm) => { - mutate( - { login_identifier: username, password }, - { - headers: { Authorization: '' } - } - ) - .then(() => { - window.location.replace(window.location.origin + routes.toCODEHome()) - }) - .catch(error => { - showError(getErrorMessage(error)) - }) - }, - [mutate, showError, routes] - ) - const onSubmit = useCallback( - (data: LoginForm): void => { - if (data.username && data.password) { - onLogin(data) - } - }, - [onLogin] - ) + const [isLoading, setIsloading] = useState(false) + + const onSubmit = (data: DataProps) => { + console.log(data) + + setIsloading(true) + setTimeout(() => { + setIsloading(false) + }, 2000) + } return ( - - - - - {getString('signIn')} - - - - {getString('noAccount?')} - {getString('signUp')} - - - - - - initialValues={{ username: '', password: '' }} - formName="loginPageForm" - onSubmit={onSubmit} - validationSchema={Yup.object().shape({ - username: Yup.string().required(getString('userNameRequired')), - password: Yup.string().required(getString('passwordRequired')) - })}> - - - + + + + + - - - - - - - {getString('privacyPolicy')} , - terms: {getString('termsOfUse')} - }} - /> - - - - + + + +

Sign in to Gitness

+
+
+ +
+
+
+ + + {errors.email &&

{errors.email.message?.toString()}

} +
+
+ + + {errors.password &&

{errors.password.message?.toString()}

} +
+
+ +
+
+

+ Don't have an account? Sign up +

+
+
+ + +

+ By joining, you agree to Terms of Service and{' '} + Privacy Policy +

+
+ + + + ) } diff --git a/web/src/styles.css b/web/src/styles.css new file mode 100644 index 000000000..c67c6f6f6 --- /dev/null +++ b/web/src/styles.css @@ -0,0 +1 @@ +@import '../node_modules/@harnessio/canary/src/styles.css'; diff --git a/web/src/styles.out.css b/web/src/styles.out.css new file mode 100644 index 000000000..a11e6e1c1 --- /dev/null +++ b/web/src/styles.out.css @@ -0,0 +1,1309 @@ +/* +! tailwindcss v3.4.6 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +* { + border-color: hsl(var(--border)); +} + +body { + background-color: hsl(var(--background)); + color: hsl(var(--foreground)); +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +.container { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: 2rem; + padding-left: 2rem; +} + +@media (min-width: 1400px) { + .container { + max-width: 1400px; + } +} + +.visible { + visibility: visible; +} + +.collapse { + visibility: collapse; +} + +.static { + position: static; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +.-left-\[calc\(\(1000px-362px\)\/2\)\] { + left: calc(calc((1000px - 362px) / 2) * -1); +} + +.-left-\[calc\(254px-64px\)\/2\] { + left: calc(calc(254px - 64px)/2 * -1); +} + +.-left-\[calc\(96px-64px\)\/2\] { + left: calc(calc(96px - 64px)/2 * -1); +} + +.-top-\[200px\] { + top: -200px; +} + +.-top-\[calc\(254px-64px\)\/2\] { + top: calc(calc(254px - 64px)/2 * -1); +} + +.-top-\[calc\(96px-64px\)\/2\] { + top: calc(calc(96px - 64px)/2 * -1); +} + +.bottom-0 { + bottom: 0px; +} + +.left-0 { + left: 0px; +} + +.right-0 { + right: 0px; +} + +.z-10 { + z-index: 10; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.col-start-1 { + grid-column-start: 1; +} + +.col-start-2 { + grid-column-start: 2; +} + +.row-span-2 { + grid-row: span 2 / span 2; +} + +.row-start-1 { + grid-row-start: 1; +} + +.row-start-2 { + grid-row-start: 2; +} + +.mt-3\.5 { + margin-top: 0.875rem; +} + +.mt-6 { + margin-top: 1.5rem; +} + +.block { + display: block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.table { + display: table; +} + +.grid { + display: grid; +} + +.contents { + display: contents; +} + +.hidden { + display: none; +} + +.h-14 { + height: 3.5rem; +} + +.h-16 { + height: 4rem; +} + +.h-24 { + height: 6rem; +} + +.h-3 { + height: 0.75rem; +} + +.h-\[254px\] { + height: 254px; +} + +.h-\[38px\] { + height: 38px; +} + +.h-\[57px\] { + height: 57px; +} + +.h-\[76px\] { + height: 76px; +} + +.h-\[900px\] { + height: 900px; +} + +.h-full { + height: 100%; +} + +.h-screen { + height: 100vh; +} + +.w-16 { + width: 4rem; +} + +.w-24 { + width: 6rem; +} + +.w-3 { + width: 0.75rem; +} + +.w-\[1000px\] { + width: 1000px; +} + +.w-\[180px\] { + width: 180px; +} + +.w-\[220px\] { + width: 220px; +} + +.w-\[254px\] { + width: 254px; +} + +.w-full { + width: 100%; +} + +.w-screen { + width: 100vw; +} + +.max-w-24 { + max-width: 6rem; +} + +.max-w-\[1000px\] { + max-width: 1000px; +} + +.max-w-\[254px\] { + max-width: 254px; +} + +.shrink-0 { + flex-shrink: 0; +} + +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.cursor-pointer { + cursor: pointer; +} + +.select-none { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.resize { + resize: both; +} + +.grid-cols-\[1fr_auto\] { + grid-template-columns: 1fr auto; +} + +.grid-cols-\[auto_1fr\] { + grid-template-columns: auto 1fr; +} + +.grid-cols-\[auto_1fr_auto\] { + grid-template-columns: auto 1fr auto; +} + +.grid-rows-2 { + grid-template-rows: repeat(2, minmax(0, 1fr)); +} + +.grid-rows-\[auto_1fr_auto\] { + grid-template-rows: auto 1fr auto; +} + +.flex-col { + flex-direction: column; +} + +.place-content-center { + place-content: center; +} + +.place-items-center { + place-items: center; +} + +.content-start { + align-content: flex-start; +} + +.items-center { + align-items: center; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-center { + justify-content: center; +} + +.justify-items-start { + justify-items: start; +} + +.gap-1\.5 { + gap: 0.375rem; +} + +.gap-2\.5 { + gap: 0.625rem; +} + +.gap-3 { + gap: 0.75rem; +} + +.gap-4 { + gap: 1rem; +} + +.gap-6 { + gap: 1.5rem; +} + +.gap-x-3 { + -moz-column-gap: 0.75rem; + column-gap: 0.75rem; +} + +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} + +.self-start { + align-self: flex-start; +} + +.overflow-y-auto { + overflow-y: auto; +} + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.border { + border-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-r { + border-right-width: 1px; +} + +.border-t { + border-top-width: 1px; +} + +.border-none { + border-style: none; +} + +.bg-\[\#070709\] { + --tw-bg-opacity: 1; + background-color: rgb(7 7 9 / var(--tw-bg-opacity)); +} + +.bg-\[\#0F0F11\] { + --tw-bg-opacity: 1; + background-color: rgb(15 15 17 / var(--tw-bg-opacity)); +} + +.bg-background { + background-color: hsl(var(--background)); +} + +.bg-transparent { + background-color: transparent; +} + +.bg-contain { + background-size: contain; +} + +.bg-cover { + background-size: cover; +} + +.bg-center { + background-position: center; +} + +.bg-top { + background-position: top; +} + +.p-2\.5 { + padding: 0.625rem; +} + +.p-5 { + padding: 1.25rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.py-0\.5 { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} + +.py-1\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} + +.py-3\.5 { + padding-top: 0.875rem; + padding-bottom: 0.875rem; +} + +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.text-center { + text-align: center; +} + +.text-\[15px\] { + font-size: 15px; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xs { + font-size: 13px; +} + +.font-light { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.capitalize { + text-transform: capitalize; +} + +.italic { + font-style: italic; +} + +.-tracking-\[2\%\] { + letter-spacing: -2%; +} + +.text-\[\#60606C\] { + --tw-text-opacity: 1; + color: rgb(96 96 108 / var(--tw-text-opacity)); +} + +.text-\[\#AEAEB7\] { + --tw-text-opacity: 1; + color: rgb(174 174 183 / var(--tw-text-opacity)); +} + +.text-foreground { + color: hsl(var(--foreground)); +} + +.text-primary { + color: hsl(var(--primary)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.text-white\/40 { + color: rgb(255 255 255 / 0.4); +} + +.text-white\/60 { + color: rgb(255 255 255 / 0.6); +} + +.text-white\/70 { + color: rgb(255 255 255 / 0.7); +} + +.opacity-\[17\%\] { + opacity: 17%; +} + +.opacity-\[20\%\] { + opacity: 20%; +} + +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.outline { + outline-style: solid; +} + +.invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + +.transition { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-transform { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.duration-150 { + transition-duration: 150ms; +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +@keyframes enter { + from { + opacity: var(--tw-enter-opacity, 1); + transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0)); + } +} + +@keyframes exit { + to { + opacity: var(--tw-exit-opacity, 1); + transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0)); + } +} + +.zoom-in { + --tw-enter-scale: 0; +} + +.zoom-out { + --tw-exit-scale: 0; +} + +.duration-150 { + animation-duration: 150ms; +} + +.ease-in-out { + animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.\!running { + animation-play-state: running !important; +} + +.running { + animation-play-state: running; +} + +@layer themes { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 240 5.9% 10%; + --radius: 0.5rem; + } + + .dark { + --background: 240, 12.9%, 3.1%; + --foreground: 0 0% 98%; + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 240 4.9% 83.9%; + } +} + +/* Text utilities */ + +.title-primary { + font-size: 1.875rem; + line-height: 2.25rem; + line-height: 1.625; + --tw-text-opacity: 1; + color: rgb(212 212 212 / var(--tw-text-opacity)); +} + +.text-radial-gradient { + background-image: radial-gradient(var(--tw-gradient-stops)); + --tw-gradient-from: rgb(202 154 244 / 0.7) var(--tw-gradient-from-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); + --tw-gradient-to: rgb(202 154 244 / 0) var(--tw-gradient-to-position); + -webkit-background-clip: text; + background-clip: text; + color: rgb(255 255 255 / 0.7); +} + +/* Card utilities */ + +.card-auth { + width: 362px; + border-style: none; +} + +.card-auth-header > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0px * var(--tw-space-x-reverse)); + margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse))); + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); +} + +.card-auth-header { + padding: 0px; +} + +.card-auth-content { + width: 100%; + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +/* Form utilities */ + +.text-form-error { + margin-top: 0.5rem; + font-size: 13px; + font-weight: 300; + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} + +.form-input { + margin-top: 0.25rem; + width: 100%; + border-radius: 4px; + border-color: rgb(255 255 255 / 0.1); + background-color: rgb(255 255 255 / 0.05); + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 300; +} + +.form-input::-moz-placeholder { + color: rgb(255 255 255 / 0.5) !important; +} + +.form-input::placeholder { + color: rgb(255 255 255 / 0.5) !important; +} + +/* Navbar utilities */ + +.navbar-company-avatar { + height: 1.25rem; + width: 1.25rem; +} + +.navbar-section-icon { + height: 0.75rem; + width: 0.75rem; + fill: #f87171; +} + +.group:hover .group-hover\:text-primary { + color: hsl(var(--primary)); +} diff --git a/web/tailwind.config.js b/web/tailwind.config.js new file mode 100644 index 000000000..cf030395f --- /dev/null +++ b/web/tailwind.config.js @@ -0,0 +1,5 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + presets: [require('@harnessio/canary/tailwind.config')], + content: ['./src/**/*.{ts,tsx}'] +} diff --git a/web/yarn.lock b/web/yarn.lock index 3283f6934..aed4440a8 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -1678,10 +1683,10 @@ resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz#1d459cee5031893a08a0e064c406ad2130cced7c" integrity sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA== -"@harnessio/canary@^0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@harnessio/canary/-/canary-0.1.0.tgz#276ac514b49dda4d1e73351e9b27c78fdc73ba75" - integrity sha512-8MRxPNm2Sq9td5MhOgUO/6jPHjJqgFuSf+lHakKUBLkKXqUe63fBjdCUPmtrR1yLI+g7M7S0oRFc8ghW2H1+hg== +"@harnessio/canary@^0.2.1": + version "0.2.1" + resolved "https://registry.npmjs.org/@harnessio/canary/-/canary-0.2.1.tgz#ee8902a9278bac78875e9b40b5291a5257dd5470" + integrity sha512-SqZC3plNewPG7k03a73pIkQZ0Ur6iDT2oDusrNLRTiO662khGDnvoXfxUfzezKgBr/hQ1kIS0VknihiHd0CkmQ== dependencies: "@hookform/resolvers" "^3.6.0" "@radix-ui/react-accordion" "^1.2.0" @@ -1737,10 +1742,10 @@ resolved "https://registry.npmjs.org/@harnessio/design-system/-/design-system-2.1.1.tgz#2da3036602ed9b9446d8139c72009e6dc1e25642" integrity sha512-ZwAGM1srOZ49/6YkwyjkczUv4v91CN0rCecRYnV3/g+xdSV5ycrUvkJjl9nHub6jw2eCGC0GdyNgAtAJnLmGfQ== -"@harnessio/icons-noir@^0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@harnessio/icons-noir/-/icons-noir-0.1.1.tgz#84a4ad1acc1c6bf8c535bd23afe26c4323f2c2bb" - integrity sha512-jKKN/mEXijKt5xrCbAlRUsLSHL7ixcPTdWdwRVbTjaAnrHbhGkyyxYWqJT1py4x/FCpTndlkCiBfTmr1yKMeBw== +"@harnessio/icons-noir@^0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@harnessio/icons-noir/-/icons-noir-0.2.0.tgz#0f4344304e6280d6d2eebf143c2dc069918447de" + integrity sha512-aJrABuP8booB9o4n0TiptDdPj7bT3QV4eNkiQXNol7pyRZhD+mNRe4zBARFk/1bektF9hefVhSqpuidqwXzBrg== "@harnessio/icons@^2.1.5": version "2.1.5" @@ -1779,6 +1784,18 @@ gud "^1.0.0" warning "^4.0.3" +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@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.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2192,6 +2209,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@radix-ui/number@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" @@ -4316,6 +4338,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4340,6 +4367,16 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -4356,6 +4393,11 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -4751,6 +4793,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -4774,6 +4823,13 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -4881,6 +4937,11 @@ camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -5278,7 +5339,7 @@ commander@^2.17.1, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.0: +commander@^4.0.0, commander@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -5836,6 +5897,11 @@ devlop@^1.0.0, devlop@^1.1.0: dependencies: dequal "^2.0.0" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -5881,6 +5947,11 @@ direction@^2.0.0: resolved "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz#71800dd3c4fa102406502905d3866e65bdebb985" integrity sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA== +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -6023,6 +6094,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -6074,6 +6150,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -6859,6 +6940,17 @@ 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.npmjs.org/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-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6944,6 +7036,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + filter-console@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/filter-console/-/filter-console-0.1.1.tgz#6242be28982bba7415bcc6db74a79f4a294fa67c" @@ -7019,6 +7118,14 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== +foreground-child@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -7262,6 +7369,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -7272,6 +7386,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmjs.org/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.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -8597,6 +8723,15 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/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" + jest-changed-files@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" @@ -9031,6 +9166,11 @@ jest@^26.2.0: import-local "^3.0.2" jest-cli "^26.6.3" +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + jotai@^2.6.3: version "2.6.3" resolved "https://registry.npmjs.org/jotai/-/jotai-2.6.3.tgz#edab97aaa37957f42ee09b2047da3ae573275647" @@ -9332,6 +9472,16 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/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.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -9439,6 +9589,11 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -10089,6 +10244,14 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +micromatch@^4.0.5: + version "4.0.7" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -10143,11 +10306,23 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -10242,11 +10417,25 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/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" + nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10486,7 +10675,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -10500,6 +10689,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -10737,6 +10931,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -10889,6 +11088,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/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-to-regexp@*, path-to-regexp@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -10943,6 +11150,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -10953,6 +11165,11 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -10980,6 +11197,30 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/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-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/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-modules-extract-imports@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" @@ -11039,6 +11280,21 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" +postcss-nested@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" + integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.11" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" @@ -11047,7 +11303,7 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -11079,6 +11335,15 @@ postcss@^8.4.19: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.23: + version "8.4.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" + integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -11576,6 +11841,13 @@ react@^18.3.1: dependencies: loose-envify "^1.1.0" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -12028,6 +12300,15 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.npmjs.org/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@^1.10.0, resolve@^1.18.1, resolve@^1.22.0, resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" @@ -12037,15 +12318,6 @@ resolve@^1.10.0, resolve@^1.18.1, resolve@^1.22.0, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2: - version "1.22.8" - resolved "https://registry.npmjs.org/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@^1.20.0: version "1.22.4" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" @@ -12492,6 +12764,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12573,6 +12850,11 @@ sonner@^1.5.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -12733,6 +13015,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.npmjs.org/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.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -12759,6 +13050,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" @@ -12831,6 +13131,13 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/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.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -12852,6 +13159,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -12906,6 +13220,19 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.3" +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.npmjs.org/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" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -13018,6 +13345,34 @@ tailwindcss-animate@^1.0.7: resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== +tailwindcss@^3.4.6: + version "3.4.6" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz#41faae16607e0916da1eaa4a3b44053457ba70dd" + integrity sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA== + 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: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -13078,6 +13433,20 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/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.npmjs.org/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.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -13202,6 +13571,11 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + ts-jest@^26.5.5: version "26.5.6" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" @@ -14059,6 +14433,15 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/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@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -14085,6 +14468,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -14187,6 +14579,11 @@ yaml@^2.3.3: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== +yaml@^2.3.4: + version "2.4.5" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" + integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== + yargs-parser@20.x: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"