diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9055fb1 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,52 @@ +name: Lint + +on: + pull_request: + branches: ["*"] + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + + - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + + - name: Install Node.js + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 + with: + node-version: 18 + cache: "pnpm" + + - name: Install Dependencies + run: pnpm i --frozen-lockfile + + - name: Lint Format + run: pnpm lint:prettier + + - name: Check Types + run: pnpm build --filter=./packages/* + + - name: Run ESLint + run: pnpm lint --filter=./packages/* + + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + + - uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 + + - name: Install Node.js + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 + with: + node-version: 18 + cache: "pnpm" + + - name: Install Dependencies + run: pnpm i --frozen-lockfile + + - name: Build Check + run: pnpm build diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7494207 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +pnpm-lock.yaml +.github/**/*.md + +.content-collections/**/* diff --git a/.vscode/settings.json b/.vscode/settings.json index 562a23b..4034c15 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,4 +4,9 @@ "mode": "auto" } ], + "tailwindCSS.experimental.classRegex": [ + ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], + ["cn\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"] + ], + "editor.defaultFormatter": "esbenp.prettier-vscode" } diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index fd8f104..f10b6e0 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within @@ -125,4 +125,4 @@ enforcement ladder](https://github.com/mozilla/diversity). For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. \ No newline at end of file +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2d1b304..6b0a303 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,3 @@ - # Contribution Guidelines Welcome to our project! We appreciate your interest in contributing. Before you get started, please take a moment to review the following guidelines. diff --git a/apps/www/.eslintrc.json b/apps/www/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/apps/www/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/apps/www/app/api/search/route.ts b/apps/www/app/api/search/route.ts index 74983f9..f67671a 100644 --- a/apps/www/app/api/search/route.ts +++ b/apps/www/app/api/search/route.ts @@ -1,7 +1,7 @@ -import { getPages } from '@/app/source'; -import { createSearchAPI } from 'fumadocs-core/search/server'; +import { getPages } from "@/app/source"; +import { createSearchAPI } from "fumadocs-core/search/server"; -export const { GET } = createSearchAPI('advanced', { +export const { GET } = createSearchAPI("advanced", { indexes: getPages().map((page) => ({ title: page.data.title, structuredData: page.data.exports.structuredData, diff --git a/apps/www/app/docs/layout.tsx b/apps/www/app/docs/layout.tsx index ae2cc9e..61f884d 100644 --- a/apps/www/app/docs/layout.tsx +++ b/apps/www/app/docs/layout.tsx @@ -1,6 +1,6 @@ -import { DocsLayout } from 'fumadocs-ui/layout'; -import type { ReactNode } from 'react'; -import { docsOptions } from '../layout.config'; +import { DocsLayout } from "fumadocs-ui/layout"; +import type { ReactNode } from "react"; +import { docsOptions } from "../layout.config"; export default function Layout({ children }: { children: ReactNode }) { return {children}; diff --git a/apps/www/app/source.ts b/apps/www/app/source.ts index 1ec88a2..76a8855 100644 --- a/apps/www/app/source.ts +++ b/apps/www/app/source.ts @@ -2,7 +2,7 @@ import { map } from "@/.map"; import { createMDXSource, defaultSchemas } from "fumadocs-mdx"; import { BuildPageTreeOptions, loader } from "fumadocs-core/source"; import { PageTree } from "fumadocs-core/server"; -import { z } from 'zod'; +import { z } from "zod"; // @ts-ignore export const { @@ -13,7 +13,7 @@ export const { getPage: (slugs: string[], language?: string) => any; getPages: (language?: string) => any[]; pageTree: ( - slug?: string[] | undefined + slug?: string[] | undefined, ) => Partial>; // pageTree: PageTree.Root; } = loader({ diff --git a/apps/www/components/preview/index.tsx b/apps/www/components/preview/index.tsx index ebd03bc..50852ad 100644 --- a/apps/www/components/preview/index.tsx +++ b/apps/www/components/preview/index.tsx @@ -4,11 +4,11 @@ import { Wrapper } from "./wrapper"; import { Avatar, AvatarWithBadge } from "ruru-ui/components/avatar"; const Button = dynamic(() => - import("ruru-ui/components/button").then((m) => m.Button) + import("ruru-ui/components/button").then((m) => m.Button), ); const Spinner = dynamic(() => - import("ruru-ui/components/spinner").then((m) => m.Spinner) + import("ruru-ui/components/spinner").then((m) => m.Spinner), ); export default { diff --git a/apps/www/components/preview/wrapper.tsx b/apps/www/components/preview/wrapper.tsx index 79e4fcd..b1740e8 100644 --- a/apps/www/components/preview/wrapper.tsx +++ b/apps/www/components/preview/wrapper.tsx @@ -1,5 +1,5 @@ -import type { HTMLAttributes } from 'react'; -import { cn } from '@/utils/cn'; +import type { HTMLAttributes } from "react"; +import { cn } from "@/utils/cn"; export function Wrapper( props: HTMLAttributes, @@ -8,7 +8,7 @@ export function Wrapper(
diff --git a/apps/www/content/docs/changelog.mdx b/apps/www/content/docs/changelog.mdx index f8d554e..483f858 100644 --- a/apps/www/content/docs/changelog.mdx +++ b/apps/www/content/docs/changelog.mdx @@ -1,9 +1,8 @@ --- -title: Changelog +title: Changelog description: Latest updates and announcements. --- -import { Callout } from 'fumadocs-ui/components/callout'; +import { Callout } from "fumadocs-ui/components/callout"; - - + diff --git a/apps/www/content/docs/components/avatar.mdx b/apps/www/content/docs/components/avatar.mdx index 265ff77..1e96377 100644 --- a/apps/www/content/docs/components/avatar.mdx +++ b/apps/www/content/docs/components/avatar.mdx @@ -18,7 +18,7 @@ import { Callout } from "fumadocs-ui/components/callout"; issue: [#9](https://github.com/ruru-m07/ruru-ui/issues/9) - if you can fix this then feel free to submit a PR : ) +if you can fix this then feel free to submit a PR : ) diff --git a/apps/www/content/docs/components/button.mdx b/apps/www/content/docs/components/button.mdx index 39610c6..900c81c 100644 --- a/apps/www/content/docs/components/button.mdx +++ b/apps/www/content/docs/components/button.mdx @@ -46,7 +46,9 @@ import { buttonVariants } from "ruru-ui/components/button"; ``` ```tsx -Click here + + Click here + ``` Alternatively, you can set the `asChild` parameter and nest the link component. @@ -226,8 +228,8 @@ The `Button` component allows you to show a loading spinner when the button is i You can show a loading spinner by passing the `loading` prop to the `Button` component. This will display a spinner in place of the button text, indicating to the user that something is happening in the background. -| Name | Type | Default | Description | -| ----------- | ------- | ------- | ------------------------------------------------- | +| Name | Type | Default | Description | +| ----------- | ------- | ------- | -------------------------------------------------- | | **loading** | boolean | false | If `true` , the button will be in a loading state. | So go ahead, show a loading spinner on your button and let your users know that something is happening behind the scenes! @@ -297,7 +299,7 @@ The `Button` component allows you to disable the button by passing the `disabled | Name | Type | Default | Description | | ------------ | -------------------------------------- | --------- | ------------------------------------------------ | | **children** | ReactNode | - | The content of the button. | -| **disabled** | boolean | false | If `true` , the button will be disabled. | +| **disabled** | boolean | false | If `true` , the button will be disabled. | | **onClick** | ( ) => void | - | The function to call when the button is clicked. | | **type** | 'button' \| 'submit' \| 'reset' | 'button' | The type of the button. | | **variant** | 'primary' \| 'secondary' \| 'tertiary' | 'primary' | The variant of the button. | diff --git a/apps/www/content/docs/components/spinner.mdx b/apps/www/content/docs/components/spinner.mdx index cba09fc..ddff00d 100644 --- a/apps/www/content/docs/components/spinner.mdx +++ b/apps/www/content/docs/components/spinner.mdx @@ -60,4 +60,4 @@ You can customize the size of the spinner by passing the `size` prop. | Name | Type | Default | Description | | --------- | ------ | ------- | ------------------------------ | | size | number | 20 | The size of the spinner. | -| className | string | - | The class name of the spinner. | +| className | string | - | The class name of the spinner. | diff --git a/apps/www/content/docs/dark-mode.mdx b/apps/www/content/docs/dark-mode.mdx index 685dc68..dd94b8f 100644 --- a/apps/www/content/docs/dark-mode.mdx +++ b/apps/www/content/docs/dark-mode.mdx @@ -3,7 +3,6 @@ title: Dark Mode description: How to enable dark mode in your app. --- -import { Callout } from 'fumadocs-ui/components/callout'; +import { Callout } from "fumadocs-ui/components/callout"; - - + diff --git a/apps/www/content/docs/index.mdx b/apps/www/content/docs/index.mdx index 176ef5f..8f09202 100644 --- a/apps/www/content/docs/index.mdx +++ b/apps/www/content/docs/index.mdx @@ -5,7 +5,7 @@ description: Welcome to ruru UI, a modern and flexible UI library designed to he # Welcome to ruru UI -Welcome to **ruru UI**, a modern and flexible UI library designed to help you build beautiful, responsive, and accessible web applications with ease. +Welcome to **ruru UI**, a modern and flexible UI library designed to help you build beautiful, responsive, and accessible web applications with ease. ## Why ruru UI? diff --git a/apps/www/content/docs/installation.mdx b/apps/www/content/docs/installation.mdx index b6224c3..9fbc633 100644 --- a/apps/www/content/docs/installation.mdx +++ b/apps/www/content/docs/installation.mdx @@ -3,34 +3,17 @@ title: Installation description: To get started with ruru UI, you'll need to install the necessary dependencies and set up your project structure. This guide will walk you through the process step by step. --- -import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; - +import { Tab, Tabs } from "fumadocs-ui/components/tabs"; ## Install Dependencies First, you'll need to install **ruru UI** and its peer dependencies. You can do this using npm or yarn: - - - ```bash - npm install ruru-ui - ``` - - - ```bash - pnpm install ruru-ui - ``` - - - ```bash - yarn add ruru-ui - ``` - - - ```bash - bun add ruru-ui - ``` - + + ```bash npm install ruru-ui ``` + ```bash pnpm install ruru-ui ``` + ```bash yarn add ruru-ui ``` + ```bash bun add ruru-ui ``` ## Import Styles @@ -63,16 +46,16 @@ That's it! You're now ready to start building beautiful interfaces with **ruru U title="Explore the Components" description="Discover all the components and features ruru UI has to offer." /> - - + + --- diff --git a/apps/www/content/docs/typography.mdx b/apps/www/content/docs/typography.mdx index 50c762c..27ec489 100644 --- a/apps/www/content/docs/typography.mdx +++ b/apps/www/content/docs/typography.mdx @@ -1,9 +1,8 @@ --- -title: Typography +title: Typography description: Styles for headings, paragraphs, lists...etc. --- -import { Callout } from 'fumadocs-ui/components/callout'; +import { Callout } from "fumadocs-ui/components/callout"; - - + diff --git a/apps/www/next.config.mjs b/apps/www/next.config.mjs index 64a41a6..e4bb0a3 100644 --- a/apps/www/next.config.mjs +++ b/apps/www/next.config.mjs @@ -1,15 +1,14 @@ -import createMDX from 'fumadocs-mdx/config'; -import { rehypeCodeDefaultOptions } from 'fumadocs-core/mdx-plugins'; +import createMDX from "fumadocs-mdx/config"; +import { rehypeCodeDefaultOptions } from "fumadocs-core/mdx-plugins"; import { remarkDocGen, remarkInstall, fileGenerator, typescriptGenerator, -} from 'fumadocs-docgen'; -import { transformerTwoslash } from 'fumadocs-twoslash'; -import rehypeKatex from 'rehype-katex'; -import remarkMath from 'remark-math'; - +} from "fumadocs-docgen"; +import { transformerTwoslash } from "fumadocs-twoslash"; +import rehypeKatex from "rehype-katex"; +import remarkMath from "remark-math"; /** @type {import('next').NextConfig} */ const config = { @@ -25,24 +24,24 @@ const withMDX = createMDX({ mdxOptions: { rehypeCodeOptions: { themes: { - light: 'catppuccin-latte', - dark: 'catppuccin-mocha', + light: "catppuccin-latte", + dark: "catppuccin-mocha", }, transformers: [ ...(rehypeCodeDefaultOptions.transformers ?? []), transformerTwoslash(), { - name: 'fumadocs:remove-escape', + name: "fumadocs:remove-escape", code(element) { element.children.forEach((line) => { - if (line.type !== 'element') return; + if (line.type !== "element") return; line.children.forEach((child) => { - if (child.type !== 'element') return; + if (child.type !== "element") return; const textNode = child.children[0]; - if (!textNode || textNode.type !== 'text') return; + if (!textNode || textNode.type !== "text") return; - textNode.value = textNode.value.replace(/\[\\!code/g, '[!code'); + textNode.value = textNode.value.replace(/\[\\!code/g, "[!code"); }); }); @@ -51,10 +50,10 @@ const withMDX = createMDX({ }, ], }, - lastModifiedTime: 'git', + lastModifiedTime: "git", remarkPlugins: [ remarkMath, - [remarkInstall, { persist: { id: 'package-manager' } }], + [remarkInstall, { persist: { id: "package-manager" } }], [remarkDocGen, { generators: [typescriptGenerator(), fileGenerator()] }], ], rehypePlugins: (v) => [rehypeKatex, ...v], diff --git a/apps/www/package.json b/apps/www/package.json index 864db8f..5f5efee 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -5,7 +5,8 @@ "scripts": { "build": "next build", "dev": "next dev", - "start": "next start" + "start": "next start", + "lint": "next lint" }, "dependencies": { "@radix-ui/react-icons": "^1.3.0", @@ -34,6 +35,6 @@ "autoprefixer": "^10.4.19", "postcss": "^8.4.39", "tailwindcss": "^3.4.4", - "typescript": "^5.5.3" + "typescript": "^5.5.0" } } diff --git a/apps/www/tsconfig.json b/apps/www/tsconfig.json index 37e52a7..77171ab 100644 --- a/apps/www/tsconfig.json +++ b/apps/www/tsconfig.json @@ -19,7 +19,7 @@ "incremental": true, "paths": { "@/*": ["./*"], - "@ruru-ui": ["../../packages/ui/dist"], + "@ruru-ui": ["../../packages/ui/dist"] }, "plugins": [ { diff --git a/apps/www/utils/cn.ts b/apps/www/utils/cn.ts index ba66fd2..8e473da 100644 --- a/apps/www/utils/cn.ts +++ b/apps/www/utils/cn.ts @@ -1 +1 @@ -export { twMerge as cn } from 'tailwind-merge'; +export { twMerge as cn } from "tailwind-merge"; diff --git a/apps/www/utils/metadata.ts b/apps/www/utils/metadata.ts index 09e1579..092093b 100644 --- a/apps/www/utils/metadata.ts +++ b/apps/www/utils/metadata.ts @@ -1,4 +1,4 @@ -import type { Metadata } from 'next/types'; +import type { Metadata } from "next/types"; export function createMetadata(override: Metadata): Metadata { return { @@ -6,15 +6,15 @@ export function createMetadata(override: Metadata): Metadata { openGraph: { title: override.title ?? undefined, description: override.description ?? undefined, - url: 'https://ruru-ui.vercel.app', - images: '/banner.png', - siteName: 'Ruru UI', + url: "https://ruru-ui.vercel.app", + images: "/banner.png", + siteName: "Ruru UI", ...override.openGraph, }, }; } export const baseUrl = - process.env.NODE_ENV === 'development' - ? new URL('http://localhost:3000') + process.env.NODE_ENV === "development" + ? new URL("http://localhost:3000") : new URL(`https://${process.env.VERCEL_URL!}`); diff --git a/package.json b/package.json index bb9fac7..e7d4ba8 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,30 @@ { "name": "root", + "version": "0.0.0", "private": true, "scripts": { - "build": "turbo build", - "dev": "turbo dev", - "lint": "turbo lint", - "format": "prettier --write \"**/*.{ts,tsx,md}\"" + "build": "turbo run build", + "clean": "turbo run clean", + "dev": "turbo run dev", + "lint": "turbo run lint", + "format": "prettier --write \"**/*.{ts,tsx,md}\"", + "lint:prettier": "prettier --cache --check --ignore-path .gitignore --ignore-path .prettierignore .", + "prettier": "prettier --cache --write --list-different --ignore-path .gitignore --ignore-path .prettierignore .", + "types:check": "turbo run types:check" }, "devDependencies": { - "prettier": "^3.2.5", - "turbo": "^2.0.6", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "@vercel/style-guide": "^6.0.0", + "eslint": "^8.57.0", + "eslint-plugin-tailwindcss": "^3.17.4", + "eslint-plugin-tsdoc": "^0.3.0", + "prettier": "^3.3.3", + "turbo": "^2.0.9", "typescript": "^5.4.5" }, - "packageManager": "pnpm@8.15.6", + "packageManager": "pnpm@9.5.0", "engines": { - "node": ">=18" + "node": ">=18.17.0" } } diff --git a/packages/tsconfig/react-library.json b/packages/tsconfig/react-library.json index 3f61a22..73fdf64 100644 --- a/packages/tsconfig/react-library.json +++ b/packages/tsconfig/react-library.json @@ -1,13 +1,12 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "display": "React Library", - "extends": "./base.json", - "compilerOptions": { - "noEmit": true, - "jsx": "react-jsx", - "lib": ["ESNext", "DOM"], - "module": "ESNext", - "target": "ES2020" - } + "$schema": "https://json.schemastore.org/tsconfig", + "display": "React Library", + "extends": "./base.json", + "compilerOptions": { + "noEmit": true, + "jsx": "react-jsx", + "lib": ["ESNext", "DOM"], + "module": "ESNext", + "target": "ES2020" } - \ No newline at end of file +} diff --git a/packages/ui/.eslintrc.cjs b/packages/ui/.eslintrc.cjs index b350c06..5a0334b 100644 --- a/packages/ui/.eslintrc.cjs +++ b/packages/ui/.eslintrc.cjs @@ -1,9 +1,16 @@ module.exports = { - extends: ['custom/next'], + // Exclude this file from ESLint's list of included files + ignorePatterns: [".eslintrc.cjs"], + plugins: ["@typescript-eslint/eslint-plugin", "eslint-plugin-tsdoc"], + extends: ["plugin:@typescript-eslint/recommended"], + parser: "@typescript-eslint/parser", + parserOptions: { + project: "./tsconfig.json", + tsconfigRootDir: __dirname, + ecmaVersion: 2018, + sourceType: "module", + }, rules: { - // for the import hacks - '@typescript-eslint/consistent-type-imports': 'off', - // some arrays like link items won't be changed - 'react/no-array-index-key': 'off', + // 'tsdoc/syntax': 'warn' }, }; diff --git a/packages/ui/css/image-zoom.css b/packages/ui/css/image-zoom.css index cbf380e..c3bf9be 100644 --- a/packages/ui/css/image-zoom.css +++ b/packages/ui/css/image-zoom.css @@ -13,7 +13,7 @@ display: none; } -[data-rmiz-content='found'] img { +[data-rmiz-content="found"] img { cursor: zoom-in; } @@ -34,7 +34,7 @@ } [data-rmiz-modal]:focus-visible { - outline: 'none'; + outline: "none"; } [data-rmiz-modal-overlay] { @@ -43,12 +43,12 @@ inset: 0; } -[data-rmiz-modal-overlay='hidden'] { +[data-rmiz-modal-overlay="hidden"] { background-color: transparent; } -[data-rmiz-modal-overlay='visible'] { - background-color: theme('colors.background / 80%'); +[data-rmiz-modal-overlay="visible"] { + background-color: theme("colors.background / 80%"); } [data-rmiz-modal-content] { diff --git a/packages/ui/css/twoslash.css b/packages/ui/css/twoslash.css index d9c2eb7..e47a85d 100644 --- a/packages/ui/css/twoslash.css +++ b/packages/ui/css/twoslash.css @@ -115,7 +115,7 @@ top: -1.2em; height: 1em; left: -1px; - content: ' '; + content: " "; background-color: hsl(var(--foreground)); } diff --git a/packages/ui/postcss.config.js b/packages/ui/postcss.config.js index 8abe901..f4ab683 100644 --- a/packages/ui/postcss.config.js +++ b/packages/ui/postcss.config.js @@ -1,8 +1,8 @@ export default { plugins: { tailwindcss: {}, - 'postcss-lightningcss': { - browsers: '>= .25%', + "postcss-lightningcss": { + browsers: ">= .25%", }, }, }; diff --git a/packages/ui/src/components/avatar.tsx b/packages/ui/src/components/avatar.tsx index ae8406e..19a21db 100644 --- a/packages/ui/src/components/avatar.tsx +++ b/packages/ui/src/components/avatar.tsx @@ -78,7 +78,7 @@ const Avatar = React.forwardRef( {...props} /> ); - } + }, ); Avatar.displayName = "Avatar"; @@ -111,7 +111,7 @@ type AvatarGroupProps = Omit< * ``` * */ - members: Array<{ src: string; alt: string }>; + members: { src: string; alt: string }[]; /** * Size of the avatar * @default 30 @@ -158,8 +158,8 @@ const AvatarGroup = React.forwardRef( {extraMembersCount > 0 && (
( )}
); - } + }, ); AvatarGroup.displayName = "AvatarGroup"; @@ -283,7 +283,7 @@ const AvatarWithBadge = React.forwardRef( />
); - } + }, ); AvatarWithBadge.displayName = "AvatarWithBadge"; diff --git a/packages/ui/src/components/button.tsx b/packages/ui/src/components/button.tsx index 8867c09..0c791ab 100644 --- a/packages/ui/src/components/button.tsx +++ b/packages/ui/src/components/button.tsx @@ -12,25 +12,25 @@ export const buttonVariants = cva( variants: { variant: { default: - "bg-primary hover:bg-primary/85 text-primary-foreground shadow hover:shadow-md", + "bg-primary text-primary-foreground shadow hover:bg-primary/85 hover:shadow-md", secondary: - "bg-primary-foreground dark:hover:bg-[#202020] hover:bg-[#f3f3f3] border-[1.5px] border-input", - tertiary: "dark:hover:bg-[#202020] hover:bg-[#f3f3f3] text-primary", + "border-input border-[1.5px] bg-primary-foreground hover:bg-[#f3f3f3] dark:hover:bg-[#202020]", + tertiary: "text-primary hover:bg-[#f3f3f3] dark:hover:bg-[#202020]", error: "bg-[#d93036] hover:bg-[#ff6166]", - warning: "bg-[#ff990a] hover:bg-[#d27504] text-primary-foreground", + warning: "bg-[#ff990a] text-primary-foreground hover:bg-[#d27504]", }, size: { default: "h-9 px-4 py-2", small: "h-8 rounded-md px-3 text-xs", large: "h-10 rounded-md px-8", - icon: "h-9 w-9", + icon: "size-9", }, }, defaultVariants: { variant: "default", size: "default", }, - } + }, ); export interface ButtonProps @@ -133,34 +133,34 @@ export const Button = React.forwardRef( loading = false, ...props }, - ref + ref, ) => { const Comp = asChild ? Slot : "button"; return ( -
+
- {loading && } - {prefix && ( + {loading ? : null} + {prefix ? ( {prefix} - )} + ) : null} {props.children} - {suffix && ( + {suffix ? ( {suffix} - )} + ) : null}
); - } + }, ); Button.displayName = "Button"; diff --git a/packages/ui/src/components/card.tsx b/packages/ui/src/components/card.tsx index e2d6147..e6e88cb 100644 --- a/packages/ui/src/components/card.tsx +++ b/packages/ui/src/components/card.tsx @@ -1,5 +1,4 @@ import * as React from "react"; - import { cn } from "@/utils/cn"; /** @@ -21,7 +20,7 @@ const Card = React.forwardRef< ref={ref} className={cn( "rounded-xl border bg-card text-card-foreground shadow", - className + className, )} {...props} /> diff --git a/packages/ui/src/components/spinner.tsx b/packages/ui/src/components/spinner.tsx index 1cac982..3486b32 100644 --- a/packages/ui/src/components/spinner.tsx +++ b/packages/ui/src/components/spinner.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/utils/cn"; import React from "react"; +import { cn } from "@/utils/cn"; type SpinnerProps = React.ComponentPropsWithoutRef<"div"> & { /** @@ -68,14 +68,17 @@ const Spinner = React.forwardRef( role="status" aria-label="Loading" ref={ref} - style={{ width: `${size ? size : "20"}px`, height: `${size ? size : "20"}px` }} + style={{ + width: `${size ? size : "20"}px`, + height: `${size ? size : "20"}px`, + }} {...props} >
{[...Array(12)].map((_, i) => (
(
); - } + }, ); Spinner.displayName = "Spinner"; diff --git a/packages/ui/src/interface/RuruProviderProps.ts b/packages/ui/src/interface/RuruProviderProps.ts index 748f4f0..7c8da90 100644 --- a/packages/ui/src/interface/RuruProviderProps.ts +++ b/packages/ui/src/interface/RuruProviderProps.ts @@ -1,4 +1,4 @@ -import { ReactNode } from "react"; +import { type ReactNode } from "react"; /** * Properties for the `RuruProvider` component. diff --git a/packages/ui/src/interface/RuruThemeProviderProps.ts b/packages/ui/src/interface/RuruThemeProviderProps.ts index bcfb6ad..0e5a205 100644 --- a/packages/ui/src/interface/RuruThemeProviderProps.ts +++ b/packages/ui/src/interface/RuruThemeProviderProps.ts @@ -1,4 +1,4 @@ -import { ReactNode } from "react"; +import { type ReactNode } from "react"; /** * Properties for the `RuruThemeProvider` component. diff --git a/packages/ui/src/provider/index.tsx b/packages/ui/src/provider/index.tsx index 433a0e4..c9efcce 100644 --- a/packages/ui/src/provider/index.tsx +++ b/packages/ui/src/provider/index.tsx @@ -1,9 +1,9 @@ "use client"; -import React, { createContext, ReactNode, useContext, useState } from "react"; +import React, { createContext, useContext, useState } from "react"; +import { type RuruContextType } from "@/interface/RuruContextType"; +import { type RuruProviderProps } from "@/interface/RuruProviderProps"; import { RuruThemeProvider } from "./theme"; -import { RuruContextType } from "@/interface/RuruContextType"; -import { RuruProviderProps } from "@/interface/RuruProviderProps"; // Create the context with default values const RuruContext = createContext(undefined); diff --git a/packages/ui/src/provider/theme.tsx b/packages/ui/src/provider/theme.tsx index 27cc1b9..1d44920 100644 --- a/packages/ui/src/provider/theme.tsx +++ b/packages/ui/src/provider/theme.tsx @@ -1,8 +1,8 @@ "use client"; -import { RuruThemeProviderProps } from "@/interface/RuruThemeProviderProps"; import { ThemeProvider } from "next-themes"; import React from "react"; +import { type RuruThemeProviderProps } from "@/interface/RuruThemeProviderProps"; /** * A wrapper component to provide theme context using `next-themes`. diff --git a/packages/ui/src/tailwind-plugin.ts b/packages/ui/src/tailwind-plugin.ts index f54d438..610a07a 100644 --- a/packages/ui/src/tailwind-plugin.ts +++ b/packages/ui/src/tailwind-plugin.ts @@ -49,7 +49,7 @@ export interface Preset { function getThemeStyles(prefix: string, theme: Theme): Record { return Object.fromEntries( - Object.entries(theme).map(([k, v]) => [variableName(prefix, k), v]) + Object.entries(theme).map(([k, v]) => [variableName(prefix, k), v]), ); } @@ -215,7 +215,7 @@ export const Ui = plugin.withOptions( }, }, }, - }) + }), ); export function createPreset(options: UIOptions = {}): PresetsConfig { diff --git a/packages/ui/src/theme/animations.ts b/packages/ui/src/theme/animations.ts index 744d0fc..a5ab2a4 100644 --- a/packages/ui/src/theme/animations.ts +++ b/packages/ui/src/theme/animations.ts @@ -1,68 +1,68 @@ export const animations = { keyframes: { - 'collapsible-down': { - from: { height: '0', opacity: '0' }, + "collapsible-down": { + from: { height: "0", opacity: "0" }, to: { - height: 'var(--radix-collapsible-content-height)', + height: "var(--radix-collapsible-content-height)", }, }, - 'collapsible-up': { + "collapsible-up": { from: { - height: 'var(--radix-collapsible-content-height)', + height: "var(--radix-collapsible-content-height)", }, - to: { height: '0', opacity: '0' }, + to: { height: "0", opacity: "0" }, }, - 'accordion-down': { - from: { height: '0', opacity: '0.5' }, - to: { height: 'var(--radix-accordion-content-height)' }, + "accordion-down": { + from: { height: "0", opacity: "0.5" }, + to: { height: "var(--radix-accordion-content-height)" }, }, - 'accordion-up': { - from: { height: 'var(--radix-accordion-content-height)' }, - to: { height: '0', opacity: '0.5' }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0", opacity: "0.5" }, }, - 'dialog-in': { - from: { transform: 'scale(0.95) translate(-50%, 0)', opacity: '0' }, - to: { transform: 'scale(1) translate(-50%, 0)' }, + "dialog-in": { + from: { transform: "scale(0.95) translate(-50%, 0)", opacity: "0" }, + to: { transform: "scale(1) translate(-50%, 0)" }, }, - 'dialog-out': { - from: { transform: 'scale(1) translate(-50%, 0)' }, - to: { transform: 'scale(0.95) translateY(-50%, 0)', opacity: '0' }, + "dialog-out": { + from: { transform: "scale(1) translate(-50%, 0)" }, + to: { transform: "scale(0.95) translateY(-50%, 0)", opacity: "0" }, }, - 'popover-in': { - from: { opacity: '0', transform: 'scale(0.95) translateY(-10px)' }, - to: { opacity: '1', transform: 'scale(1) translateY(0)' }, + "popover-in": { + from: { opacity: "0", transform: "scale(0.95) translateY(-10px)" }, + to: { opacity: "1", transform: "scale(1) translateY(0)" }, }, - 'popover-out': { - from: { opacity: '1', transform: 'scale(1) translateY(0)' }, - to: { opacity: '0', transform: 'scale(0.95) translateY(-10px)' }, + "popover-out": { + from: { opacity: "1", transform: "scale(1) translateY(0)" }, + to: { opacity: "0", transform: "scale(0.95) translateY(-10px)" }, }, - 'sidebar-collapse': { + "sidebar-collapse": { // retain the current styles until collapsed - '0%, 100%': { - top: '0', - height: '100dvh', - 'border-radius': 'none', + "0%, 100%": { + top: "0", + height: "100dvh", + "border-radius": "none", }, }, - 'fade-in': { - from: { opacity: '0' }, - to: { opacity: '1' }, + "fade-in": { + from: { opacity: "0" }, + to: { opacity: "1" }, }, - 'fade-out': { - to: { opacity: '0' }, + "fade-out": { + to: { opacity: "0" }, }, }, animation: { - 'fade-in': 'fade-in 300ms ease', - 'fade-out': 'fade-out 300ms ease', - 'dialog-in': 'dialog-in 200ms cubic-bezier(0.32, 0.72, 0, 1)', - 'dialog-out': 'dialog-out 300ms cubic-bezier(0.32, 0.72, 0, 1)', - 'popover-in': 'popover-in 150ms ease', - 'popover-out': 'popover-out 150ms ease', - 'collapsible-down': 'collapsible-down 150ms ease-out', - 'collapsible-up': 'collapsible-up 150ms ease-out', - 'accordion-down': 'accordion-down 200ms ease-out', - 'accordion-up': 'accordion-up 200ms ease-out', - 'sidebar-collapse': 'sidebar-collapse 150ms', + "fade-in": "fade-in 300ms ease", + "fade-out": "fade-out 300ms ease", + "dialog-in": "dialog-in 200ms cubic-bezier(0.32, 0.72, 0, 1)", + "dialog-out": "dialog-out 300ms cubic-bezier(0.32, 0.72, 0, 1)", + "popover-in": "popover-in 150ms ease", + "popover-out": "popover-out 150ms ease", + "collapsible-down": "collapsible-down 150ms ease-out", + "collapsible-up": "collapsible-up 150ms ease-out", + "accordion-down": "accordion-down 200ms ease-out", + "accordion-up": "accordion-up 200ms ease-out", + "sidebar-collapse": "sidebar-collapse 150ms", }, }; diff --git a/packages/ui/src/theme/colors.ts b/packages/ui/src/theme/colors.ts index dd6afe5..015da42 100644 --- a/packages/ui/src/theme/colors.ts +++ b/packages/ui/src/theme/colors.ts @@ -1,264 +1,264 @@ -import type { Preset } from '@/tailwind-plugin'; +import type { Preset } from "@/tailwind-plugin"; const defaultPreset: Preset = { light: { - background: '0 0% 98%', - foreground: '0 0% 3.9%', - muted: '0 0% 96.1%', - 'muted-foreground': '0 0% 45.1%', - popover: '0 0% 100%', - 'popover-foreground': '0 0% 15.1%', - card: '0 0% 99.7%', - 'card-foreground': '0 0% 3.9%', - border: '0 0% 89.8%', - primary: '0 0% 9%', - 'primary-foreground': '0 0% 98%', - secondary: '0 0% 96.1%', - 'secondary-foreground': '0 0% 9%', - accent: '0 0% 94.1%', - 'accent-foreground': '0 0% 9%', - ring: '0 0% 63.9%', + background: "0 0% 98%", + foreground: "0 0% 3.9%", + muted: "0 0% 96.1%", + "muted-foreground": "0 0% 45.1%", + popover: "0 0% 100%", + "popover-foreground": "0 0% 15.1%", + card: "0 0% 99.7%", + "card-foreground": "0 0% 3.9%", + border: "0 0% 89.8%", + primary: "0 0% 9%", + "primary-foreground": "0 0% 98%", + secondary: "0 0% 96.1%", + "secondary-foreground": "0 0% 9%", + accent: "0 0% 94.1%", + "accent-foreground": "0 0% 9%", + ring: "0 0% 63.9%", }, dark: { - background: '0 0% 3.9%', - foreground: '0 0% 94%', - muted: '0 0% 12.9%', - 'muted-foreground': '0 0% 60.9%', - popover: '0 0% 7%', - 'popover-foreground': '0 0% 88%', - card: '0 0% 6.0%', - 'card-foreground': '0 0% 98%', - border: '0 0% 18%', - primary: '0 0% 98%', - 'primary-foreground': '0 0% 9%', - secondary: '0 0% 12.9%', - 'secondary-foreground': '0 0% 98%', - accent: '0 0% 12.9%', - 'accent-foreground': '0 0% 98%', - ring: '0 0% 14.9%', + background: "0 0% 3.9%", + foreground: "0 0% 94%", + muted: "0 0% 12.9%", + "muted-foreground": "0 0% 60.9%", + popover: "0 0% 7%", + "popover-foreground": "0 0% 88%", + card: "0 0% 6.0%", + "card-foreground": "0 0% 98%", + border: "0 0% 18%", + primary: "0 0% 98%", + "primary-foreground": "0 0% 9%", + secondary: "0 0% 12.9%", + "secondary-foreground": "0 0% 98%", + accent: "0 0% 12.9%", + "accent-foreground": "0 0% 98%", + ring: "0 0% 14.9%", }, }; const oceanPreset: Preset = { light: { - background: '0 0% 98%', - foreground: '0 0% 3.9%', - muted: '220 90% 96.1%', - 'muted-foreground': '0 0% 45.1%', - popover: '0 0% 98%', - 'popover-foreground': '0 0% 15.1%', - card: '220 50% 98%', - 'card-foreground': '0 0% 3.9%', - border: '220 50% 89.8%', - primary: '210 80% 20.2%', - 'primary-foreground': '0 0% 98%', - secondary: '220 90% 96.1%', - 'secondary-foreground': '0 0% 9%', - accent: '220 50% 94.1%', - 'accent-foreground': '0 0% 9%', - ring: '220 100% 63.9%', + background: "0 0% 98%", + foreground: "0 0% 3.9%", + muted: "220 90% 96.1%", + "muted-foreground": "0 0% 45.1%", + popover: "0 0% 98%", + "popover-foreground": "0 0% 15.1%", + card: "220 50% 98%", + "card-foreground": "0 0% 3.9%", + border: "220 50% 89.8%", + primary: "210 80% 20.2%", + "primary-foreground": "0 0% 98%", + secondary: "220 90% 96.1%", + "secondary-foreground": "0 0% 9%", + accent: "220 50% 94.1%", + "accent-foreground": "0 0% 9%", + ring: "220 100% 63.9%", }, dark: { - 'card-foreground': '220 60% 94.5%', - 'primary-foreground': '0 0% 9%', - 'secondary-foreground': '220 80% 90%', - ring: '205 100% 85%', - card: '220 50% 10%', - muted: '220 50% 10%', - 'muted-foreground': '220 30% 65%', - 'accent-foreground': '220 80% 90%', - popover: '220 50% 10%', - 'popover-foreground': '220 30% 65%', - accent: '220 40% 20%', - secondary: '220 50% 20%', - background: '220 60% 6%', - foreground: '220 60% 94.5%', - primary: '205 100% 85%', - border: '220 50% 20%', + "card-foreground": "220 60% 94.5%", + "primary-foreground": "0 0% 9%", + "secondary-foreground": "220 80% 90%", + ring: "205 100% 85%", + card: "220 50% 10%", + muted: "220 50% 10%", + "muted-foreground": "220 30% 65%", + "accent-foreground": "220 80% 90%", + popover: "220 50% 10%", + "popover-foreground": "220 30% 65%", + accent: "220 40% 20%", + secondary: "220 50% 20%", + background: "220 60% 6%", + foreground: "220 60% 94.5%", + primary: "205 100% 85%", + border: "220 50% 20%", }, css: { - '.dark body': { - 'background-image': - 'linear-gradient(rgba(5, 105, 255, 0.15), transparent 20rem, transparent)', + ".dark body": { + "background-image": + "linear-gradient(rgba(5, 105, 255, 0.15), transparent 20rem, transparent)", }, }, }; const neutral: Preset = { light: { - background: '0 0% 96%', - foreground: '0 0% 3.9%', - muted: '0 0% 96.1%', - 'muted-foreground': '0 0% 45.1%', - popover: '0 0% 100%', - 'popover-foreground': '0 0% 15.1%', - card: '0 0% 94.7%', - 'card-foreground': '0 0% 3.9%', - border: '0 0% 89.8%', - primary: '0 0% 9%', - 'primary-foreground': '0 0% 98%', - secondary: '0 0% 93.1%', - 'secondary-foreground': '0 0% 9%', - accent: '0 0% 90.1%', - 'accent-foreground': '0 0% 9%', - ring: '0 0% 63.9%', + background: "0 0% 96%", + foreground: "0 0% 3.9%", + muted: "0 0% 96.1%", + "muted-foreground": "0 0% 45.1%", + popover: "0 0% 100%", + "popover-foreground": "0 0% 15.1%", + card: "0 0% 94.7%", + "card-foreground": "0 0% 3.9%", + border: "0 0% 89.8%", + primary: "0 0% 9%", + "primary-foreground": "0 0% 98%", + secondary: "0 0% 93.1%", + "secondary-foreground": "0 0% 9%", + accent: "0 0% 90.1%", + "accent-foreground": "0 0% 9%", + ring: "0 0% 63.9%", }, dark: { - background: '0 0% 8.9%', - foreground: '0 0% 92%', - muted: '0 0% 12.9%', - 'muted-foreground': '0 0% 60.9%', - popover: '0 0% 9.8%', - 'popover-foreground': '0 0% 88%', - card: '0 0% 10%', - 'card-foreground': '0 0% 98%', - border: '0 0% 18%', - primary: '0 0% 98%', - 'primary-foreground': '0 0% 9%', - secondary: '0 0% 12.9%', - 'secondary-foreground': '0 0% 98%', - accent: '0 0% 16.9%', - 'accent-foreground': '0 0% 90%', - ring: '0 0% 14.9%', + background: "0 0% 8.9%", + foreground: "0 0% 92%", + muted: "0 0% 12.9%", + "muted-foreground": "0 0% 60.9%", + popover: "0 0% 9.8%", + "popover-foreground": "0 0% 88%", + card: "0 0% 10%", + "card-foreground": "0 0% 98%", + border: "0 0% 18%", + primary: "0 0% 98%", + "primary-foreground": "0 0% 9%", + secondary: "0 0% 12.9%", + "secondary-foreground": "0 0% 98%", + accent: "0 0% 16.9%", + "accent-foreground": "0 0% 90%", + ring: "0 0% 14.9%", }, css: { - '#nd-sidebar': { - '--muted': '0deg 0% 89%', - '--secondary': '0deg 0% 99%', - '--muted-foreground': '0 0% 30%', + "#nd-sidebar": { + "--muted": "0deg 0% 89%", + "--secondary": "0deg 0% 99%", + "--muted-foreground": "0 0% 30%", }, - '.dark #nd-sidebar': { - '--muted': '0deg 0% 16%', - '--secondary': '0deg 0% 18%', - '--muted-foreground': '0 0% 72%', + ".dark #nd-sidebar": { + "--muted": "0deg 0% 16%", + "--secondary": "0deg 0% 18%", + "--muted-foreground": "0 0% 72%", }, }, }; const catppuccin: Preset = { light: { - popover: '220deg 22% 92%', - 'popover-foreground': '234deg 16% 35%', - 'secondary-foreground': '234deg 16% 35%', - border: '223deg 16% 83%', - primary: '266deg 85% 58%', - 'primary-foreground': '234deg 16% 35%', - muted: '220deg 22% 92%', - card: '220deg 22% 92%', - accent: '223deg 16% 83%', - 'accent-foreground': '234deg 16% 35%', - 'card-foreground': '234deg 16% 35%', - 'muted-foreground': '233deg 10% 47%', - foreground: '234deg 16% 35%', - secondary: '220deg 22% 92%', - background: '220deg 23% 95%', - ring: '267deg 84% 81%', + popover: "220deg 22% 92%", + "popover-foreground": "234deg 16% 35%", + "secondary-foreground": "234deg 16% 35%", + border: "223deg 16% 83%", + primary: "266deg 85% 58%", + "primary-foreground": "234deg 16% 35%", + muted: "220deg 22% 92%", + card: "220deg 22% 92%", + accent: "223deg 16% 83%", + "accent-foreground": "234deg 16% 35%", + "card-foreground": "234deg 16% 35%", + "muted-foreground": "233deg 10% 47%", + foreground: "234deg 16% 35%", + secondary: "220deg 22% 92%", + background: "220deg 23% 95%", + ring: "267deg 84% 81%", }, dark: { - ring: '267deg 84% 81%', - primary: '267deg 84% 81%', - background: '240deg 21% 15%', - foreground: '226deg 64% 88%', - popover: '240deg 23% 9%', - card: '240deg 21% 12%', - muted: '240deg 21% 12%', - border: '237deg 16% 23%', - accent: '237deg 16% 23%', - secondary: '240deg 21% 12%', - 'primary-foreground': '240deg 23% 9%', - 'card-foreground': '226deg 64% 88%', - 'secondary-foreground': '226deg 64% 88%', - 'popover-foreground': '226deg 64% 88%', - 'accent-foreground': '226deg 64% 88%', - 'muted-foreground': '228deg 24% 72%', + ring: "267deg 84% 81%", + primary: "267deg 84% 81%", + background: "240deg 21% 15%", + foreground: "226deg 64% 88%", + popover: "240deg 23% 9%", + card: "240deg 21% 12%", + muted: "240deg 21% 12%", + border: "237deg 16% 23%", + accent: "237deg 16% 23%", + secondary: "240deg 21% 12%", + "primary-foreground": "240deg 23% 9%", + "card-foreground": "226deg 64% 88%", + "secondary-foreground": "226deg 64% 88%", + "popover-foreground": "226deg 64% 88%", + "accent-foreground": "226deg 64% 88%", + "muted-foreground": "228deg 24% 72%", }, css: { - '#nd-sidebar': { - '--secondary': '223deg 16% 83%', - '--muted': '223deg 16% 83%', + "#nd-sidebar": { + "--secondary": "223deg 16% 83%", + "--muted": "223deg 16% 83%", }, - '.dark #nd-sidebar': { - '--secondary': '237deg 16% 23%', - '--muted': '237deg 16% 23%', + ".dark #nd-sidebar": { + "--secondary": "237deg 16% 23%", + "--muted": "237deg 16% 23%", }, }, }; const purple: Preset = { light: { - background: '256 100% 96%', - primary: '270 100% 52%', - border: '270 40% 80%', - accent: '270 60% 86%', - 'accent-foreground': '270 100% 20%', - muted: '256 60% 94%', - 'muted-foreground': '256 50% 50%', - foreground: '256 60% 26%', - secondary: '270 60% 90%', - 'secondary-foreground': '256 60% 10%', - card: '256 60% 92%', - 'card-foreground': '256 100% 20%', - 'popover-foreground': '256 100% 20%', - popover: '256 60% 96%', - 'primary-foreground': '270 100% 20%', - ring: '270 100% 52%', + background: "256 100% 96%", + primary: "270 100% 52%", + border: "270 40% 80%", + accent: "270 60% 86%", + "accent-foreground": "270 100% 20%", + muted: "256 60% 94%", + "muted-foreground": "256 50% 50%", + foreground: "256 60% 26%", + secondary: "270 60% 90%", + "secondary-foreground": "256 60% 10%", + card: "256 60% 92%", + "card-foreground": "256 100% 20%", + "popover-foreground": "256 100% 20%", + popover: "256 60% 96%", + "primary-foreground": "270 100% 20%", + ring: "270 100% 52%", }, dark: { - background: '256 60% 6%', - primary: '270 100% 86%', - border: '270 100% 20%', - accent: '256 60% 26%', - 'accent-foreground': '270 100% 86%', - muted: '256 60% 10%', - foreground: '256 60% 90%', - 'muted-foreground': '256 50% 75%', - secondary: '270 100% 20%', - 'secondary-foreground': '256 60% 90%', - card: '256 60% 10%', - 'card-foreground': '256 60% 90%', - 'popover-foreground': '256 60% 90%', - popover: '256 60% 6%', - 'primary-foreground': '256 60% 6%', - ring: '270 100% 86%', + background: "256 60% 6%", + primary: "270 100% 86%", + border: "270 100% 20%", + accent: "256 60% 26%", + "accent-foreground": "270 100% 86%", + muted: "256 60% 10%", + foreground: "256 60% 90%", + "muted-foreground": "256 50% 75%", + secondary: "270 100% 20%", + "secondary-foreground": "256 60% 90%", + card: "256 60% 10%", + "card-foreground": "256 60% 90%", + "popover-foreground": "256 60% 90%", + popover: "256 60% 6%", + "primary-foreground": "256 60% 6%", + ring: "270 100% 86%", }, }; const dusk: Preset = { light: { - background: '250 20% 92%', - primary: '340 40% 48%', - border: '240 40% 90%', - accent: '250 30% 90%', - 'accent-foreground': '250 20% 20%', - muted: '240 30% 94%', - 'muted-foreground': '240 10% 50%', - foreground: '220 20% 30%', - secondary: '250 40% 94%', - 'secondary-foreground': '240 40% 10%', - card: '250 20% 92%', - 'card-foreground': '250 20% 20%', - 'popover-foreground': '250 40% 20%', - popover: '250 40% 96%', - 'primary-foreground': '240 80% 20%', - ring: '340 40% 48%', + background: "250 20% 92%", + primary: "340 40% 48%", + border: "240 40% 90%", + accent: "250 30% 90%", + "accent-foreground": "250 20% 20%", + muted: "240 30% 94%", + "muted-foreground": "240 10% 50%", + foreground: "220 20% 30%", + secondary: "250 40% 94%", + "secondary-foreground": "240 40% 10%", + card: "250 20% 92%", + "card-foreground": "250 20% 20%", + "popover-foreground": "250 40% 20%", + popover: "250 40% 96%", + "primary-foreground": "240 80% 20%", + ring: "340 40% 48%", }, dark: { - ring: '340 100% 90%', - 'primary-foreground': '240 40% 4%', - popover: '240 20% 5%', - 'popover-foreground': '250 20% 90%', - primary: '340 100% 90%', - border: '220 15% 15%', - background: '220 15% 6%', - foreground: '220 15% 87%', - muted: '220 20% 15%', - 'muted-foreground': '220 15% 60%', - accent: '250 20% 15%', - secondary: '240 20% 15%', - 'card-foreground': '240 15% 87%', - card: '240 20% 5%', - 'secondary-foreground': '250 20% 90%', - 'accent-foreground': '340 5% 90%', + ring: "340 100% 90%", + "primary-foreground": "240 40% 4%", + popover: "240 20% 5%", + "popover-foreground": "250 20% 90%", + primary: "340 100% 90%", + border: "220 15% 15%", + background: "220 15% 6%", + foreground: "220 15% 87%", + muted: "220 20% 15%", + "muted-foreground": "220 15% 60%", + accent: "250 20% 15%", + secondary: "240 20% 15%", + "card-foreground": "240 15% 87%", + card: "240 20% 5%", + "secondary-foreground": "250 20% 90%", + "accent-foreground": "340 5% 90%", }, }; diff --git a/packages/ui/src/theme/typography.ts b/packages/ui/src/theme/typography.ts index de61805..53bc40e 100644 --- a/packages/ui/src/theme/typography.ts +++ b/packages/ui/src/theme/typography.ts @@ -1,71 +1,71 @@ export const typography = { css: { - '--tw-prose-body': `theme('colors.foreground / 90%')`, - '--tw-prose-headings': `theme('colors.foreground')`, - '--tw-prose-lead': `theme('colors.foreground')`, - '--tw-prose-links': `theme('colors.foreground')`, - '--tw-prose-bold': `theme('colors.foreground')`, - '--tw-prose-counters': `theme('colors.muted.foreground')`, - '--tw-prose-bullets': `theme('colors.muted.foreground')`, - '--tw-prose-hr': `theme('colors.border')`, - '--tw-prose-quotes': `theme('colors.foreground')`, - '--tw-prose-quote-borders': `theme('colors.border')`, - '--tw-prose-captions': `theme('colors.foreground')`, - '--tw-prose-code': `theme('colors.foreground')`, - '--tw-prose-th-borders': `theme('colors.border')`, - '--tw-prose-td-borders': `theme('colors.border')`, - '--tw-prose-kbd': `theme('colors.foreground')`, - '--tw-prose-kbd-shadows': `theme('colors.primary.DEFAULT / 50%')`, + "--tw-prose-body": `theme('colors.foreground / 90%')`, + "--tw-prose-headings": `theme('colors.foreground')`, + "--tw-prose-lead": `theme('colors.foreground')`, + "--tw-prose-links": `theme('colors.foreground')`, + "--tw-prose-bold": `theme('colors.foreground')`, + "--tw-prose-counters": `theme('colors.muted.foreground')`, + "--tw-prose-bullets": `theme('colors.muted.foreground')`, + "--tw-prose-hr": `theme('colors.border')`, + "--tw-prose-quotes": `theme('colors.foreground')`, + "--tw-prose-quote-borders": `theme('colors.border')`, + "--tw-prose-captions": `theme('colors.foreground')`, + "--tw-prose-code": `theme('colors.foreground')`, + "--tw-prose-th-borders": `theme('colors.border')`, + "--tw-prose-td-borders": `theme('colors.border')`, + "--tw-prose-kbd": `theme('colors.foreground')`, + "--tw-prose-kbd-shadows": `theme('colors.primary.DEFAULT / 50%')`, // not used - '--tw-prose-pre-bg': false, - '--tw-prose-pre-code': false, - fontSize: '16px', - maxWidth: 'none', + "--tw-prose-pre-bg": false, + "--tw-prose-pre-code": false, + fontSize: "16px", + maxWidth: "none", a: { - transition: 'opacity 0.3s', - fontWeight: '400', - textDecoration: 'underline', - textUnderlineOffset: '2px', + transition: "opacity 0.3s", + fontWeight: "400", + textDecoration: "underline", + textUnderlineOffset: "2px", textDecorationColor: `theme('colors.primary.DEFAULT')`, }, - 'h1 a,h2 a,h3 a,h4 a,h5 a,h6 a': { - fontWeight: 'inherit', - textDecoration: 'inherit', + "h1 a,h2 a,h3 a,h4 a,h5 a,h6 a": { + fontWeight: "inherit", + textDecoration: "inherit", }, - 'a:hover': { - opacity: '80%', + "a:hover": { + opacity: "80%", }, table: { - fontSize: '14px', + fontSize: "14px", }, - 'thead th': { - textAlign: 'start', + "thead th": { + textAlign: "start", }, code: { - padding: '3px', - border: 'solid 1px', - fontSize: '13px', + padding: "3px", + border: "solid 1px", + fontSize: "13px", borderColor: `theme('colors.border')`, - borderRadius: '5px', - fontWeight: '400', + borderRadius: "5px", + fontWeight: "400", background: `theme('colors.muted.DEFAULT')`, }, kbd: { boxShadow: - '0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows)', + "0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows)", }, ul: { - listStylePosition: 'inside', - paddingLeft: '0', + listStylePosition: "inside", + paddingLeft: "0", }, - 'ul > li': { - paddingLeft: '0', + "ul > li": { + paddingLeft: "0", }, // Disabled styles, handled by Fumadocs UI - 'pre code': false, - 'pre code::after': false, - 'pre code::before': false, - 'code::after': false, - 'code::before': false, + "pre code": false, + "pre code::after": false, + "pre code::before": false, + "code::after": false, + "code::before": false, }, }; diff --git a/packages/ui/src/theme/variants.ts b/packages/ui/src/theme/variants.ts index 93979b1..8e23219 100644 --- a/packages/ui/src/theme/variants.ts +++ b/packages/ui/src/theme/variants.ts @@ -1,31 +1,31 @@ -import { cva } from 'class-variance-authority'; +import { cva } from "class-variance-authority"; export const buttonVariants = cva( - 'inline-flex items-center justify-center rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50', + "inline-flex items-center justify-center rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50", { variants: { color: { - outline: 'border hover:bg-accent hover:text-accent-foreground', - ghost: 'hover:bg-accent hover:text-accent-foreground', + outline: "border hover:bg-accent hover:text-accent-foreground", + ghost: "hover:bg-accent hover:text-accent-foreground", secondary: - 'border bg-secondary text-secondary-foreground hover:bg-accent hover:text-accent-foreground', + "border bg-secondary text-secondary-foreground hover:bg-accent hover:text-accent-foreground", }, size: { - sm: 'gap-1 p-0.5 text-xs', - icon: 'p-1.5 [&_svg]:size-5', + sm: "gap-1 p-0.5 text-xs", + icon: "p-1.5 [&_svg]:size-5", }, }, }, ); export const itemVariants = cva( - 'flex w-full flex-row items-center gap-2 rounded-md px-2 py-1.5 text-muted-foreground transition-colors duration-100 [&_svg]:size-4', + "flex w-full flex-row items-center gap-2 rounded-md px-2 py-1.5 text-muted-foreground transition-colors duration-100 [&_svg]:size-4", { variants: { active: { - true: 'bg-primary/10 font-medium text-primary', + true: "bg-primary/10 font-medium text-primary", false: - 'hover:bg-accent/50 hover:text-accent-foreground/80 hover:transition-none', + "hover:bg-accent/50 hover:text-accent-foreground/80 hover:transition-none", }, }, defaultVariants: { diff --git a/packages/ui/src/utils/cn.ts b/packages/ui/src/utils/cn.ts index efb5bc8..cfe9a8a 100644 --- a/packages/ui/src/utils/cn.ts +++ b/packages/ui/src/utils/cn.ts @@ -1,4 +1,4 @@ -import { twMerge } from 'tailwind-merge'; +import { twMerge } from "tailwind-merge"; /** * Utility function to merge Tailwind CSS class names. diff --git a/packages/ui/tailwind.config.js b/packages/ui/tailwind.config.js index 1a80a4e..78560de 100644 --- a/packages/ui/tailwind.config.js +++ b/packages/ui/tailwind.config.js @@ -1,8 +1,8 @@ -import { createPreset } from './dist/tailwind-plugin'; +import { createPreset } from "./dist/tailwind-plugin"; /** @type {import('tailwindcss').Config} */ export default { - content: ['./src/**/*.{ts,tsx}'], + content: ["./src/**/*.{ts,tsx}"], theme: { container: { center: true, diff --git a/packages/ui/tsup.config.ts b/packages/ui/tsup.config.ts index eb9e908..090a865 100644 --- a/packages/ui/tsup.config.ts +++ b/packages/ui/tsup.config.ts @@ -1,48 +1,25 @@ import { defineConfig } from "tsup"; -const exportedComponents = [ - "type-table", - "roll-button", - "image-zoom", - "files", - "tabs", - "accordion", - "steps", - "inline-toc", - "callout", - "api", - "card", - "heading", - "codeblock", - "banner", - "dialog/search", - "dialog/search-default", - "dialog/search-algolia", - "layout/root-toggle", - "layout/language-toggle", - "button", -]; - export default defineConfig([ { entry: [ // `./src/components/{${exportedComponents.join(",")}}.tsx`, `./src/components/**/*.tsx`, `./src/**/*.{ts,tsx}`, - './src/tailwind-plugin.ts', + "./src/tailwind-plugin.ts", ], // entry: ["./src"], - external: ['server-only', '../../dist/image-zoom.css', 'tailwindcss'], + external: ["server-only", "../../dist/image-zoom.css", "tailwindcss"], format: "esm", dts: true, target: "esnext", }, { // todo: Remove support for CommonJS in next major - entry: ['./src/tailwind-plugin.ts'], - format: 'cjs', - external: ['tailwindcss'], + entry: ["./src/tailwind-plugin.ts"], + format: "cjs", + external: ["tailwindcss"], dts: false, - target: 'node18', + target: "node18", }, ]); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd30e57..7bc3fa1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,17 +8,35 @@ importers: .: devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^7.16.1 + version: 7.16.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^7.16.1 + version: 7.16.1(eslint@8.57.0)(typescript@5.4.5) + '@vercel/style-guide': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5) + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-plugin-tailwindcss: + specifier: ^3.17.4 + version: 3.17.4(tailwindcss@3.4.4) + eslint-plugin-tsdoc: + specifier: ^0.3.0 + version: 0.3.0 prettier: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.3.3 + version: 3.3.3 turbo: - specifier: ^2.0.6 - version: 2.0.6 + specifier: ^2.0.9 + version: 2.0.9 typescript: specifier: ^5.4.5 version: 5.4.5 - apps/temp_app: + apps/sink: dependencies: '@radix-ui/react-icons': specifier: ^1.3.0 @@ -28,7 +46,7 @@ importers: version: 1.3.1(next@14.2.5) next: specifier: 14.2.5 - version: 14.2.5(react-dom@18.3.1)(react@18.3.1) + version: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1)(react@18.3.1) @@ -92,7 +110,7 @@ importers: version: 1.3.1(next@14.2.5) next: specifier: ^14.2.4 - version: 14.2.5(react-dom@18.3.1)(react@18.3.1) + version: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -143,7 +161,7 @@ importers: specifier: workspace:* version: link:../../packages/tsconfig typescript: - specifier: ^5.5.3 + specifier: ^5.5.0 version: 5.5.3 packages/tsconfig: {} @@ -230,6 +248,172 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + /@babel/compat-data@7.24.9: + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.24.9: + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser@7.24.8(@babel/core@7.24.9)(eslint@8.57.0): + resolution: {integrity: sha512-nYAikI4XTGokU2QX7Jx+v4rxZKhKivaQaREZjuW3mrJrbdWJ5yUfohnoUULge+zEEaKjPYNxhoRgUKktjXtbwA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@babel/core': 7.24.9 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.24.10: + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + /@babel/helper-compilation-targets@7.24.8: + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + /@babel/helpers@7.24.8: + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + /@babel/parser@7.24.8: + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 + /@babel/runtime-corejs3@7.24.8: resolution: {integrity: sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==} engines: {node: '>=6.9.0'} @@ -245,6 +429,39 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + + /@babel/traverse@7.24.8: + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.24.9: + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -634,6 +851,32 @@ packages: - supports-color dev: false + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + dev: true + + /@microsoft/tsdoc-config@0.17.0: + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} + dependencies: + '@microsoft/tsdoc': 0.15.0 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.8 + dev: true + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true + + /@microsoft/tsdoc@0.15.0: + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} + dev: true + /@next/env@14.2.5: resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} dev: false @@ -725,6 +968,12 @@ packages: dev: false optional: true + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -749,6 +998,11 @@ packages: requiresBuild: true optional: true + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + /@radix-ui/number@1.1.0: resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} dev: false @@ -2047,6 +2301,10 @@ packages: undici-types: 5.26.5 dev: true + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -2061,6 +2319,10 @@ packages: '@types/prop-types': 15.7.5 csstype: 3.1.2 + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + /@types/through@0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: @@ -2079,6 +2341,54 @@ packages: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} dev: false + /@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/type-utils': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.1 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.16.1 + debug: 4.3.5 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.3): resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2100,6 +2410,22 @@ packages: - supports-color dev: true + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@7.16.1: + resolution: {integrity: sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 + dev: true + /@typescript-eslint/scope-manager@7.2.0: resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2108,11 +2434,84 @@ packages: '@typescript-eslint/visitor-keys': 7.2.0 dev: true + /@typescript-eslint/type-utils@7.16.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.5 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@7.16.1: + resolution: {integrity: sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + /@typescript-eslint/types@7.2.0: resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.16.1(typescript@5.4.5): + resolution: {integrity: sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/visitor-keys': 7.16.1 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.3): resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2135,6 +2534,58 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.16.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.16.1 + '@typescript-eslint/types': 7.16.1 + '@typescript-eslint/typescript-estree': 7.16.1(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.16.1: + resolution: {integrity: sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.16.1 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript-eslint/visitor-keys@7.2.0: resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2154,12 +2605,70 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@vercel/style-guide@6.0.0(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5): + resolution: {integrity: sha512-tu0wFINGz91EPwaT5VjSqUwbvCY9pvLach7SPG4XyfJKPU9Vku2TFa6+AyzJ4oroGbo9fK+TQhIFHrnFl0nCdg==} + engines: {node: '>=18.18'} + peerDependencies: + '@next/eslint-plugin-next': '>=12.3.0 <15.0.0-0' + eslint: '>=8.48.0 <9' + prettier: '>=3.0.0 <4' + typescript: '>=4.8.0 <6' + peerDependenciesMeta: + '@next/eslint-plugin-next': + optional: true + eslint: + optional: true + prettier: + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.24.9 + '@babel/eslint-parser': 7.24.8(@babel/core@7.24.9)(eslint@8.57.0) + '@rushstack/eslint-patch': 1.10.3 + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.16.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) + eslint-plugin-playwright: 1.6.2(eslint-plugin-jest@27.9.0)(eslint@8.57.0) + eslint-plugin-react: 7.34.4(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + eslint-plugin-testing-library: 6.2.2(eslint@8.57.0)(typescript@5.4.5) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-unicorn: 51.0.1(eslint@8.57.0) + eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + prettier: 3.3.3 + prettier-plugin-packagejson: 2.5.1(prettier@3.3.3) + typescript: 5.4.5 + transitivePeerDependencies: + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - jest + - supports-color + - vitest + dev: true + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.10.0 + dev: false + + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: true /acorn-walk@8.3.3: resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} @@ -2205,6 +2714,15 @@ packages: uri-js: 4.4.1 dev: true + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -2225,7 +2743,6 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2484,7 +3001,6 @@ packages: electron-to-chromium: 1.4.827 node-releases: 2.0.14 update-browserslist-db: 1.1.0(browserslist@4.23.2) - dev: true /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2493,6 +3009,11 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bundle-require@5.0.0(esbuild@0.23.0): resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2556,7 +3077,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -2631,12 +3151,24 @@ packages: optionalDependencies: fsevents: 2.3.3 + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + /class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} dependencies: clsx: 2.0.0 dev: false + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -2710,7 +3242,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -2720,7 +3251,6 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2763,6 +3293,15 @@ packages: upper-case: 1.1.3 dev: true + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + /core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + dependencies: + browserslist: 4.23.2 + dev: true + /core-js-pure@3.37.1: resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==} requiresBuild: true @@ -2954,12 +3493,22 @@ packages: engines: {node: '>=6'} dev: false + /detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + dev: true + /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true dev: true + /detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false @@ -3012,7 +3561,6 @@ packages: /electron-to-chromium@1.4.827: resolution: {integrity: sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==} - dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3033,6 +3581,12 @@ packages: engines: {node: '>=0.12'} dev: false + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + /es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -3150,7 +3704,7 @@ packages: /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -3197,12 +3751,10 @@ packages: /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3241,7 +3793,7 @@ packages: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.34.4(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) @@ -3251,6 +3803,24 @@ packages: - supports-color dev: true + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1): + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + dependencies: + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0) + dev: true + /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -3261,6 +3831,29 @@ packages: - supports-color dev: true + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.16.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.5 + enhanced-resolve: 5.17.0 + eslint: 8.57.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.5 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3272,7 +3865,7 @@ packages: enhanced-resolve: 5.17.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -3284,6 +3877,64 @@ packages: - supports-color dev: true + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.16.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} @@ -3314,7 +3965,18 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.57.0 + ignore: 5.3.1 + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3324,7 +3986,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.3) + '@typescript-eslint/parser': 7.16.1(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -3333,7 +3995,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.16.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -3349,6 +4011,27 @@ packages: - supports-color dev: true + /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@7.16.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} engines: {node: '>=4.0'} @@ -3374,6 +4057,21 @@ packages: string.prototype.includes: 2.0.0 dev: true + /eslint-plugin-playwright@1.6.2(eslint-plugin-jest@27.9.0)(eslint@8.57.0): + resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} + engines: {node: '>=16.6.0'} + peerDependencies: + eslint: '>=8.40.0' + eslint-plugin-jest: '>=25' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + dependencies: + eslint: 8.57.0 + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + globals: 13.24.0 + dev: true + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} @@ -3411,6 +4109,100 @@ packages: string.prototype.repeat: 1.0.0 dev: true + /eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.4): + resolution: {integrity: sha512-gJAEHmCq2XFfUP/+vwEfEJ9igrPeZFg+skeMtsxquSQdxba9XRk5bn0Bp9jxG1VV9/wwPKi1g3ZjItu6MIjhNg==} + engines: {node: '>=18.12.0'} + peerDependencies: + tailwindcss: ^3.4.0 + dependencies: + fast-glob: 3.3.2 + postcss: 8.4.39 + tailwindcss: 3.4.4 + dev: true + + /eslint-plugin-testing-library@6.2.2(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-1E94YOTUDnOjSLyvOwmbVDzQi/WkKm3WVrMXu6SmBr6DN95xTGZmI6HJ/eOkSXh/DlheRsxaPsJvZByDBhWLVQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-tsdoc@0.2.17: + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + dev: true + + /eslint-plugin-tsdoc@0.3.0: + resolution: {integrity: sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==} + dependencies: + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + dev: true + + /eslint-plugin-unicorn@51.0.1(eslint@8.57.0): + resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==} + engines: {node: '>=16'} + peerDependencies: + eslint: '>=8.56.0' + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint/eslintrc': 2.1.4 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.37.1 + eslint: 8.57.0 + esquery: 1.6.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.16.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + vitest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.16.1(@typescript-eslint/parser@7.16.1)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.16.1(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3419,6 +4211,11 @@ packages: estraverse: 5.3.0 dev: true + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3475,8 +4272,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 dev: true @@ -3499,6 +4296,11 @@ packages: estraverse: 5.3.0 dev: true + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3636,6 +4438,14 @@ packages: dependencies: to-regex-range: 5.0.1 + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -3720,7 +4530,7 @@ packages: flexsearch: 0.7.21 github-slugger: 2.0.0 negotiator: 0.6.3 - next: 14.2.5(react-dom@18.3.1)(react@18.3.1) + next: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) npm-to-yarn: 2.2.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3762,7 +4572,7 @@ packages: fast-glob: 3.3.2 fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5)(react-dom@18.3.1)(react@18.3.1) gray-matter: 4.0.3 - next: 14.2.5(react-dom@18.3.1)(react@18.3.1) + next: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) zod: 3.23.8 transitivePeerDependencies: - supports-color @@ -3815,7 +4625,7 @@ packages: cmdk: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) fumadocs-core: 12.4.2(@types/react@18.3.3)(next@14.2.5)(react-dom@18.3.1)(react@18.3.1) lucide-react: 0.400.0(react@18.3.1) - next: 14.2.5(react-dom@18.3.1)(react@18.3.1) + next: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) next-themes: 0.3.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -3850,9 +4660,13 @@ packages: peerDependencies: next: '>=13.2.0' dependencies: - next: 14.2.5(react-dom@18.3.1)(react@18.3.1) + next: 14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1) dev: false + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -3866,7 +4680,7 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 dev: true /get-nonce@1.0.1: @@ -3904,12 +4718,16 @@ packages: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 fs-extra: 11.2.0 transitivePeerDependencies: - supports-color dev: true + /git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + dev: true + /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: false @@ -3949,6 +4767,10 @@ packages: path-is-absolute: 1.0.1 dev: true + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -3989,6 +4811,17 @@ packages: merge2: 1.4.1 slash: 3.0.0 + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + /globby@14.0.2: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} @@ -4052,7 +4885,6 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -4231,6 +5063,10 @@ packages: upper-case: 1.1.3 dev: true + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + /http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -4402,6 +5238,10 @@ packages: get-intrinsic: 1.2.4 dev: true + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -4429,6 +5269,13 @@ packages: has-tostringtag: 1.0.2 dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -4538,7 +5385,6 @@ packages: /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - dev: false /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -4655,6 +5501,10 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -4682,14 +5532,38 @@ packages: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} dev: true + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -4701,6 +5575,11 @@ packages: minimist: 1.2.8 dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -4870,6 +5749,13 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -4939,6 +5825,11 @@ packages: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + /lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -5538,6 +6429,11 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -5619,7 +6515,7 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false - /next@14.2.5(react-dom@18.3.1)(react@18.3.1): + /next@14.2.5(@babel/core@7.24.9)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} engines: {node: '>=18.17.0'} hasBin: true @@ -5645,7 +6541,7 @@ packages: postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.24.9)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.5 '@next/swc-darwin-x64': 14.2.5 @@ -5686,6 +6582,14 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 dev: true /normalize-path@3.0.0: @@ -5839,6 +6743,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -5846,6 +6757,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -5860,6 +6778,11 @@ packages: aggregate-error: 3.1.0 dev: true + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + /pac-proxy-agent@7.0.2: resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} @@ -5910,6 +6833,16 @@ packages: is-hexadecimal: 2.0.1 dev: false + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -5985,6 +6918,11 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -6164,9 +7102,23 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + /prettier-plugin-packagejson@2.5.1(prettier@3.3.3): + resolution: {integrity: sha512-6i4PW1KxEA+VrokYNGeI/q8qQX3u5DNBc7eLr9GX4OrvWr9DMls1lhbuNopkKG7Li9rTNxerWnYQyjxoUO4ROA==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 3.3.3 + sort-package-json: 2.10.0 + synckit: 0.9.1 + dev: true + + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} + hasBin: true dev: true /pretty-hrtime@1.0.3: @@ -6349,6 +7301,25 @@ packages: dependencies: pify: 2.3.0 + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -6380,6 +7351,11 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} @@ -6404,6 +7380,13 @@ packages: rc: 1.2.8 dev: true + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /rehype-katex@7.0.0: resolution: {integrity: sha512-h8FPkGE00r2XKU+/acgqwWUlyzve1IiOKwsEkg4pDL3k48PiE0Pt+/uLtVHDVkN1yA4iurZN6UES8ivHVEQV6Q==} dependencies: @@ -6494,6 +7477,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -6508,6 +7496,13 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -6641,10 +7636,14 @@ packages: kind-of: 6.0.3 dev: false + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: true /semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} @@ -6725,6 +7724,11 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -6760,6 +7764,24 @@ packages: smart-buffer: 4.2.0 dev: true + /sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true + + /sort-package-json@2.10.0: + resolution: {integrity: sha512-MYecfvObMwJjjJskhxYfuOADkXp1ZMMnCFC8yhp+9HDsk7HhR336hd7eiBs96lTXfiqmUNI+WQCeCMRBhl251g==} + hasBin: true + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + globby: 13.2.2 + is-plain-obj: 4.1.0 + semver: 7.6.3 + sort-object-keys: 1.1.3 + dev: true + /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -6785,6 +7807,28 @@ packages: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.18 + dev: true + + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.18 + dev: true + + /spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false @@ -6919,6 +7963,13 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -6941,7 +7992,7 @@ packages: inline-style-parser: 0.2.3 dev: false - /styled-jsx@5.1.1(react@18.3.1): + /styled-jsx@5.1.1(@babel/core@7.24.9)(react@18.3.1): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -6954,6 +8005,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.24.9 client-only: 0.0.1 react: 18.3.1 dev: false @@ -6976,7 +8028,6 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7006,6 +8057,14 @@ packages: use-sync-external-store: 1.2.2(react@18.3.1) dev: false + /synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + /tailwind-merge@2.4.0: resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} dev: false @@ -7101,6 +8160,10 @@ packages: os-tmpdir: 1.0.2 dev: true + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7126,6 +8189,15 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + /ts-api-utils@1.3.0(typescript@5.5.3): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -7230,64 +8302,74 @@ packages: - yaml dev: false - /turbo-darwin-64@2.0.6: - resolution: {integrity: sha512-XpgBwWj3Ggmz/gQVqXdMKXHC1iFPMDiuwugLwSzE7Ih0O13JuNtYZKhQnopvbDQnFQCeRq2Vsm5OTWabg/oB/g==} + /tsutils@3.21.0(typescript@5.4.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.5 + dev: true + + /turbo-darwin-64@2.0.9: + resolution: {integrity: sha512-owlGsOaExuVGBUfrnJwjkL1BWlvefjSKczEAcpLx4BI7Oh6ttakOi+JyomkPkFlYElRpjbvlR2gP8WIn6M/+xQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@2.0.6: - resolution: {integrity: sha512-RfeZYXIAkiA21E8lsvfptGTqz/256YD+eI1x37fedfvnHFWuIMFZGAOwJxtZc6QasQunDZ9TRRREbJNI68tkIw==} + /turbo-darwin-arm64@2.0.9: + resolution: {integrity: sha512-XAXkKkePth5ZPPE/9G9tTnPQx0C8UTkGWmNGYkpmGgRr8NedW+HrPsi9N0HcjzzIH9A4TpNYvtiV+WcwdaEjKA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@2.0.6: - resolution: {integrity: sha512-92UDa0xNQQbx0HdSp9ag3YSS3xPdavhc7q9q9mxIAcqyjjD6VElA4Y85m4F/DDGE5SolCrvBz2sQhVmkOd6Caw==} + /turbo-linux-64@2.0.9: + resolution: {integrity: sha512-l9wSgEjrCFM1aG16zItBsZ206ZlhSSx1owB8Cgskfv0XyIXRGHRkluihiaxkp+UeU5WoEfz4EN5toc+ICA0q0w==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@2.0.6: - resolution: {integrity: sha512-eQKu6utCVUkIH2kqOzD8OS6E0ba6COjWm6PRDTNCHQRljZW503ycaTUIdMOiJrVg1MkEjDyOReUg8s8D18aJ4Q==} + /turbo-linux-arm64@2.0.9: + resolution: {integrity: sha512-gRnjxXRne18B27SwxXMqL3fJu7jw/8kBrOBTBNRSmZZiG1Uu3nbnP7b4lgrA/bCku6C0Wligwqurvtpq6+nFHA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@2.0.6: - resolution: {integrity: sha512-+9u4EPrpoeHYCQ46dRcou9kbkSoelhOelHNcbs2d86D6ruYD/oIAHK9qgYK8LeARRz0jxhZIA/dWYdYsxJJWkw==} + /turbo-windows-64@2.0.9: + resolution: {integrity: sha512-ZVo0apxUvaRq4Vm1qhsfqKKhtRgReYlBVf9MQvVU1O9AoyydEQvLDO1ryqpXDZWpcHoFxHAQc9msjAMtE5K2lA==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@2.0.6: - resolution: {integrity: sha512-rdrKL+p+EjtdDVg0wQ/7yTbzkIYrnb0Pw4IKcjsy3M0RqUM9UcEi67b94XOAyTa5a0GqJL1+tUj2ebsFGPgZbg==} + /turbo-windows-arm64@2.0.9: + resolution: {integrity: sha512-sGRz7c5Pey6y7y9OKi8ypbWNuIRPF9y8xcMqL56OZifSUSo+X2EOsOleR9MKxQXVaqHPGOUKWsE6y8hxBi9pag==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@2.0.6: - resolution: {integrity: sha512-/Ftmxd5Mq//a9yMonvmwENNUN65jOVTwhhBPQjEtNZutYT9YKyzydFGLyVM1nzhpLWahQSMamRc/RDBv5EapzA==} + /turbo@2.0.9: + resolution: {integrity: sha512-QaLaUL1CqblSKKPgLrFW3lZWkWG4pGBQNW+q1ScJB5v1D/nFWtsrD/yZljW/bdawg90ihi4/ftQJ3h6fz1FamA==} hasBin: true optionalDependencies: - turbo-darwin-64: 2.0.6 - turbo-darwin-arm64: 2.0.6 - turbo-linux-64: 2.0.6 - turbo-linux-arm64: 2.0.6 - turbo-windows-64: 2.0.6 - turbo-windows-arm64: 2.0.6 + turbo-darwin-64: 2.0.9 + turbo-darwin-arm64: 2.0.9 + turbo-linux-64: 2.0.9 + turbo-linux-arm64: 2.0.9 + turbo-windows-64: 2.0.9 + turbo-windows-arm64: 2.0.9 dev: true /twoslash-protocol@0.2.9: @@ -7323,6 +8405,16 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + /typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -7482,7 +8574,6 @@ packages: browserslist: 4.23.2 escalade: 3.1.2 picocolors: 1.0.1 - dev: true /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} @@ -7553,6 +8644,13 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + /validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7701,6 +8799,9 @@ packages: engines: {node: '>=10'} dev: true + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yaml@2.4.5: resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} diff --git a/tsconfig.json b/tsconfig.json index 1ef114e..d72a9f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,20 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Default", - "compilerOptions": { - "composite": false, - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "inlineSources": false, - "isolatedModules": true, - "moduleResolution": "node", - "noUnusedLocals": false, - "noUnusedParameters": false, - "preserveWatchOutput": true, - "skipLibCheck": true, - "strict": true - }, - "exclude": ["node_modules"] - } \ No newline at end of file + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true + }, + "exclude": ["node_modules"] +}