diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..b9a04f4 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "tabWidth": 2, + "useTabs": false, + "singleQuote": false, + "plugins": ["prettier-plugin-tailwindcss"], + "tailwindFunctions": ["clsx", "cn", "twmerge", "cva"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index cbc3061..b446483 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,6 @@ { "tailwindCSS.experimental.classRegex": [ - [ - "cva\\(([^)]*)\\)", - "[\"'`]([^\"'`]*).*?[\"'`]" - ], - [ - "cx\\(([^)]*)\\)", - "(?:'|\"|`)([^']*)(?:'|\"|`)" - ] + ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], + ["cx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"] ] -} \ No newline at end of file +} diff --git a/package.json b/package.json index a15f206..dafca41 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "yarn dev-codegen & yarn dev-next", + "dev": "concurrently 'yarn:dev-*'", "dev-codegen": "graphql-codegen --watch", "dev-next": "next dev -p 3010", "build": "next build", @@ -38,7 +38,7 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", - "daisyui": "^4.12.10", + "concurrently": "^8.2.2", "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8", diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx index 6283479..f39976d 100644 --- a/src/app/(auth)/layout.tsx +++ b/src/app/(auth)/layout.tsx @@ -5,6 +5,6 @@ type Props = { }; export default function Layout({ children }: Props) { return ( -
{children}
+
{children}
); } diff --git a/src/app/(protected)/dashboard/layout.tsx b/src/app/(protected)/dashboard/layout.tsx index 8da6883..285ae54 100644 --- a/src/app/(protected)/dashboard/layout.tsx +++ b/src/app/(protected)/dashboard/layout.tsx @@ -14,9 +14,9 @@ export default function ProtectedLayout({ children }: { children: ReactNode }) { type="checkbox" className="drawer-toggle" /> -
+
-
+
{children}
diff --git a/src/module/auth/login-form.tsx b/src/module/auth/login-form.tsx index d3f406d..db58095 100644 --- a/src/module/auth/login-form.tsx +++ b/src/module/auth/login-form.tsx @@ -1,6 +1,7 @@ "use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { + Button, ControlledPasswordInput, ControlledTextInput, Icon, @@ -9,6 +10,7 @@ import Link from "next/link"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { login, LoginPayload } from "./auth-service"; +import { Checkbox } from "../common/checkbox"; const formSchema = z.object({ email: z.string().email(), @@ -44,9 +46,9 @@ export function LoginForm() { }); return ( -
-
-

Login

+
+
+

Login

{errors.root && ( {errors.root.message} @@ -67,25 +69,37 @@ export function LoginForm() { />
-
+
- + Forgot Password?
- +
+ +
{/* {errorMessage} */} - + -
- Don't have an account yet?{" "} +
- +
diff --git a/src/module/auth/user-store.ts b/src/module/auth/user-store.ts index cba18fb..69e627a 100644 --- a/src/module/auth/user-store.ts +++ b/src/module/auth/user-store.ts @@ -20,7 +20,7 @@ export const useUser = create( console.dir(error); }; }, - }) + }), ); export const fetchUserInfo = async () => { diff --git a/src/module/common/button.tsx b/src/module/common/button.tsx index dcd4c35..5a25160 100644 --- a/src/module/common/button.tsx +++ b/src/module/common/button.tsx @@ -2,26 +2,65 @@ import { cva, type VariantProps } from "class-variance-authority"; import React from "react"; export interface ButtonVariants extends VariantProps {} -const buttonVariants = cva(["btn"], { - variants: { - intent: { - default: [], - outline: ["btn-outline"], +const buttonVariants = cva( + "relative overflow-hidden rounded border transition-all duration-500", + { + variants: { + variant: { + primary: "bg-primary-300", + secondary: "transparent", + }, + size: { + medium: "mb-5 w-400 px-6 py-2.5", + }, + animation: { + "growing-bubble-tl-primary": + "before:transition-width before:transition-height relative z-10 before:absolute before:left-0 before:top-0 before:z-0 before:h-0 before:w-0 before:-translate-x-1/2 before:-translate-y-1/2 before:rounded-full before:bg-primary-500 before:duration-500 before:ease-in-out hover:before:-z-50 hover:before:h-btn-h-cover hover:before:w-btn-w-cover", + "growing-bubble-tl-secondary": + "before:transition-width before:transition-height relative z-10 before:absolute before:left-0 before:top-0 before:z-0 before:h-0 before:w-0 before:-translate-x-1/2 before:-translate-y-1/2 before:rounded-full before:bg-primary-500 before:duration-500 before:ease-in-out hover:text-white hover:before:-z-50 hover:before:h-btn-h-cover hover:before:w-btn-w-cover", + }, + intent: { + default: "", + outline: "", + }, + textColor: { + white: "text-white", + blue: "primary-300", + }, + }, + defaultVariants: { + intent: "default", }, }, - defaultVariants: { - intent: "default", - }, -}); +); type Props = { children: React.ReactNode; } & React.ButtonHTMLAttributes & ButtonVariants; -export function Button({ children, intent, ...props }: Props) { +export function Button({ + children, + variant, + animation, + size, + intent, + textColor, + type = "button", + ...props +}: Props) { return ( - ); diff --git a/src/module/common/checkbox.tsx b/src/module/common/checkbox.tsx new file mode 100644 index 0000000..d570784 --- /dev/null +++ b/src/module/common/checkbox.tsx @@ -0,0 +1,85 @@ +import { cva, type VariantProps } from "class-variance-authority"; +import React from "react"; +import { Label } from "./label"; + +export interface CheckboxVariants + extends VariantProps {} + +const checkboxVariants = cva( + "peer size-[18px] cursor-pointer appearance-none rounded border border-solid bg-transparent transition-all duration-500 focus:outline-none focus:ring-0 focus:ring-offset-0 group-hover:border-primary-300", + { + variants: { + variant: { + primary: "border-gary-layout-primary", + }, + size: { + small: "text-sm", + }, + }, + defaultVariants: { + variant: "primary", + size: "small", + }, + }, +); + +const svgVariants = cva( + [ + "size-4", + "cursor-pointer", + "opacity-0", + "peer-checked:opacity-100", + "transition-opacity", + "duration-300", + ], + { + variants: { + variant: { + primary: "primary-300", + }, + }, + defaultVariants: { + variant: "primary", + }, + }, +); + +type CheckboxProps = { + label?: React.ReactNode; +} & React.InputHTMLAttributes & + CheckboxVariants; + +export function Checkbox({ + label, + variant, + color, + type = "checkbox", + ...props +}: CheckboxProps) { + return ( + + ); +} diff --git a/src/module/common/label.tsx b/src/module/common/label.tsx new file mode 100644 index 0000000..fe45b26 --- /dev/null +++ b/src/module/common/label.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +const labelVariants = cva( + [ + "label", + "cursor-pointer", + "transition-all", + "duration-500", + "group-hover:text-primary-300", + ], + { + variants: { + color: { + white: "text-white", + }, + size: { + small: "text-sm", + medium: "text-base", + large: "text-lg", + }, + fontWeight: { + normal: "font-normal", + bold: "font-bold", + }, + }, + defaultVariants: { + color: "white", + size: "small", + fontWeight: "normal", + }, + }, +); + +type LabelProps = { + children: React.ReactNode; +} & VariantProps; + +export const Label: React.FC = ({ + children, + color, + size, + fontWeight, +}) => { + return ( + + {children} + + ); +}; diff --git a/src/module/dashboard/components/header.tsx b/src/module/dashboard/components/header.tsx index c7f61a8..3f3875f 100644 --- a/src/module/dashboard/components/header.tsx +++ b/src/module/dashboard/components/header.tsx @@ -9,7 +9,7 @@ import { usePathname } from "next/navigation"; function Header() { const pathname = usePathname(); return ( -
+
{/* Menu toggle for mobile view or small screen */}
-

{pathname}

+

{pathname}

diff --git a/src/module/dashboard/components/left-sidebar.tsx b/src/module/dashboard/components/left-sidebar.tsx index e495d0d..8b59952 100644 --- a/src/module/dashboard/components/left-sidebar.tsx +++ b/src/module/dashboard/components/left-sidebar.tsx @@ -25,15 +25,15 @@ function LeftSidebar(props: LeftSidebarProps) { return (
-
    +
      -
    • +
    • {routes.map((route, k: number) => ( @@ -58,12 +58,12 @@ function LeftSidebar(props: LeftSidebarProps) { ) : ( {route.icon} {route.pageName} {pathname === route.path ? ( ) : null} @@ -74,11 +74,11 @@ function LeftSidebar(props: LeftSidebarProps) {
    {/* Profile icon, opening menu on click */} -
    +
    @@ -86,22 +86,22 @@ function LeftSidebar(props: LeftSidebarProps) {
    {`hello ${user?.displayName}`} - +
    • - + Bill History
    • -
      +
    • - + Logout
    • diff --git a/src/module/dashboard/components/sidebar-submenu.tsx b/src/module/dashboard/components/sidebar-submenu.tsx index f0f6927..48908ab 100644 --- a/src/module/dashboard/components/sidebar-submenu.tsx +++ b/src/module/dashboard/components/sidebar-submenu.tsx @@ -29,13 +29,13 @@ function SidebarSubmenu({ submenu, pageName, icon }: SidebarSubmenuProps) { }, [submenu]); return ( -
      +
      {/** Route header */} -
      setIsExpanded(!isExpanded)}> +
      setIsExpanded(!isExpanded)}> {icon} {pageName} @@ -43,7 +43,7 @@ function SidebarSubmenu({ submenu, pageName, icon }: SidebarSubmenuProps) { {/** Submenu list */}
        {submenu && @@ -51,12 +51,12 @@ function SidebarSubmenu({ submenu, pageName, icon }: SidebarSubmenuProps) {
      • {m.icon} {m.pageName} {pathname === m.path ? ( ) : null} diff --git a/src/module/system/theme-store.ts b/src/module/system/theme-store.ts index 38c8191..e4d9322 100644 --- a/src/module/system/theme-store.ts +++ b/src/module/system/theme-store.ts @@ -16,6 +16,6 @@ export const useThemeStore = create( }), { name: "theme-storage", - } - ) + }, + ), ); diff --git a/src/module/system/theme-switcher.tsx b/src/module/system/theme-switcher.tsx index 608e253..e2d9d19 100644 --- a/src/module/system/theme-switcher.tsx +++ b/src/module/system/theme-switcher.tsx @@ -21,11 +21,11 @@ export function ThemeSwitcher() { ); diff --git a/tailwind.config.ts b/tailwind.config.ts index 0be8901..2f914e4 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,4 +1,3 @@ -import daisyUi from "daisyui"; import type { Config } from "tailwindcss"; const config: Config = { @@ -10,13 +9,19 @@ const config: Config = { "gradient-conic": "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", }, + colors: { + "primary-300": "#70bbfd", + "primary-500": "#3ea3fc", + "gary-layout-primary": "rgb(96, 95, 123)", + }, + width: { + "btn-w-cover": "255%", + "400": "400px", + }, + height: { + "btn-h-cover": "500%", + }, }, }, - plugins: [daisyUi], - - daisyui: { - themes: ["light", "dark"], - }, - darkMode: ["selector", '[data-theme="dark"]'], }; export default config; diff --git a/yarn.lock b/yarn.lock index 1b7b880..58c7adf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -435,7 +435,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/runtime@^7.0.0": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.21.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== @@ -1827,7 +1827,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2013,6 +2013,21 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concurrently@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" @@ -2060,14 +2075,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -css-selector-tokenizer@^0.8: - version "0.8.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz#88267ef6238e64f2215ea2764b3e2cf498b845dd" - integrity sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -2078,21 +2085,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -culori@^3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/culori/-/culori-3.3.0.tgz#e33530adbd124d53bd6550394397e695eaaed739" - integrity sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ== - -daisyui@^4.12.10: - version "4.12.10" - resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-4.12.10.tgz#fc26b6da72c5855f4677d2f100f02e06c8e8a70f" - integrity sha512-jp1RAuzbHhGdXmn957Z2XsTZStXGHzFfF0FgIOZj3Wv9sH7OZgLfXTRZNfKVYxltGUOBsG1kbWAdF5SrqjebvA== - dependencies: - css-selector-tokenizer "^0.8" - culori "^3" - picocolors "^1" - postcss-js "^4" - damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -2130,6 +2122,13 @@ dataloader@^2.2.2: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + debounce@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -2720,11 +2719,6 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -4153,7 +4147,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1, picocolors@^1.0.0, picocolors@^1.0.1: +picocolors@^1.0.0, picocolors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== @@ -4187,7 +4181,7 @@ postcss-import@^15.1.0: read-cache "^1.0.0" resolve "^1.1.7" -postcss-js@^4, postcss-js@^4.0.1: +postcss-js@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== @@ -4493,7 +4487,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.5.5: +rxjs@^7.5.5, rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== @@ -4604,7 +4598,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -4670,6 +4664,11 @@ source-map-js@^1.0.2, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + sponge-case@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" @@ -4862,6 +4861,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -4967,6 +4973,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + ts-api-utils@^1.0.1: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" @@ -5368,7 +5379,7 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.0.0: +yargs@^17.0.0, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==