diff --git a/.lintstagedrc.js b/.lintstagedrc.js index 519ed69..135beb6 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,18 +1,7 @@ export default { - "packages/competition/**/*.{js,cjs,ts,json,css,scss,tsx,sass}": () => [ - "pnpm --filter @sast/oj-competition lint", - "pnpm --filter @sast/oj-competition build", - "git add ." - ], - "packages/docs/**/*.{js,cjs,ts,html,json,css,scss,tsx,sass,md,mdx}": () => [ - "pnpm --filter @sast/oj-docs build", - "git add ." - ], - "packages/ui/**/*.{js,cjs,ts,html,json,css,scss,tsx,sass}": () => [ - "pnpm --filter @sast/oj-ui test", - "pnpm --filter @sast/oj-ui format", - "pnpm --filter @sast/oj-ui lint", - "git add ." - ], - // "*.*": () => "pnpm cz" -} \ No newline at end of file + "packages/competition/**/*.{js,cjs,ts,json,css,scss,tsx,sass}": () => [ + "pnpm --filter @sast/oj-competition lint", + "pnpm --filter @sast/oj-competition build", + "git add .", + ], +}; diff --git a/package.json b/package.json index 395a40d..dd92906 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,6 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "prepare": "husky install", - "ui:dev": "pnpm --filter @sast/oj-ui dev", - "ui:start": "pnpm --filter @sast/oj-ui dev:lib", - "ui:build": "pnpm --filter @sast/oj-ui build:lib", - "ui:lint": "pnpm --filter @sast/oj-ui lint", - "ui:format": "pnpm --filter @sast/oj-ui format", - "ui:test": "pnpm --filter @sast/oj-ui test", - "ui-uni:dev": "pnpm --filter @sast/oj-ui-universal dev", - "ui-uni:build": "pnpm --filter @sast/oj-ui-universal build", "competition:dev": "pnpm --filter @sast/oj-competition dev", "competition:build": "pnpm --filter @sast/oj-competition build:lib", "competition:lint": "pnpm --filter @sast/oj-competition lint", @@ -50,4 +42,4 @@ "typescript": "^5.3.3", "vite-plugin-stylex": "^0.4.0" } -} \ No newline at end of file +} diff --git a/packages/competition/package.json b/packages/competition/package.json index b782ab7..a6636c7 100644 --- a/packages/competition/package.json +++ b/packages/competition/package.json @@ -12,8 +12,7 @@ "ionic:serve": "npm run dev" }, "dependencies": { - "@sast/oj-ui": "workspace:^", - "@sast/oj-ui-universal": "workspace:^", + "@ui-aurora/react": "^0.0.1", "axios": "^1.6.7", "localforage": "^1.10.0", "react": "^18.2.0", diff --git a/packages/competition/src/components/login/loginCard/index.tsx b/packages/competition/src/components/login/loginCard/index.tsx index a90539c..b54191b 100644 --- a/packages/competition/src/components/login/loginCard/index.tsx +++ b/packages/competition/src/components/login/loginCard/index.tsx @@ -1,47 +1,41 @@ -import { Button, Card } from "@sast/oj-ui"; +import { Button, Card } from "@ui-aurora/react"; import Logo from "../../logo"; import styles from "./index.module.scss"; import LoginCardContent from "./loginCardContent"; const LoginCard = () => { return ( - <> - -
- - LOGIN HERE -
- - } - mainContent={} - footer={ - <> -
-
-
- Or continue with -
-
-
- - - -
-
- - } - > - + + + LOGIN HERE +
+ } + mainContent={} + footer={ +
+
+
+ Or continue with +
+
+
+ + + +
+
+ } + > ); }; diff --git a/packages/competition/src/components/login/loginCard/loginCardContent/icon/error.tsx b/packages/competition/src/components/login/loginCard/loginCardContent/icon/error.tsx index c84dc0b..61f775c 100644 --- a/packages/competition/src/components/login/loginCard/loginCardContent/icon/error.tsx +++ b/packages/competition/src/components/login/loginCard/loginCardContent/icon/error.tsx @@ -1,36 +1,34 @@ import styles from "./icon.module.scss"; const Error = () => { return ( - <> - - - - - + + + + ); }; diff --git a/packages/competition/src/components/login/loginCard/loginCardContent/index.tsx b/packages/competition/src/components/login/loginCard/loginCardContent/index.tsx index b7980c4..81471bd 100644 --- a/packages/competition/src/components/login/loginCard/loginCardContent/index.tsx +++ b/packages/competition/src/components/login/loginCard/loginCardContent/index.tsx @@ -1,4 +1,4 @@ -import { Input, Button, showToast } from "@sast/oj-ui"; +import { Input, Button, showToast } from "@ui-aurora/react"; import styles from "./index.module.scss"; import { useState } from "react"; import Success from "./icon/success"; diff --git a/packages/competition/src/components/logo/index.tsx b/packages/competition/src/components/logo/index.tsx index 79485f3..02c3680 100644 --- a/packages/competition/src/components/logo/index.tsx +++ b/packages/competition/src/components/logo/index.tsx @@ -10,16 +10,14 @@ interface LogoProps { const Logo = ({ width, height, className, style }: LogoProps) => { return ( - <> - logo - + logo ); }; diff --git a/packages/competition/src/pages/error/page.tsx b/packages/competition/src/pages/error/page.tsx index 8a21aa0..b3352a5 100644 --- a/packages/competition/src/pages/error/page.tsx +++ b/packages/competition/src/pages/error/page.tsx @@ -1,6 +1,6 @@ import styles from "./page.module.scss"; import error404 from "../../assets/404.png"; -import { Button } from "@sast/oj-ui"; +import { Button } from "@ui-aurora/react"; import { useNavigate } from "react-router-dom"; const Error = () => { const navigate = useNavigate(); diff --git a/packages/competition/src/pages/login/page.tsx b/packages/competition/src/pages/login/page.tsx index 2086c06..9711bd3 100644 --- a/packages/competition/src/pages/login/page.tsx +++ b/packages/competition/src/pages/login/page.tsx @@ -1,30 +1,13 @@ import LoginCard from "../../components/login/loginCard"; import styles from "./page.module.scss"; -import { Button } from "@sast/oj-ui-universal"; const Login = () => { return ( - <> -
-
- - - -
+
+
+
- +
); }; diff --git a/packages/ui-universal/.gitignore b/packages/ui-universal/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/packages/ui-universal/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/packages/ui-universal/index.html b/packages/ui-universal/index.html deleted file mode 100644 index 3eafe47..0000000 --- a/packages/ui-universal/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Vite + Lit + TS - - - - - -

Vite + Lit

-
- - diff --git a/packages/ui-universal/lib/_variables.scss b/packages/ui-universal/lib/_variables.scss deleted file mode 100644 index 1882034..0000000 --- a/packages/ui-universal/lib/_variables.scss +++ /dev/null @@ -1,82 +0,0 @@ -// box-shadow variables -$shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); -$shadow: - 0 1px 3px 0 rgba(0, 0, 0, 0.1), - 0 1px 2px -1px rgba(0, 0, 0, 0.1); -$shadow-md: - 0 4px 6px -1px rgb(0 0 0 / 0.1), - 0 2px 4px -2px rgb(0 0 0 / 0.1); -$shadow-lg: - 0 10px 15px -3px rgb(0 0 0 / 0.1), - 0 4px 6px -4px rgb(0 0 0 / 0.1); -$shadow-xl: - 0 20px 25px -5px rgb(0 0 0 / 0.1), - 0 8px 10px -6px rgb(0 0 0 / 0.1); -$shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); -$shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - -@mixin shadow { - &.shadow-regular { - box-shadow: $shadow; - } - &.shadow-small { - box-shadow: $shadow-sm; - } - &.shadow-medium { - box-shadow: $shadow-md; - } - &.shadow-large { - box-shadow: $shadow-lg; - } - &.shadow-extraLarge { - box-shadow: $shadow-xl; - } - &.shadow-inner { - box-shadow: $shadow-inner; - } -} - -// border width variables -$border-0: 0px; -$border-1: 1px; -$border-2: 2px; - -//animation-duration varibles -$duration-100: 100ms; -$duration-200: 200ms; -$duration-300: 300ms; -$duration-400: 400ms; -$duration-800: 800ms; - -//border radius variables -$radius-10: 10px; -$radius-8: 8px; -$radius-5: 5px; -$radius-15: 15px; -$radius-half: 50%; - -//absolute center -@mixin absolute-center { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} - -//font-size variables -$font-size-8: 8px; -$font-size-10: 10px; -$font-size-12: 12px; -$font-size-14: 14px; -$font-size-16: 16px; - -//disabled -@mixin disabled { - cursor: not-allowed; - opacity: 0.4; -} - -//background color -$background-shadow-color: rgb(var(--black-color-rgb), 0.6); - -$cubic-bezier: cubic-bezier(0.215, 0.61, 0.355, 1); diff --git a/packages/ui-universal/lib/assets/lit.svg b/packages/ui-universal/lib/assets/lit.svg deleted file mode 100644 index 4a9c1fe..0000000 --- a/packages/ui-universal/lib/assets/lit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/ui-universal/lib/components/Button/index.scss b/packages/ui-universal/lib/components/Button/index.scss deleted file mode 100644 index 2132f34..0000000 --- a/packages/ui-universal/lib/components/Button/index.scss +++ /dev/null @@ -1,68 +0,0 @@ -:host { - background-color: var(--primary-color); - color: var(--white-color); - padding: 10px; - border-radius: 5px; - border: none; - cursor: pointer; - font-size: 16px; - font-weight: 400; - transition: all 0.15s ease-in-out; - @include shadow; - &:hover { - backdrop-filter: brightness(0.85); - } - &:active { - transform: scale(0.98); - } - &.primary { - background-color: var(--primary-color); - } - &.secondary { - background-color: var(--white-color); - color: var(--primary-color); - border: 1px solid var(--primary-color); - } - &.border { - border: solid 1px var(--border-white); - background-color: var(--white-color); - color: var(--black-color); - font-weight: 500; - } - &.ghost { - &:hover:not(.disabled) { - filter: brightness(1); - backdrop-filter: brightness(0.97); - } - background-color: transparent; - color: var(--primary-color); - font-weight: 600; - } - &.danger { - background-color: var(--danger-color); - } - &.disabled { - cursor: not-allowed; - &:hover { - backdrop-filter: none; - } - &:active { - transform: none; - } - } - &.disabledShadow { - filter: grayscale(1); - } - &.small { - padding: 5px; - font-size: 12px; - } - &.medium { - padding: 10px; - font-size: 16px; - } - &.large { - padding: 15px; - font-size: 20px; - } -} diff --git a/packages/ui-universal/lib/components/Button/index.ts b/packages/ui-universal/lib/components/Button/index.ts deleted file mode 100644 index bcee5e6..0000000 --- a/packages/ui-universal/lib/components/Button/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { CSSResultGroup, LitElement, html } from "lit"; -import { customElement, property } from "lit/decorators.js"; -import { createComponent } from "@lit/react"; -import { classMap } from "lit/directives/class-map.js"; -import React from "react"; -import styles from "./index.scss?inline"; - -// export interface ButtonProps extends HTMLButtonElement { -// /** -// * The color of the button. -// */ -// color?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'border'; -// /** -// * The size of the button. -// */ -// size?: 'small' | 'medium' | 'large'; -// /** -// * The shadow of the button. -// */ -// shadow?: 'regular' | 'small' | 'medium' | 'large' | 'extraLarge' | 'inner' | 'none'; -// /** -// * disabledShadow, when the button is disabled ,the shadow is or not -// */ -// disabledShadow?: boolean; -// } - -/** - * An example element. - * - * @slot - This element has a slot - * @csspart button - The button - */ -@customElement("s-button") -export class Sbutton extends LitElement { - static styles = styles as unknown as CSSResultGroup; - @property({ type: String }) color = "primary"; - @property({ type: String }) size = "medium"; - @property({ type: String }) shadow = "none"; - @property({ type: Boolean }) disabled = false; - @property({ type: Boolean }) disabledShadow = true; - @property() _onclick: () => void = () => {}; - - protected render() { - return html` - - `; - } -} - -declare global { - interface HTMLElementTagNameMap { - "s-button": Sbutton; - } -} - -export const Button = createComponent({ - tagName: "s-button", - elementClass: Sbutton, - react: React, -}); diff --git a/packages/ui-universal/lib/global.scss b/packages/ui-universal/lib/global.scss deleted file mode 100644 index e69de29..0000000 diff --git a/packages/ui-universal/lib/index.ts b/packages/ui-universal/lib/index.ts deleted file mode 100644 index f80f982..0000000 --- a/packages/ui-universal/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./components/Button"; diff --git a/packages/ui-universal/lib/typings/scss.d.ts b/packages/ui-universal/lib/typings/scss.d.ts deleted file mode 100644 index b122744..0000000 --- a/packages/ui-universal/lib/typings/scss.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare module "*.scss?inline" { - import { CSSResult } from "lit"; - const styles: CSSResult; - export default styles; -} - -declare module "*.scss" { - import { CSSResult } from "lit"; - const styles: CSSResult; - export default styles; -} diff --git a/packages/ui-universal/lib/vite-env.d.ts b/packages/ui-universal/lib/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/packages/ui-universal/lib/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/ui-universal/package.json b/packages/ui-universal/package.json deleted file mode 100644 index e509abf..0000000 --- a/packages/ui-universal/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@sast/oj-ui-universal", - "private": true, - "version": "0.0.1", - "type": "module", - "main": "./dist/index.cjs.js", - "module": "./dist/index.es.js", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.es.js" - }, - "require": { - "types": "./dist/index.d.ts", - "default": "./dist/index.cjs.js" - } - } - }, - "scripts": { - "dev": "tsc && vite build --watch", - "build": "tsc && vite build", - "preview": "vite preview" - }, - "dependencies": { - "@lit/react": "^1.0.3", - "lit": "^3.1.2", - "react": "^18.2.0", - "vite-plugin-dts": "^3.6.4" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-scss-lit": "^1.1.6", - "sass": "^1.69.5", - "typescript": "^5.3.3", - "vite": "^5.1.6" - } -} \ No newline at end of file diff --git a/packages/ui-universal/public/vite.svg b/packages/ui-universal/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/packages/ui-universal/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/ui-universal/tsconfig.json b/packages/ui-universal/tsconfig.json deleted file mode 100644 index 9ff9bcd..0000000 --- a/packages/ui-universal/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": ["../../tsconfig.json"], - "compilerOptions": { - "target": "ESNext", - "experimentalDecorators": true, - "useDefineForClassFields": false, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - "types": ["vite/client"], - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - // "declarationMap" need to be enabled to let Vite generates source map files. - "declaration": true, - "declarationMap": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "paths": { - "@/*": ["./lib/*"] - }, - "include": ["lib", "lib/typings/index.d.ts"] -} diff --git a/packages/ui-universal/vite.config.js b/packages/ui-universal/vite.config.js deleted file mode 100644 index 46d68cf..0000000 --- a/packages/ui-universal/vite.config.js +++ /dev/null @@ -1,52 +0,0 @@ -// vite.config.js -import path from 'path'; -import dts from 'vite-plugin-dts'; -import { join } from 'path'; -import { litScss } from 'rollup-plugin-scss-lit' -import copy from 'rollup-plugin-copy' - -/** @type {import('vite').UserConfig} */ -export default { - // config options - plugins: [ - dts(), // Output .d.ts files - litScss({ minify: process.env.NODE_ENV === 'production', options: { loadPaths: ["node_modules"] }, }), // Support for lit-element scss - copy({ - targets: [{ src: "lib/**/*.scss", dest: "dist" }], // build is configured as outDir in tsconfig.json - flatten: false, // important - preserves folder structure - hook: "buildStart", // important - needs to run before other plugins - }), - ], - css: { - preprocessorOptions: { - scss: { - additionalData: `@use "./lib/variables" as *;`, // Import global scss variables - includePaths: [path.resolve(__dirname, 'lib')], // Include paths for scss - }, - }, - }, - resolve: { - alias: { - "@": "/lib", - }, - }, - build: { - target: 'ESNEXT', - cssCodeSplit: true, - lib: { - entry: path.resolve(__dirname, join('lib', 'index.ts')), - formats: ['es', 'cjs', 'umd'], - name: 'index', - fileName: format => `index.${format}.js`, - }, - rollupOptions: { - external: ['react', 'react-dom'], - output: { - globals: { - react: 'React', - 'react-dom': 'ReactDOM', - }, - }, - } - }, -}; diff --git a/packages/ui/.eslintrc.json b/packages/ui/.eslintrc.json deleted file mode 100644 index c4a7dfc..0000000 --- a/packages/ui/.eslintrc.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/eslintrc.json", - "root": true, - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react/recommended", - "plugin:react/jsx-runtime", // disable all rules conflict with React 17 JSX transform - "plugin:react-hooks/recommended", - "plugin:jest-dom/recommended", - "plugin:storybook/recommended", - "prettier" // disable all rules conflict with Prettier - ], - "plugins": ["jest-dom", "@stylexjs"], - "parser": "@typescript-eslint/parser", - "ignorePatterns": ["dist"], - "rules": { - "@stylexjs/valid-styles": ["error"] - }, - "settings": { - "react": { - "version": "detect" - } - }, - "overrides": [] -} diff --git a/packages/ui/.github/workflows/storybook.yml b/packages/ui/.github/workflows/storybook.yml deleted file mode 100644 index dfa17ff..0000000 --- a/packages/ui/.github/workflows/storybook.yml +++ /dev/null @@ -1,50 +0,0 @@ -# Simple workflow for deploying static content to GitHub Pages -name: Deploy Storybook to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ['master'] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: 'pages' - cancel-in-progress: false - -jobs: - # Single deploy job since we're just deploying - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 8 - run_install: true - - name: Build Storybook - run: pnpm run build - - name: Setup Pages - uses: actions/configure-pages@v4 - - name: Upload artifact - uses: actions/upload-pages-artifact@v2 - with: - # Upload entire repository - path: './storybook-static' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v3 diff --git a/packages/ui/.prettierrc.json b/packages/ui/.prettierrc.json deleted file mode 100644 index 0ac6c28..0000000 --- a/packages/ui/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "printWidth": 100, - "singleQuote": true, - "bracketSameLine": false, - "singleAttributePerLine": true -} diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts deleted file mode 100644 index 2898543..0000000 --- a/packages/ui/.storybook/main.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { StorybookConfig } from '@storybook/react-vite'; -import { withoutVitePlugins } from '@storybook/builder-vite'; - -const config: StorybookConfig = { - stories: ['../lib/**/*.stories.@(js|jsx|mjs|ts|tsx)', '../lib/**/*.mdx'], - addons: ['@storybook/addon-essentials', '@storybook/addon-actions', '@storybook/addon-docs'], - framework: { - name: '@storybook/react-vite', - options: {}, - }, - docs: { - autodocs: 'tag', - }, - viteFinal: async (config) => ({ - ...config, - plugins: await withoutVitePlugins(config.plugins, ['vite:dts']), // skip dts plugin - }), -}; -export default config; diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts deleted file mode 100644 index d971423..0000000 --- a/packages/ui/.storybook/preview.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Preview } from '@storybook/react'; -import '../lib/global.scss'; - -const preview: Preview = { - parameters: { - actions: { argTypesRegex: '^on[A-Z].*' }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - }, -}; - -export default preview; diff --git a/packages/ui/LICENSE b/packages/ui/LICENSE deleted file mode 100644 index 0e4dce6..0000000 --- a/packages/ui/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Rayyamhk - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/ui/README.md b/packages/ui/README.md deleted file mode 100644 index 108a175..0000000 --- a/packages/ui/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# SASTOJ 组件库 - -## Features - -## Get Started - -1. Clone this repository -2. Install dependencies using `npm i` (or `pnpm i` if you like) - -## Scripts - -- `dev`: Starts the local Storybook server, use this to develop and preview your components. -- `test`: Runs all your tests with vitest. -- `test:watch`: Runs tests in watch mode. -- `test:ui`: Runs tests with a UI. -- `test:coverage`: Runs tests and generates a coverage report. -- `build`: Builds your Storybook as a static web application. -- `build:lib`: Builds your component library with Vite. -- `lint`: Runs ESLint. -- `format`: Formats your code with Prettier. - -## License diff --git a/packages/ui/coverage/.tmp/coverage-0.json b/packages/ui/coverage/.tmp/coverage-0.json deleted file mode 100644 index e8f24c2..0000000 --- a/packages/ui/coverage/.tmp/coverage-0.json +++ /dev/null @@ -1 +0,0 @@ -{"result":[{"scriptId":"1090","url":"file:///D:/Projects/SAST/sastoj-frontend/packages/ui/lib/test/setup.ts","functions":[{"functionName":"","ranges":[{"startOffset":0,"endOffset":1677,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":13,"endOffset":1677,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":987,"endOffset":1031,"count":2}],"isBlockCoverage":true}]},{"scriptId":"1685","url":"file:///D:/Projects/SAST/sastoj-frontend/packages/ui/lib/Button/Button.test.tsx","functions":[{"functionName":"","ranges":[{"startOffset":0,"endOffset":4626,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":13,"endOffset":4626,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":1397,"endOffset":1890,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":1954,"endOffset":2600,"count":1}],"isBlockCoverage":true}]},{"scriptId":"1778","url":"file:///D:/Projects/SAST/sastoj-frontend/packages/ui/lib/Button/Button.tsx","functions":[{"functionName":"","ranges":[{"startOffset":0,"endOffset":4472,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":13,"endOffset":4472,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":999,"endOffset":1707,"count":2},{"startOffset":1297,"endOffset":1309,"count":0},{"startOffset":1356,"endOffset":1366,"count":0}],"isBlockCoverage":true},{"functionName":"get","ranges":[{"startOffset":1804,"endOffset":1826,"count":2}],"isBlockCoverage":true}]},{"scriptId":"1780","url":"file:///D:/Projects/SAST/sastoj-frontend/packages/ui/lib/Button/Button.module.scss","functions":[{"functionName":"","ranges":[{"startOffset":0,"endOffset":1381,"count":1}],"isBlockCoverage":true},{"functionName":"","ranges":[{"startOffset":13,"endOffset":1381,"count":1}],"isBlockCoverage":true},{"functionName":"get","ranges":[{"startOffset":261,"endOffset":331,"count":10}],"isBlockCoverage":true}]}]} \ No newline at end of file diff --git a/packages/ui/coverage/Button.tsx.html b/packages/ui/coverage/Button.tsx.html deleted file mode 100644 index 258d388..0000000 --- a/packages/ui/coverage/Button.tsx.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - Code coverage report for Button.tsx - - - - - - - - - -
-
-

All files Button.tsx

-
- -
- 100% - Statements - 46/46 -
- - -
- 33.33% - Branches - 1/3 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 46/46 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -471x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -2x -1x -1x -1x - 
import React from 'react';
-import styles from './Button.module.scss';
-import classnames from 'classnames';
- 
-export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
-  /**
-   * The color of the button.
-   */
-  color?: 'primary' | 'secondary' | 'tertiary' | 'danger';
- 
-  /**
-   * The size of the button.
-   */
-  size?: 'small' | 'medium' | 'large';
- 
-  /**
-   * If `true`, the button will be disabled.
-   */
-  disabled?: boolean;
-  /**
-   * If `true`, the shadow will be appear
-   */
-  isShadow?: boolean;
-}
- 
-export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
-  ({ color = 'primary', size = 'medium', disabled = false, isShadow = false, ...rest }, ref) => {
-    const btnClass = classnames(
-      styles['base'],
-      styles[color],
-      styles[size],
-      styles[disabled ? 'disabled' : ''],
-      styles[isShadow ? 'shadow' : ''],
-    );
-    return (
-      <button
-        ref={ref}
-        className={btnClass}
-        {...rest}
-        disabled={disabled}
-      />
-    );
-  },
-);
- 
-Button.displayName = 'Button';
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/packages/ui/coverage/base.css b/packages/ui/coverage/base.css deleted file mode 100644 index f418035..0000000 --- a/packages/ui/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/packages/ui/coverage/block-navigation.js b/packages/ui/coverage/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/packages/ui/coverage/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/packages/ui/coverage/clover.xml b/packages/ui/coverage/clover.xml deleted file mode 100644 index 5e7af71..0000000 --- a/packages/ui/coverage/clover.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/ui/coverage/coverage-final.json b/packages/ui/coverage/coverage-final.json deleted file mode 100644 index 46f0dc3..0000000 --- a/packages/ui/coverage/coverage-final.json +++ /dev/null @@ -1,2 +0,0 @@ -{"D:\\Projects\\SAST\\sastoj-frontend\\packages\\ui\\lib\\Button\\Button.tsx": {"path":"D:\\Projects\\SAST\\sastoj-frontend\\packages\\ui\\lib\\Button\\Button.tsx","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":84}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":5}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":5}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":58}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":5}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":5}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":0}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":5}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":21}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":0}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":71}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":97}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":32}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":21}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":20}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":19}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":41}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":39}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":13}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":17}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":28}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":27}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":8}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":6}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":4}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":2}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":0}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":30}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":2,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":1,"44":1,"45":1},"branchMap":{"0":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":43,"column":4}},"locations":[{"start":{"line":27,"column":2},"end":{"line":43,"column":4}}]},"1":{"type":"branch","line":32,"loc":{"start":{"line":32,"column":13},"end":{"line":32,"column":37}},"locations":[{"start":{"line":32,"column":13},"end":{"line":32,"column":37}}]},"2":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":13},"end":{"line":33,"column":35}},"locations":[{"start":{"line":33,"column":13},"end":{"line":33,"column":35}}]}},"b":{"0":[2],"1":[0],"2":[0]},"fnMap":{},"f":{}} -} diff --git a/packages/ui/coverage/favicon.png b/packages/ui/coverage/favicon.png deleted file mode 100644 index c1525b8..0000000 Binary files a/packages/ui/coverage/favicon.png and /dev/null differ diff --git a/packages/ui/coverage/index.html b/packages/ui/coverage/index.html deleted file mode 100644 index 7b36466..0000000 --- a/packages/ui/coverage/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 100% - Statements - 46/46 -
- - -
- 33.33% - Branches - 1/3 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 46/46 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
Button.tsx -
-
100%46/4633.33%1/3100%0/0100%46/46
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/packages/ui/coverage/prettify.css b/packages/ui/coverage/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/packages/ui/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/packages/ui/coverage/prettify.js b/packages/ui/coverage/prettify.js deleted file mode 100644 index b322523..0000000 --- a/packages/ui/coverage/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/packages/ui/coverage/sort-arrow-sprite.png b/packages/ui/coverage/sort-arrow-sprite.png deleted file mode 100644 index 6ed6831..0000000 Binary files a/packages/ui/coverage/sort-arrow-sprite.png and /dev/null differ diff --git a/packages/ui/coverage/sorter.js b/packages/ui/coverage/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/packages/ui/coverage/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/packages/ui/lib/Accordion/Accordion.module.scss b/packages/ui/lib/Accordion/Accordion.module.scss deleted file mode 100644 index 3b3db36..0000000 --- a/packages/ui/lib/Accordion/Accordion.module.scss +++ /dev/null @@ -1,54 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-300; -.base { - display: grid; - grid-template-rows: 0fr 0fr; - overflow: hidden; - transition: all $animation-duration $cubic-bezier; - &.show { - grid-template-rows: 0fr 1fr; - } - .accordionTrigger { - all: unset; - cursor: pointer; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding: 16px 20px; - font-weight: bolder; - transition: all $animation-duration $cubic-bezier; - &:hover:not(.disabled) { - background-color: var(--pale-white); - text-decoration: underline; - transition: all $animation-duration $cubic-bezier; - } - .icon { - transition: all $animation-duration $cubic-bezier; - &.rotate { - transform: rotate(180deg); - } - } - &.disabled { - @include disabled; - } - } - .accordionContentWrap { - width: 100%; - min-height: 0px; - display: flex; - .inner { - padding: 10px 20px; - opacity: 0; - transition: all $animation-duration ease-in; - &.show { - opacity: 1; - } - } - } - .divider { - height: 1px; - width: 100%; - background-color: var(--border-white); - } -} diff --git a/packages/ui/lib/Accordion/Accordion.stories.tsx b/packages/ui/lib/Accordion/Accordion.stories.tsx deleted file mode 100644 index 5bf6e37..0000000 --- a/packages/ui/lib/Accordion/Accordion.stories.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Accordion, type AccordionProps } from './Accordion'; -import { Button } from '../Button/Button'; - -const meta = { - title: 'Components/Accordion', - component: Accordion, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: AccordionProps = { - accordionTrigger: hello, - accordionContent: hi, - disabled: false, - width: 300, -}; - -export const DefaultAccordion: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleAccordion: Story = { - args: { - ...defaultProps, - accordionTrigger: 知识基础知识竞赛, - accordionContent: ( - <> - - - ), - }, -}; diff --git a/packages/ui/lib/Accordion/Accordion.tsx b/packages/ui/lib/Accordion/Accordion.tsx deleted file mode 100644 index 4ba0eef..0000000 --- a/packages/ui/lib/Accordion/Accordion.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React, { useState } from 'react'; -import styles from './Accordion.module.scss'; -import classnames from 'classnames'; - -export interface AccordionProps { - /** - * the width of the Accordion - */ - width?: number; - /** - * If `true`, the Accordion will be disabled. - */ - disabled?: boolean; - /** - * the AccordionTrigger of the Accordion - */ - accordionTrigger: React.ReactNode; - /** - * the accordionContent of the Accordion - */ - accordionContent: React.ReactNode; -} - -export const Accordion = React.forwardRef( - ({ disabled = false, accordionTrigger, accordionContent, width = 280, ...rest }, ref) => { - const accordionClass = classnames(styles['base']); - const [visible, setVisble] = useState(false); - return ( -
- -
-
- {accordionContent} -
-
-
-
- ); - }, -); - -Accordion.displayName = 'Accordion'; diff --git a/packages/ui/lib/Accordion/index.ts b/packages/ui/lib/Accordion/index.ts deleted file mode 100644 index 63f62bc..0000000 --- a/packages/ui/lib/Accordion/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Accordion'; diff --git a/packages/ui/lib/Badge/Badge.module.scss b/packages/ui/lib/Badge/Badge.module.scss deleted file mode 100644 index d4bb94a..0000000 --- a/packages/ui/lib/Badge/Badge.module.scss +++ /dev/null @@ -1,30 +0,0 @@ -@mixin color-badge($color-name) { - background-color: rgba(var(--#{$color-name}-color-background-rgb), 1); - color: var(--#{$color-name}-color); -} - -.base { - padding: 3px 10px; - border-radius: 5px; - &.info { - @include color-badge(primary); - } - &.success { - @include color-badge(success); - } - &.warning { - @include color-badge(warning); - } - &.error { - @include color-badge(danger); - } - &.medium { - font-size: 14px; - } - &.large { - font-size: 18px; - } - &.small { - font-size: 10px; - } -} diff --git a/packages/ui/lib/Badge/Badge.stories.tsx b/packages/ui/lib/Badge/Badge.stories.tsx deleted file mode 100644 index 49711c7..0000000 --- a/packages/ui/lib/Badge/Badge.stories.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Badge, type BadgeProps } from './Badge'; - -const meta = { - title: 'Components/Badge', - component: Badge, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - type: { - options: ['info', 'success', 'warning', 'error'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: BadgeProps = { - size: 'medium', - type: 'info', - content: 'hello', - clickCopy: false, -}; - -export const DefaultBadge: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleBadge: Story = { - args: { - ...defaultProps, - type: 'error', - content: 'hello', - }, -}; diff --git a/packages/ui/lib/Badge/Badge.tsx b/packages/ui/lib/Badge/Badge.tsx deleted file mode 100644 index 11d6750..0000000 --- a/packages/ui/lib/Badge/Badge.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; -import styles from './Badge.module.scss'; -import classNames from 'classnames'; - -export interface BadgeProps { - /** - * the type of the Badge - */ - type?: 'info' | 'success' | 'warning' | 'error'; - /** - * the size of the Badge - */ - size?: 'small' | 'medium' | 'large'; - /** - * the content of the Badge - */ - content: string; - /** - * is clickCopy work? - */ - clickCopy?: boolean; -} - -export const Badge = React.forwardRef( - ({ type = 'info', size = 'medium', content = 'hello', clickCopy = false, ...rest }, ref) => { - const badgeClass = classNames(styles['base'], styles[type], styles[size]); - - const handleBadge = () => { - navigator.clipboard.writeText(content); - }; - - return ( -
- {content} -
- ); - }, -); - -Badge.displayName = 'Badge'; diff --git a/packages/ui/lib/Badge/index.ts b/packages/ui/lib/Badge/index.ts deleted file mode 100644 index 9c8edca..0000000 --- a/packages/ui/lib/Badge/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Badge'; diff --git a/packages/ui/lib/Button/Button.module.scss b/packages/ui/lib/Button/Button.module.scss deleted file mode 100644 index 655effe..0000000 --- a/packages/ui/lib/Button/Button.module.scss +++ /dev/null @@ -1,69 +0,0 @@ -@use '../variables' as *; -.base { - background-color: var(--primary-color); - color: var(--white-color); - padding: 10px; - border-radius: 5px; - border: none; - cursor: pointer; - font-size: 16px; - font-weight: 400; - transition: all 0.15s ease-in-out; - @include shadow; - &:hover { - backdrop-filter: brightness(0.85); - } - &:active { - transform: scale(0.98); - } - &.primary { - background-color: var(--primary-color); - } - &.secondary { - background-color: var(--white-color); - color: var(--primary-color); - border: 1px solid var(--primary-color); - } - &.border { - border: solid 1px var(--border-white); - background-color: var(--white-color); - color: var(--black-color); - font-weight: 500; - } - &.ghost { - &:hover:not(.disabled) { - filter: brightness(1); - backdrop-filter: brightness(0.97); - } - background-color: transparent; - color: var(--primary-color); - font-weight: 600; - } - &.danger { - background-color: var(--danger-color); - } - &.disabled { - cursor: not-allowed; - &:hover { - backdrop-filter: none; - } - &:active { - transform: none; - } - } - &.disabledShadow { - filter: grayscale(1); - } - &.small { - padding: 5px; - font-size: 12px; - } - &.medium { - padding: 10px; - font-size: 16px; - } - &.large { - padding: 15px; - font-size: 20px; - } -} diff --git a/packages/ui/lib/Button/Button.stories.ts b/packages/ui/lib/Button/Button.stories.ts deleted file mode 100644 index 47a55ee..0000000 --- a/packages/ui/lib/Button/Button.stories.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; - -import { Button, type ButtonProps } from './Button'; -import { showToast } from '..'; - -const meta = { - title: 'Components/Button', - component: Button, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - color: { - options: ['primary', 'secondary', 'ghost', 'danger', 'border'], - control: { type: 'select' }, - }, - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - shadow: { - options: ['regular', 'small', 'medium', 'large', 'extraLarge', 'inner', 'none'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: ButtonProps = { - color: 'primary', - size: 'medium', - disabledShadow: true, -}; - -export const DefaultButton: Story = { - args: { - ...defaultProps, - children: 'Click Me!', - }, -}; - -export const DisabledButton: Story = { - args: { - ...defaultProps, - children: 'Click Me!', - disabled: true, - }, -}; - -export const ShowToastButton: Story = { - args: { - ...defaultProps, - children: 'Click Me!', - onClick: () => showToast({ type: 'error' }), - }, -}; diff --git a/packages/ui/lib/Button/Button.test.tsx b/packages/ui/lib/Button/Button.test.tsx deleted file mode 100644 index 025c7eb..0000000 --- a/packages/ui/lib/Button/Button.test.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import { expect, it, vi } from 'vitest'; -import { Button } from './Button'; - -it('should render a button', () => { - // arrange - render(); - - // assert - expect(screen.getByRole('button', { name: 'Click Me!' })).toBeInTheDocument(); -}); - -it('should call onClick when clicked', async () => { - // arrange - const onClick = vi.fn(); - render(); - - // action - await userEvent.click(screen.getByRole('button', { name: 'Click Me!' })); - - // assert - expect(onClick).toHaveBeenCalled(); -}); diff --git a/packages/ui/lib/Button/Button.tsx b/packages/ui/lib/Button/Button.tsx deleted file mode 100644 index 10b0302..0000000 --- a/packages/ui/lib/Button/Button.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import styles from './Button.module.scss'; -import classnames from 'classnames'; - -export interface ButtonProps extends React.ButtonHTMLAttributes { - /** - * The color of the button. - */ - color?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'border'; - /** - * The size of the button. - */ - size?: 'small' | 'medium' | 'large'; - /** - * The shadow of the button. - */ - shadow?: 'regular' | 'small' | 'medium' | 'large' | 'extraLarge' | 'inner' | 'none'; - /** - * If `true`, the button will be disabled. - */ - disabled?: boolean; - /** - * className of the button - */ - className?: string; - /** - * disabledShadow, when the button is disabled ,the shadow is or not - */ - disabledShadow?: boolean; -} - -export const Button = React.forwardRef( - ( - { - color = 'primary', - shadow = 'none', - size = 'medium', - disabled = false, - className, - disabledShadow = true, - ...rest - }, - ref, - ) => { - const btnClass = classnames( - styles['base'], - styles[color], - styles[size], - styles[disabled ? 'disabled' : ''], - styles[disabledShadow && disabled ? 'disabledShadow' : ''], - styles[`shadow-${shadow}`], - ); - return ( - - -
- - {(([, month, , year]) => `${month}, ${year}`)( - new Date(currentDate.getFullYear(), selectMonth + 1, 0).toDateString().split(' '), - )} - -
- {weekdays()} -
- {[...Array(numberOfDaysFromPrevMonth)].map((_, index) => ( - - ))} - - {[...Array(numberOfDaysInMonth)].map((_, index) => ( - - ))} - - {[...Array(numberOfDaysFromAfterMonth)].map((_, index) => ( - - ))} -
-
- ); - }, -); - -Calendar.displayName = 'Calendar'; diff --git a/packages/ui/lib/Calendar/DayItem.tsx b/packages/ui/lib/Calendar/DayItem.tsx deleted file mode 100644 index 7f3c49a..0000000 --- a/packages/ui/lib/Calendar/DayItem.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { memo } from 'react'; -import styles from './Calendar.module.scss'; - -interface DayItemProps { - index: number; - isOtherMonth: 'pre' | 'this' | 'after'; - selectDate?: Date; - currentDate: Date; - onChange: (value: Date) => void; - selectMonth: number; -} - -const DayItem = memo(function otherMonthItem({ - index, - isOtherMonth, - selectDate, - currentDate, - onChange, - selectMonth, -}: DayItemProps) { - let month; - - switch (isOtherMonth) { - case 'pre': - month = selectMonth - 1; - break; - case 'after': - month = selectMonth + 1; - break; - default: - month = selectMonth; - break; - } - - function isSameDay(date1?: Date, date2?: Date) { - return ( - date1?.getFullYear() === date2?.getFullYear() && - date1?.getMonth() === date2?.getMonth() && - date1?.getDate() === date2?.getDate() - ); - } - - const thisDate = new Date(currentDate.getFullYear(), month, index); - - const handleClick = () => { - thisDate && onChange(thisDate); - }; - - return ( -
- {index} -
- ); -}); - -export default DayItem; diff --git a/packages/ui/lib/Calendar/index.ts b/packages/ui/lib/Calendar/index.ts deleted file mode 100644 index a723380..0000000 --- a/packages/ui/lib/Calendar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Calendar'; diff --git a/packages/ui/lib/Card/Card.module.scss b/packages/ui/lib/Card/Card.module.scss deleted file mode 100644 index 95431c7..0000000 --- a/packages/ui/lib/Card/Card.module.scss +++ /dev/null @@ -1,84 +0,0 @@ -@use '../variables' as *; -$radius: $radius-8; -.base { - height: fit-content; - border-radius: $radius; - position: relative; - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-start; - box-sizing: border-box; - .titleImage { - border-radius: $radius $radius 0 0; - overflow: hidden; - height: 300px; - width: 100% !important; - img { - width: 100%; - padding: 0; - height: 300px; - object-fit: cover; - transition: all $duration-300 $cubic-bezier; - &:hover { - scale: 1.1; - } - } - } - .contentContainer { - width: 100%; - box-sizing: border-box; - flex-grow: 1; - display: flex; - flex-direction: column; - .mainContent { - display: flex; - flex-direction: column; - align-items: flex-start; - min-height: 100px; - flex-grow: 1; - .header { - width: 100%; - } - .content { - width: 100%; - display: flex; - flex-direction: column; - flex-grow: 1; - } - } - } - .footer { - width: 100%; - display: flex; - } - @include shadow; - &.light { - background-color: var(--white-color); - color: var(--black-color); - } - &.dark { - background-color: var(--dark-color); - color: var(--white-color); - } - &.small { - width: 375px; - padding: 10px; - .image { - width: 375px; - } - } - &.medium { - width: 450px; - .titleImage { - width: 500px; - } - } - &.large { - width: 700px; - padding: 30px; - .titleImage { - width: 700px; - } - } -} diff --git a/packages/ui/lib/Card/Card.stories.tsx b/packages/ui/lib/Card/Card.stories.tsx deleted file mode 100644 index 720c4b3..0000000 --- a/packages/ui/lib/Card/Card.stories.tsx +++ /dev/null @@ -1,252 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React, { useState } from 'react'; -import { Card, type CardProps } from './Card'; -import { Button } from '../Button/Button'; -import { Input } from '../Input/Input'; - -const meta = { - title: 'Components/Card', - component: Card, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - theme: { - options: ['dark', 'light'], - control: { type: 'select' }, - }, - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - shadow: { - options: ['regular', 'small', 'medium', 'large', 'extraLarge', 'inner'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: CardProps = { - titleImage: undefined, - theme: 'light', - size: 'medium', - shadow: 'medium', - header: header, - mainContent: content, - footer: footer, -}; - -export const DefaultCard: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleCard: Story = { - args: { - ...defaultProps, - header: ( - <> -

SAST

-

- 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 -

- - ), - mainContent: ( - <> -
- 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 - 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 - 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 - 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 - 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 - 基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛基础知识竞赛 -
- - ), - footer: ( -
- - -
- ), - }, -}; - -export const LoginCard: Story = { - args: { - ...defaultProps, - header: ( - <> -
- - - - - - - - - - - - - - - - - - - - - - LOGIN HERE -
- - ), - mainContent: ( - <> -
- - -
- Recover Password? -
-
- - ), - footer: ( -
- -
-
- ), - }, -}; - -export const ImageCard: Story = { - args: { - ...defaultProps, - titleImage: ( - - ) as unknown as HTMLImageElement, - }, -}; diff --git a/packages/ui/lib/Card/Card.tsx b/packages/ui/lib/Card/Card.tsx deleted file mode 100644 index 9045ab9..0000000 --- a/packages/ui/lib/Card/Card.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React from 'react'; -import styles from './Card.module.scss'; -import classnames from 'classnames'; - -export interface CardProps extends React.HtmlHTMLAttributes { - /** - * the image of the card - */ - titleImage?: HTMLImageElement; - /** - * The theme of the Card. - */ - theme?: 'dark' | 'light'; - /** - * The size of the Card. - */ - size?: 'small' | 'medium' | 'large'; - /** - * The shadow of the Card. - */ - shadow?: 'regular' | 'small' | 'medium' | 'large' | 'extraLarge' | 'inner'; - /** - * The Header of the Card. - */ - header?: React.ReactNode; - /** - * The content of the Card. - */ - mainContent?: React.ReactNode; - /** - * The footer of the Card. - */ - footer?: React.ReactNode; - /** - * the className of the Card - */ - className?: string; - /** - * padding, the padding of the card - */ - padding?: number; - /** - * gap , the gap between the content and the header - */ - gap?: number; - /** - * width , the width of the card - */ - width?: number; -} - -export const Card = React.forwardRef( - ( - { - theme = 'light', - size = 'medium', - shadow = 'medium', - header = header, - mainContent = content, - footer = footer, - titleImage = undefined, - className = '', - padding = 20, - gap = 8, - ...rest - }, - ref, - ) => { - const cardClass = classnames( - styles['base'], - styles[theme], - styles[size], - styles[`shadow-${shadow}`], - ); - - return ( -
- {titleImage &&
{<>{titleImage}}
} -
-
- {header &&
{header}
} - {mainContent &&
{mainContent}
} -
- {footer &&
{footer}
}{' '} -
-
- ); - }, -); - -Card.displayName = 'Card'; diff --git a/packages/ui/lib/Card/index.ts b/packages/ui/lib/Card/index.ts deleted file mode 100644 index ca0b060..0000000 --- a/packages/ui/lib/Card/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Card'; diff --git a/packages/ui/lib/Carousel/Carousel.module.scss b/packages/ui/lib/Carousel/Carousel.module.scss deleted file mode 100644 index 6fdb5b4..0000000 --- a/packages/ui/lib/Carousel/Carousel.module.scss +++ /dev/null @@ -1,18 +0,0 @@ -@use '../variables' as *; -.base { - width: 400px; - height: 200px; - overflow: hidden; - .carouselAll { - display: grid; - grid-auto-flow: column; - transition: all 0.4s $cubic-bezier; - .item { - width: 400px; - height: 200px; - display: flex; - align-items: center; - justify-content: center; - } - } -} diff --git a/packages/ui/lib/Carousel/Carousel.stories.tsx b/packages/ui/lib/Carousel/Carousel.stories.tsx deleted file mode 100644 index 0ff3edd..0000000 --- a/packages/ui/lib/Carousel/Carousel.stories.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Carousel, type CarouselProps } from './Carousel'; - -const test = (value: number) => { - console.log('select number', value); -}; - -const styles = { - width: '290px', - height: '290px', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - borderRadius: '10px', - fontSize: '40px', - fontWeight: '1000', - boxShadow: '0px 1px 3px #e3e3e6', -}; - -const meta = { - title: 'Components/Carousel', - component: Carousel, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: CarouselProps = {}; - -export const DefaultCarousel: Story = { - args: { - ...defaultProps, - width: 300, - height: 300, - CarouselItems: [ - { children:
1
}, - { children:
2
}, - { children:
3
}, - { children:
4
}, - { children:
5
}, - ], - onChange: test, - defaultSelected: 2, - selected: 1, - }, -}; - -export const ExampleCarousel: Story = { - args: { - ...defaultProps, - CarouselItems: [ - { children:
1
}, - { children:
2
}, - { children:
3
}, - { children:
4
}, - { children:
5
}, - ], - }, -}; diff --git a/packages/ui/lib/Carousel/Carousel.tsx b/packages/ui/lib/Carousel/Carousel.tsx deleted file mode 100644 index e5b9496..0000000 --- a/packages/ui/lib/Carousel/Carousel.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import React, { memo, useEffect, useRef, useState } from 'react'; -import { Button, type CarouselItemProps, CarouselItem } from '..'; -import classNames from 'classnames'; -import styles from './Carousel.module.scss'; - -export interface CarouselProps { - /** - * width of the carousel - */ - width?: number; - /** - * height of the Carousel - */ - height?: number; - /** - * CarouselItems of the carousel - */ - CarouselItems?: CarouselItemProps[]; - /** - * onChange : the onChange of the Carousel - */ - onChange?: (value: number) => void; - /** - * defaultselect the defaultselect of the Carousel - */ - defaultSelected?: number; - /** - * select of the Carousel - */ - selected?: number; -} - -interface ContentProps { - CarouselItems: CarouselItemProps[]; -} - -export const Carousel = React.forwardRef( - ( - { width = 400, CarouselItems = undefined, height, onChange, defaultSelected, selected }, - ref, - ) => { - // The definition judgment of this rotating chart is determined by two factors, - // one is whether it has reached the halfway position, - // and the second is the speed of movement, when the dragging speed is greater than 0.5, it is automatically switched. - // 这个轮播图的界定判断由两个因素决定,一个是是否到达了一半的位置,第二个是移动的速度,当拖拽速度大于0.5时,自动进行切换。 - const [select, setSelect] = useState(defaultSelected || 0); - const [startX, setStartX] = useState(0); - const [endX, setEndX] = useState(0); - const [startTime, setStartTime] = useState(0); - const [endTime, setEndTime] = useState(0); - const [isDragging, setIsDragging] = useState(false); - const [difference, setDifference] = useState(0); - const [isChanged, setIsChanged] = useState(false); - const [itemsNumber, setItemsNumber] = useState(0); - const divRef = useRef(null); - - useEffect(() => { - selected && setSelect(selected); - }, [selected]); - const pre = () => { - select !== 0 && setSelect(select - 1); - }; - - const next = () => { - select !== itemsNumber - 1 && setSelect(select + 1); - }; - - const handleMouseDown = (e: React.MouseEvent) => { - setStartX(e.clientX); - setStartTime(Date.now()); - setIsDragging(true); - }; - - const handleMouseMove = (e: React.MouseEvent) => { - if (!isDragging) return; - const currentX = e.clientX; - const difference = startX - currentX; - setDifference(difference); - }; - - useEffect(() => { - if (divRef.current) { - divRef.current.style.transition = 'auto'; - divRef.current.style.transform = `translateX(${-(width * select + difference)}px)`; - } - }, [difference, select, width]); - - useEffect(() => { - if (difference === 0 && divRef.current) { - divRef.current.style.transition = ''; - divRef.current.style.transform = `translateX(-${width * select}px)`; - } - }, [select, width, difference]); - - // This is a half-position judgment - // 这个是一半位置的判断 - const handleMouseUp = (e: React.MouseEvent) => { - setEndX(e.clientX); - setEndTime(Date.now()); - if (Math.abs(difference) >= width / 2 && difference > 0 && select !== itemsNumber - 1) { - setSelect(select + 1); - setIsChanged(true); - } - if (Math.abs(difference) >= width / 2 && difference < 0 && select !== 0) { - setSelect(select - 1); - setIsChanged(true); - } - if ( - Math.abs(difference) < width / 2 && - divRef.current && - select === itemsNumber - 1 && - select === 0 - ) { - divRef.current.style.transform = `translateX(-${width * select}px)`; - } - setDifference(0); - setIsDragging(false); - }; - - useEffect(() => { - onChange && onChange(select); - }, [select, onChange]); - - useEffect(() => { - if (difference === 0 && !isChanged) { - const duration = endTime - startTime; - const space = endX - startX; - const v = space / duration; - // This is a speed judgment. - // 这个是速度的判断 - v < -0.5 && select !== itemsNumber - 1 && setSelect(select + 1); - v > 0.5 && select != 0 && setSelect(select - 1); - } - setIsChanged(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [difference]); - - const carouselClass = classNames(styles['base']); - - useEffect(() => { - CarouselItems && setItemsNumber(CarouselItems.length); - }, [CarouselItems]); - - const Content = memo(function content({ CarouselItems }: ContentProps) { - return ( - <> - {CarouselItems?.map((item, index) => { - return ( - - {item.children} - - ); - })} - - ); - }); - - return ( - <> -
- -
-
- {CarouselItems && } -
-
- -
- - ); - }, -); - -Carousel.displayName = 'Carousel'; diff --git a/packages/ui/lib/Carousel/CarouselItem.tsx b/packages/ui/lib/Carousel/CarouselItem.tsx deleted file mode 100644 index c44de6b..0000000 --- a/packages/ui/lib/Carousel/CarouselItem.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import styles from './Carousel.module.scss'; - -export interface CarouselItemProps { - /** - * children of the CarouselItem - */ - children?: React.ReactNode; - /** - * width of the CarouselItem - */ - width?: number; - /** - * height of the CarouselItem - */ - height?: number; -} - -export const CarouselItem = React.forwardRef( - ({ children, width, height }, ref) => { - return ( - <> -
- {children} -
- - ); - }, -); - -CarouselItem.displayName = 'CarouselItem'; diff --git a/packages/ui/lib/Carousel/index.ts b/packages/ui/lib/Carousel/index.ts deleted file mode 100644 index d6759ba..0000000 --- a/packages/ui/lib/Carousel/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Carousel'; -export * from './CarouselItem'; diff --git a/packages/ui/lib/Checkbox/Checkbox.module.scss b/packages/ui/lib/Checkbox/Checkbox.module.scss deleted file mode 100644 index 85ff789..0000000 --- a/packages/ui/lib/Checkbox/Checkbox.module.scss +++ /dev/null @@ -1,64 +0,0 @@ -@use '../variables' as *; -.base { - display: flex; - align-items: center; - gap: 5px; - cursor: pointer; - &.disabled { - @include disabled; - } - .checkboxButton { - all: unset; - position: relative; - height: 20px; - width: 20px; - display: flex; - justify-content: center; - align-items: center; - box-sizing: border-box; - border: 2px solid var(--shadow-color); - border-radius: 6px; - cursor: inherit; - transition: all 0.2s $cubic-bezier; - .checkPath { - stroke-dasharray: 24; - stroke-dashoffset: 24; - animation: draw 0.3s linear forwards; - animation-delay: 0.2s; - } - &::after { - content: ''; - position: absolute; - top: -1px; - left: -1px; - height: 22px; - width: 22px; - border-radius: 8px; - transition: all 0.2s $cubic-bezier; - } - &:hover::after { - background-color: rgba(var(--shadow-color-rgb), 0.2); - } - &.checked { - background-color: var(--primary-color); - border: unset; - transition: all 0.2s $cubic-bezier; - } - &.checked:hover { - box-shadow: 0 0px 15px rgba(var(--primary-color-rgb), 0.5); - } - } - .labelSpan { - font-size: 18px; - cursor: inherit; - } -} - -@keyframes draw { - 50% { - stroke-dashoffset: 18; - } - 100% { - stroke-dashoffset: 0; - } -} diff --git a/packages/ui/lib/Checkbox/Checkbox.stories.tsx b/packages/ui/lib/Checkbox/Checkbox.stories.tsx deleted file mode 100644 index 51f6661..0000000 --- a/packages/ui/lib/Checkbox/Checkbox.stories.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Checkbox, type CheckboxProps } from './Checkbox'; - -const meta = { - title: 'Components/Checkbox', - component: Checkbox, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: CheckboxProps = { - label: 'SAST', - disabled: false, -}; - -export const DefaultCheckbox: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleCheckbox: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Checkbox/Checkbox.tsx b/packages/ui/lib/Checkbox/Checkbox.tsx deleted file mode 100644 index ae722dc..0000000 --- a/packages/ui/lib/Checkbox/Checkbox.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import styles from './Checkbox.module.scss'; -import classNames from 'classnames'; -export interface CheckboxProps extends React.ButtonHTMLAttributes { - /** - * value of the checkbox - */ - value?: string; - /** - *label of the checkbox - */ - label: string; - /** - * diabled of the checkbox - */ - disabled?: boolean; - /** - * checked of the checkbox - */ - checked?: boolean; - /** - * onchange of the checkbox - */ - onChecked?: (type: 'add' | 'delete', value: string) => void; -} - -export const Checkbox = React.forwardRef( - ( - { value, checked, label = 'SAST', disabled = false, onChecked = function () {}, ...rest }, - ref, - ) => { - const checkboxClass = classNames(`${styles['base']} ${styles[disabled ? 'disabled' : '']}`); - const [isChecked, setIsChecked] = useState(false); - - useEffect(() => { - checked && setIsChecked(checked); - }, [checked]); - const handleChecked = () => { - const newIsChecked = !isChecked; - setIsChecked(newIsChecked); - newIsChecked && value && onChecked('add', value || label); - !newIsChecked && value && onChecked('delete', value || label); - }; - - return ( -
- - -
- ); - }, -); - -Checkbox.displayName = 'Checkbox'; diff --git a/packages/ui/lib/Checkbox/index.ts b/packages/ui/lib/Checkbox/index.ts deleted file mode 100644 index f5c939f..0000000 --- a/packages/ui/lib/Checkbox/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Checkbox'; diff --git a/packages/ui/lib/CheckboxGroup/CheckboxGroup.stories.tsx b/packages/ui/lib/CheckboxGroup/CheckboxGroup.stories.tsx deleted file mode 100644 index 6d05de8..0000000 --- a/packages/ui/lib/CheckboxGroup/CheckboxGroup.stories.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { CheckboxGroup, type CheckboxGroupProps } from './CheckboxGroup'; - -const test = (value: string[]) => { - console.log('selectValue', value); -}; - -const meta = { - title: 'Components/CheckboxGroup', - component: CheckboxGroup, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: CheckboxGroupProps = { - options: [ - { label: 'nodejs', key: 1, value: 'node' }, - { label: 'nestjs', key: 2, value: 'nest' }, - { label: 'nextjs', key: 3, value: 'next' }, - ], - direction: 'column', -}; - -export const DefaultCheckboxGroup: Story = { - args: { - ...defaultProps, - onChange: test, - }, -}; - -export const ExampleCheckboxGroup: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/CheckboxGroup/CheckboxGroup.tsx b/packages/ui/lib/CheckboxGroup/CheckboxGroup.tsx deleted file mode 100644 index 48f9b2c..0000000 --- a/packages/ui/lib/CheckboxGroup/CheckboxGroup.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { type CheckboxProps } from '..'; -import { Content } from './Content'; - -export interface OptionItemProps extends CheckboxProps { - value?: string; - key?: number; -} - -export interface CheckboxGroupProps { - /** - * options of the checkboxGroup - */ - options: OptionItemProps[]; - /** - * Onchange of the group - */ - onChange?: (value: string[]) => void; - /** - * type "column"|"row" - */ - direction?: 'column' | 'row'; -} - -export const CheckboxGroup = React.forwardRef( - ({ options, onChange, direction, ...rest }, ref) => { - const [selectedValue, setSelectedValue] = useState([]); - - const changeSelect = (type: 'add' | 'delete', value: string) => { - if (type === 'add') { - const newSelected = [...selectedValue, value]; - setSelectedValue(newSelected); - } - if (type === 'delete') { - const newSelected = selectedValue.filter((element) => element !== value); - setSelectedValue(newSelected); - } - }; - - useEffect(() => { - onChange && onChange(selectedValue); - }, [selectedValue, onChange]); - - return ( - <> -
- -
- - ); - }, -); - -CheckboxGroup.displayName = 'CheckboxGroup'; diff --git a/packages/ui/lib/CheckboxGroup/Content.tsx b/packages/ui/lib/CheckboxGroup/Content.tsx deleted file mode 100644 index b35590b..0000000 --- a/packages/ui/lib/CheckboxGroup/Content.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { memo } from 'react'; -import type { OptionItemProps } from './CheckboxGroup'; -import { Checkbox } from '..'; - -export interface ContentProps { - options: OptionItemProps[]; - selectValue: string[]; - changeSelect: (type: 'add' | 'delete', value: string) => void; -} - -export const Content = memo(function Content({ options, selectValue, changeSelect }: ContentProps) { - return ( - <> - {options.map((child, index) => { - return ( - - ); - })} - - ); -}); diff --git a/packages/ui/lib/CheckboxGroup/index.ts b/packages/ui/lib/CheckboxGroup/index.ts deleted file mode 100644 index 7c00f7b..0000000 --- a/packages/ui/lib/CheckboxGroup/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './CheckboxGroup'; diff --git a/packages/ui/lib/CodeEditor/CodeEditor.module.scss b/packages/ui/lib/CodeEditor/CodeEditor.module.scss deleted file mode 100644 index 1cdfe3e..0000000 --- a/packages/ui/lib/CodeEditor/CodeEditor.module.scss +++ /dev/null @@ -1,43 +0,0 @@ -@use '../variables' as *; -$padding: 10px; -.base { - .header-container { - display: flex; - align-items: center; - gap: 7px; - background-color: var(--border-white); - padding: $padding; - padding-bottom: 7px; - color: var(--black-color); - overflow: hidden; - border-radius: $radius-5 $radius-5 0 0; - font-weight: 700; - box-sizing: border-box; - svg { - fill: var(--primary-color); - } - } - .select-container { - display: flex; - justify-content: space-between; - align-items: center; - padding-right: $padding; - .refresh-button { - display: flex; - justify-content: center; - align-items: center; - height: 34px; - border-radius: $radius-half; - svg { - fill: var(--primary-color); - } - } - } - .divider { - flex-basis: 1px; - background-color: var(--border-white); - } - .editor-container { - flex-grow: 1; - } -} diff --git a/packages/ui/lib/CodeEditor/CodeEditor.stories.tsx b/packages/ui/lib/CodeEditor/CodeEditor.stories.tsx deleted file mode 100644 index 46d6c40..0000000 --- a/packages/ui/lib/CodeEditor/CodeEditor.stories.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { CodeEditor, type CodeEditorProps } from './CodeEditor'; -import { OptionProps } from '../Select'; - -const test = (Item: OptionProps, content: string) => { - console.log('item', Item); - console.log('content', content); -}; - -const testLanguage = (value: string) => { - console.log('language', value); -}; - -const refreshTest = () => { - console.log('hello'); -}; - -const meta = { - title: 'Components/CodeEditor', - component: CodeEditor, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: CodeEditorProps = { - width: 600, - height: 700, - languageList: [ - { value: 'c', label: 'C', key: 3 }, - { value: 'javascript', label: 'JavaScript', key: 5 }, - { value: 'java', label: 'Java', key: 7 }, - ], - onchange: test, - onLanguageChange: testLanguage, - defaultValue: `/** - * Definition for a binary tree node. - * struct TreeNode { - * int val; - * struct TreeNode *left; - * struct TreeNode *right; - * }; - */ - /** - * Note: The returned array must be malloced, assume caller calls free(). - */ - int* preorderTraversal(struct TreeNode* root, int* returnSize) { - - }`, - onRefresh: refreshTest, -}; - -export const DefaultCodeEditor: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleCodeEditor: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/CodeEditor/CodeEditor.tsx b/packages/ui/lib/CodeEditor/CodeEditor.tsx deleted file mode 100644 index 866161e..0000000 --- a/packages/ui/lib/CodeEditor/CodeEditor.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import Editor from '@monaco-editor/react'; -import styles from './CodeEditor.module.scss'; -import { Button, Card, Select, type OptionProps } from '..'; - -export interface CodeEditorProps extends React.HtmlHTMLAttributes { - /** - * width of the code area - */ - width?: number; - /** - * height of the code area - */ - height?: number; - /** - * languageList, the languageList of the code-Editor - */ - languageList?: OptionProps[]; - /** - * onchange , the onchange of the code-editor - */ - onchange?: (language: OptionProps, content: string) => void; - /** - * defaultValue, the default value of the codeEditor - */ - defaultValue?: string; - /** - * value, the value of the codeEditor - */ - value?: string; - /** - * onLanguageChange, Callbacks when the selected language changes - */ - onLanguageChange?: (value: string) => void; - /** - * onRefresh , the refresh button click callback - */ - onRefresh?: () => void; -} - -export const CodeEditor = React.forwardRef( - ( - { - width = 400, - height = 500, - onRefresh, - languageList = [ - { value: 'c', label: 'C', key: 3 }, - { value: 'javascript', label: 'JavaScript', key: 5 }, - { value: 'java', label: 'Java', key: 7 }, - ], - defaultValue = `/** - * Definition for a binary tree node. - * struct TreeNode { - * int val; - * struct TreeNode *left; - * struct TreeNode *right; - * }; - */ - /** - * Note: The returned array must be malloced, assume caller calls free(). - */ - int* preorderTraversal(struct TreeNode* root, int* returnSize) { - - }`, - value, - onchange, - onLanguageChange, - ...rest - }, - ref, - ) => { - const [selectLanguage, setSelectLanguage] = useState(); - const [content, setContent] = useState(defaultValue); - - useEffect(() => { - value && setContent(value); - }, [value]); - - const handleSelect = (value: OptionProps) => { - const newSelectLanguage = languageList.find((item) => item.key === value.key); - setSelectLanguage(newSelectLanguage?.value); - }; - - const handleCodeContent = (value: string | undefined) => { - setContent(value); - }; - - useEffect(() => { - const selectItem = languageList.find((item) => item.value === selectLanguage); - selectItem && content && onchange && onchange(selectItem, content); - }, [content, selectLanguage, onchange, languageList]); - - useEffect(() => { - onLanguageChange && selectLanguage && onLanguageChange(selectLanguage); - }, [selectLanguage, onLanguageChange]); - - const handleRefresh = () => { - setContent(defaultValue); - onRefresh && onRefresh(); - }; - - return ( - <> -
- -
- - - - Code -
- - } - mainContent={ - <> -
- - -
-
-
- -
- - } - footer={<>} - >
-
- - ); - }, -); - -CodeEditor.displayName = 'CodeEditor'; diff --git a/packages/ui/lib/CodeEditor/index.ts b/packages/ui/lib/CodeEditor/index.ts deleted file mode 100644 index aa4b203..0000000 --- a/packages/ui/lib/CodeEditor/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './CodeEditor'; diff --git a/packages/ui/lib/DatePicker/DatePicker.module.scss b/packages/ui/lib/DatePicker/DatePicker.module.scss deleted file mode 100644 index e92e30d..0000000 --- a/packages/ui/lib/DatePicker/DatePicker.module.scss +++ /dev/null @@ -1,72 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-300; -$border: $border-1; -@mixin animation($type) { - animation-name: #{$type}; - animation-duration: $animation-duration; - animation-timing-function: $cubic-bezier; - animation-fill-mode: forwards; -} -.date-picker-button { - display: flex; - align-items: center; - gap: 10px; - color: var(--shadow-color) !important; - transition: all $animation-duration $cubic-bezier; - padding: 10px 15px !important; - width: 250px; - height: 42px; - border-radius: $radius-10; - border: $border solid var(--shadow-color) !important; - font-size: $font-size-14 !important; - padding: 11px !important; - .select-date { - color: var(--black-color) !important; - } - &.is-select-date { - border: $border solid var(--primary-color) !important; - color: var(--primary-color) !important; - svg { - fill: var(--primary-color) !important; - } - } - svg { - fill: var(--shadow-color); - transition: all $animation-duration $cubic-bezier; - } - &:hover { - color: var(--primary-color) !important; - border: $border solid var(--primary-color) !important; - svg { - fill: var(--primary-color); - } - } -} -.calendar-container { - position: absolute; - margin-top: 5px; - &.in { - @include animation(in); - } - &.hide { - @include animation(hide); - } -} - -@keyframes in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} - -@keyframes hide { - from { - opacity: 1; - } - to { - opacity: 0; - } -} diff --git a/packages/ui/lib/DatePicker/DatePicker.stories.tsx b/packages/ui/lib/DatePicker/DatePicker.stories.tsx deleted file mode 100644 index e5b39c8..0000000 --- a/packages/ui/lib/DatePicker/DatePicker.stories.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { DatePicker, type DatePickerProps } from './DatePicker'; - -const test = (value: Date) => { - console.log('selectDate', value); -}; - -function generateRandomDate() { - const startTimestamp = new Date(2000, 0, 1).getTime(); // 开始日期的时间戳,这里设置为2000年1月1日 - const endTimestamp = new Date().getTime(); // 当前日期的时间戳,作为结束日期 - - const randomTimestamp = Math.random() * (endTimestamp - startTimestamp) + startTimestamp; - const randomDate = new Date(randomTimestamp); - - return randomDate; -} - -const meta = { - title: 'Components/DatePicker', - component: DatePicker, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: DatePickerProps = { - onchange: test, -}; - -export const DefaultDatePicker: Story = { - args: { - ...defaultProps, - }, -}; - -export const RandomDefaultDatePicker: Story = { - args: { - ...defaultProps, - defaultPickDate: new Date(), - }, -}; - -export const RandomDatePicker: Story = { - args: { - pickDate: generateRandomDate(), - }, -}; diff --git a/packages/ui/lib/DatePicker/DatePicker.tsx b/packages/ui/lib/DatePicker/DatePicker.tsx deleted file mode 100644 index 89b847e..0000000 --- a/packages/ui/lib/DatePicker/DatePicker.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import { Button, Calendar } from '..'; -import styles from './DatePicker.module.scss'; - -export interface DatePickerProps extends React.HtmlHTMLAttributes { - /** - * onchange, the onchange of the datepicker - */ - onchange?: (value: Date) => void; - /** - * defaultPickDate, the defaultPickDate of the datepicker - */ - defaultPickDate?: Date; - /** - * pickDate, the pickDate of the datePicker - */ - pickDate?: Date; -} - -export const DatePicker = React.forwardRef( - ({ onchange, defaultPickDate, pickDate, ...rest }, ref) => { - const [calendarVisible, setCalendarVisible] = useState(false); - const [selectDate, setSelectDate] = useState(defaultPickDate); - const [selectDateString, setSelectDateString] = useState( - defaultPickDate?.toString(), - ); - const [calendarIn, setCalendarIn] = useState(false); - const [calendarHide, setCalendarHide] = useState(false); - - useEffect(() => { - if (pickDate) { - setSelectDate(pickDate); - setSelectDateString(pickDate.toString()); - } - }, [pickDate]); - - useEffect(() => { - selectDate && onchange && onchange(selectDate); - }, [selectDate, onchange]); - - const handleDate = (value: Date) => { - setSelectDate(value); - if (value.toString() !== new Date().toString()) { - setSelectDateString(value.toString()); - } - }; - - const handleCalendarVisible = (e: React.MouseEvent) => { - e.stopPropagation(); - const newCalendarVisible = !calendarVisible; - if (newCalendarVisible) { - openCalendar(); - } - if (!newCalendarVisible) { - closeCalendar(); - } - }; - - const openCalendar = () => { - document.body.addEventListener('click', closeCalendar); - setCalendarIn(true); - setCalendarVisible(true); - setTimeout(() => { - setCalendarIn(false); - }, 200); - }; - - const closeCalendar = () => { - document.body.removeEventListener('click', closeCalendar); - setCalendarHide(true); - setTimeout(() => { - setCalendarHide(false); - setCalendarVisible(false); - }, 200); - }; - - console.log('selectDateString', selectDateString); - - return ( - <> -
- - {calendarVisible && ( -
- { - e.stopPropagation(); - }} - > -
- )} -
- - ); - }, -); - -DatePicker.displayName = 'DatePicker'; diff --git a/packages/ui/lib/DatePicker/index.ts b/packages/ui/lib/DatePicker/index.ts deleted file mode 100644 index a48b62e..0000000 --- a/packages/ui/lib/DatePicker/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './DatePicker'; diff --git a/packages/ui/lib/Dialog/Dialog.mdx b/packages/ui/lib/Dialog/Dialog.mdx deleted file mode 100644 index 2cb6313..0000000 --- a/packages/ui/lib/Dialog/Dialog.mdx +++ /dev/null @@ -1,25 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import { useState } from 'react'; - -import * as DialogStories from './Dialog.stories'; -import { Dialog } from './Dialog'; -import { Button } from '../Button'; - - - -# Dialog - -export const ShowDialog = () => { - const [visible, setVisible] = useState(false); - return ( - <> - - setVisible(false)} - /> - - ); -}; - - diff --git a/packages/ui/lib/Dialog/Dialog.module.scss b/packages/ui/lib/Dialog/Dialog.module.scss deleted file mode 100644 index 1128290..0000000 --- a/packages/ui/lib/Dialog/Dialog.module.scss +++ /dev/null @@ -1,72 +0,0 @@ -@use '../variables' as *; -@mixin animation($name) { - animation-name: $name; - animation-duration: 400ms; - animation-timing-function: $cubic-bezier; - animation-fill-mode: forwards; -} - -.background { - top: 0; - left: 0; - height: 100%; - width: 100%; - position: absolute; - box-sizing: border-box; - background-color: $background-shadow-color; - &.background-in { - @include animation(in); - } - &.background-hide { - @include animation(hide); - } - .base { - @include absolute-center; - &.in { - @include animation(dialog-in); - } - &.hide { - @include animation(dialog-hide); - } - } -} - -@keyframes dialog-in { - 0% { - opacity: 0; - transform: translate(-50%, -50%) scale(0.8); - } - 100% { - opacity: 1; - transform: translate(-50%, -50%) scale(1); - } -} - -@keyframes dialog-hide { - 0% { - opacity: 1; - transform: translate(-50%, -50%) scale(1); - } - 100% { - opacity: 0; - transform: translate(-50%, -50%) scale(0.8); - } -} - -@keyframes in { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@keyframes hide { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} diff --git a/packages/ui/lib/Dialog/Dialog.stories.tsx b/packages/ui/lib/Dialog/Dialog.stories.tsx deleted file mode 100644 index 2a3f615..0000000 --- a/packages/ui/lib/Dialog/Dialog.stories.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Dialog, type DialogProps } from './Dialog'; -import { Button } from '../Button/Button'; - -const meta = { - title: 'Components/Dialog', - component: Dialog, - parameters: { - layout: 'centered', - }, - // tags: ['autodocs'], - argTypes: { - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: DialogProps = { - size: 'medium', -}; - -export const DefaultDialog: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleDialog: Story = { - args: { - ...defaultProps, - size: 'medium', - header: 考试已经结束, - mainContent: 请问您还需要提交吗, - footer: ( -
- -
- ), - }, -}; diff --git a/packages/ui/lib/Dialog/Dialog.tsx b/packages/ui/lib/Dialog/Dialog.tsx deleted file mode 100644 index 63e66c1..0000000 --- a/packages/ui/lib/Dialog/Dialog.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import styles from './Dialog.module.scss'; -import { Button, Card } from '..'; - -export interface DialogProps extends React.HtmlHTMLAttributes { - /** - * The header of the Dialog. - */ - header?: React.ReactNode; - /** - * The content of the Dialog. - */ - mainContent?: React.ReactNode; - /** - * The footer of the Dialog. - */ - footer?: React.ReactNode; - /** - * the visible of the dialog - */ - visible?: boolean; - /** - * shadow, the shadow of the dialog - */ - shadow?: 'regular' | 'small' | 'medium' | 'large' | 'extraLarge' | 'inner'; - /** - * The theme of the Card. - */ - theme?: 'dark' | 'light'; - /** - * The size of the Card. - */ - size?: 'small' | 'medium' | 'large'; - /** - * cancel, the cancel callback - */ - onCancel?: () => void; - /** - * onOk , the onOk callback - */ - onOk?: () => void; -} - -export const Dialog = React.forwardRef( - ( - { - header, - mainContent, - onCancel, - onOk, - footer = ( - <> -
- - -
- - ), - theme, - shadow = 'regular', - size, - visible = false, - ...rest - }, - ref, - ) => { - const [dialogVisible, setDialogVisible] = useState(false); - const [dialogIn, setDialogIn] = useState(false); - const [dialogHide, setDialogHide] = useState(false); - - useEffect(() => { - if (visible) { - console.log('hello'); - setDialogVisible(true); - document.body.style.overflow = 'hidden'; - setDialogIn(true); - setTimeout(() => { - setDialogIn(false); - }, 200000); - } - if (!visible) { - console.log('hi'); - setDialogHide(true); - setTimeout(() => { - setDialogHide(false); - setDialogVisible(false); - document.body.style.overflow = ''; - }, 400); - } - }, [visible]); - - return ( - <> - {dialogVisible && ( -
- -
- )} - - ); - }, -); - -Dialog.displayName = 'Dialog'; diff --git a/packages/ui/lib/Dialog/index.ts b/packages/ui/lib/Dialog/index.ts deleted file mode 100644 index a5d3159..0000000 --- a/packages/ui/lib/Dialog/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Dialog'; diff --git a/packages/ui/lib/Input/Input.module.scss b/packages/ui/lib/Input/Input.module.scss deleted file mode 100644 index 4009c6a..0000000 --- a/packages/ui/lib/Input/Input.module.scss +++ /dev/null @@ -1,69 +0,0 @@ -@use '../variables' as *; -$border-radius: $radius-8; -$border-width: $border-1; -$font-size-select: $font-size-14; -$font-size-label: $font-size-10; -$padding-left-right: 11px; -$padding-label-top: 8px; -$animation-duration: $duration-200; -.base { - width: fit-content; - border-radius: $border-radius; - box-sizing: border-box; - color: var(--shadow-color); - position: relative; - transition: all $animation-duration $cubic-bezier; - font-weight: 500; - background-color: var(--white-color); - &.border { - border: $border-width solid var(--shadow-color) !important; - &:hover:not(&.disabled) { - border: $border-width solid var(--primary-color) !important; - } - &:has(.input:focus) { - border: $border-width solid var(--primary-color) !important; - } - } - cursor: text; - .inputLabel { - position: absolute; - transition: all $animation-duration $cubic-bezier; - top: 50%; - transform: translate(0, -50%); - left: $padding-left-right; - font-size: $font-size-select; - } - .isUpInputLabel { - top: $padding-label-top; - font-size: $font-size-label; - transform: translate(0); - } - - .input:focus ~ .inputLabel { - color: var(--primary-color) !important; - top: $padding-label-top; - font-size: $font-size-label; - transform: translate(0); - } - - .input { - all: unset; - padding: 22px $padding-left-right 8px $padding-left-right; - width: -webkit-fill-available; - position: relative; - top: 0; - bottom: 0; - color: var(--black-color); - box-sizing: border-box; - font-size: $font-size-select; - } - &.disabled { - @include disabled; - } - &.fill { - width: 100% !important; - .input { - width: 100% !important; - } - } -} diff --git a/packages/ui/lib/Input/Input.stories.tsx b/packages/ui/lib/Input/Input.stories.tsx deleted file mode 100644 index f10affa..0000000 --- a/packages/ui/lib/Input/Input.stories.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Input, type InputProps } from './Input'; - -const test = (value: string) => { - console.log('change input value', value); -}; - -const meta = { - title: 'Components/Input', - component: Input, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - mode: { - options: ['text', 'password'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: InputProps = { - width: 250, - disabled: false, - onchange: test, - defaultValue: 'hello world!', - isBorder: true, -}; - -export const DefaultInput: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleInput: Story = { - args: { - ...defaultProps, - label: , - placeholder: 'hello', - }, -}; diff --git a/packages/ui/lib/Input/Input.tsx b/packages/ui/lib/Input/Input.tsx deleted file mode 100644 index c642b54..0000000 --- a/packages/ui/lib/Input/Input.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import React, { useState, type ChangeEvent, useEffect } from 'react'; -import styles from './Input.module.scss'; -import classnames from 'classnames'; - -export interface InputProps extends React.InputHTMLAttributes { - /** - * The width of the Input. - */ - width?: number; - /** - * If `true`, the input will be disabled. - */ - disabled?: boolean; - /** - * label,the label of the input - */ - label?: React.ReactNode; - /** - * The type of the mode. - */ - mode?: 'text' | 'password'; - /** - * placeholder,the placeholder of the input - */ - placeholder?: string; - /** - * placeholder,the placeholder of the input - */ - fontsize?: number; - /** - * isFillFather, is ture the input fill the father - */ - isFillFather?: boolean; - /** - * function(value:string, e:event) 输入框内容变化时的回调 - */ - onchange?: (value: string, e: ChangeEvent) => void; - /** - * value ,the value of the input - */ - value?: string; - /** - * defaultValue, the defaultValue of the input - */ - defaultValue?: string; - /** - * isBorder? have the border of the input - */ - isBorder?: boolean; -} - -export const Input = React.forwardRef( - ( - { - width = 250, - disabled = false, - label = '昵称', - mode = 'text', - placeholder = '', - fontsize = 16, - onchange, - isFillFather = false, - value, - isBorder = true, - defaultValue = '', - ...rest - }, - ref, - ) => { - //设置isUpLabel来调节Label上浮状态 - const [isUpInputLabel, setIsUpInputLabel] = useState(false); - const [inputValue, setInputValue] = useState(defaultValue); - const InputClass = classnames( - styles['base'], - styles[disabled ? 'disabled' : ''], - styles[isFillFather ? 'fill' : ''], - styles[isBorder ? 'border' : ''], - ); - useEffect(() => { - if (placeholder) { - setIsUpInputLabel(true); - } - }, [placeholder]); - //设置,当input框里面没有内容时,placeHolder也没有内容时,将label框拉下 - const blurInput = () => { - if (!inputValue && !placeholder && isUpInputLabel) { - setIsUpInputLabel(false); - } - }; - const changeValue = (e: ChangeEvent) => { - setInputValue(e.target.value); - onchange && onchange(e.target.value, e); - }; - - useEffect(() => { - value !== undefined && setInputValue(value); - }, [value]); - - return ( - <> -
!disabled && setIsUpInputLabel(true)} - > - - -
- - ); - }, -); - -Input.displayName = 'Input'; diff --git a/packages/ui/lib/Input/index.ts b/packages/ui/lib/Input/index.ts deleted file mode 100644 index ba9fe7e..0000000 --- a/packages/ui/lib/Input/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Input'; diff --git a/packages/ui/lib/Navbar/Navbar.module.scss b/packages/ui/lib/Navbar/Navbar.module.scss deleted file mode 100644 index 365d483..0000000 --- a/packages/ui/lib/Navbar/Navbar.module.scss +++ /dev/null @@ -1,23 +0,0 @@ -.base { - display: flex; - flex-direction: row; - margin: 0; - padding: 0; - text-align: center; - background-color: #f2f2f2; - padding: 30px; - justify-content: space-between; - width: 1000px; - .title { - font-size: 23px; - font-weight: 800; - } - .navbar { - padding: 0; - margin: 0; - list-style: none; - display: flex; - flex-direction: row; - gap: 20px; - } -} diff --git a/packages/ui/lib/Navbar/Navbar.stories.tsx b/packages/ui/lib/Navbar/Navbar.stories.tsx deleted file mode 100644 index e941e86..0000000 --- a/packages/ui/lib/Navbar/Navbar.stories.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Navbar, type NavbarProps } from './Navbar'; - -const meta = { - title: 'Components/Navbar', - component: Navbar, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: NavbarProps = {}; - -export const DefaultNavbar: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleNavbar: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Navbar/Navbar.tsx b/packages/ui/lib/Navbar/Navbar.tsx deleted file mode 100644 index 7c99ca7..0000000 --- a/packages/ui/lib/Navbar/Navbar.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import classNames from 'classnames'; -import React from 'react'; -import styles from './Navbar.module.scss'; - -export interface NavbarProps {} - -export const Navbar = React.forwardRef(() => { - const navbarClass = classNames(styles['navbar']); - const mainClass = classNames(styles['base']); - - return ( -
-
SAST
-
    -
  • HOME
  • -
  • ABOUT
  • -
  • BLOG
  • -
  • CONTACT
  • -
-
- ); -}); - -Navbar.displayName = 'Navbar'; diff --git a/packages/ui/lib/Navbar/index.ts b/packages/ui/lib/Navbar/index.ts deleted file mode 100644 index e8a6562..0000000 --- a/packages/ui/lib/Navbar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Navbar'; diff --git a/packages/ui/lib/Pagination/Pagination.module.scss b/packages/ui/lib/Pagination/Pagination.module.scss deleted file mode 100644 index cf97c05..0000000 --- a/packages/ui/lib/Pagination/Pagination.module.scss +++ /dev/null @@ -1,17 +0,0 @@ -@use '../variables' as *; -.base { - display: flex; - flex-direction: row; - gap: 5px; - &.disabled { - @include disabled; - } - .pagination-item { - width: 32px; - height: 32px; - display: flex; - align-items: center; - justify-content: center; - font-size: 13px !important; - } -} diff --git a/packages/ui/lib/Pagination/Pagination.stories.tsx b/packages/ui/lib/Pagination/Pagination.stories.tsx deleted file mode 100644 index f88c8b2..0000000 --- a/packages/ui/lib/Pagination/Pagination.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Pagination, type PaginationProps } from './Pagination'; - -const test = (value: number) => { - console.log('currentpage', value); -}; - -const meta = { - title: 'Components/Pagination', - component: Pagination, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: PaginationProps = { - total: 80, - pageSize: 10, - activePage: undefined, - defaultActivePage: 4, - onChange: test, - disabled: false, -}; - -export const DefaultPagination: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExamplePagination: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Pagination/Pagination.tsx b/packages/ui/lib/Pagination/Pagination.tsx deleted file mode 100644 index 4021dd4..0000000 --- a/packages/ui/lib/Pagination/Pagination.tsx +++ /dev/null @@ -1,241 +0,0 @@ -import React, { useEffect, useState, type ReactNode } from 'react'; -import styles from './Pagination.module.scss'; -import classNames from 'classnames'; -import { PaginationItem } from './PaginationItem'; -import { useCurrentPageStore } from './useCurrentPageStore'; - -export interface PaginationProps { - /** - * the total of the number 一共的总条数 - */ - total: number; - /** - * the pageSize of the total 每页条数 - */ - pageSize: number; - /** - * the onchange of the Pagination - */ - onChange?: (value: number) => void; - /** - * currentpage of the Pagination - */ - activePage?: number | undefined; - /** - * defaultActivePage of the Pagination - */ - defaultActivePage?: number; - /** - * disabled of the Pagination - */ - disabled?: boolean; -} - -export const Pagination = React.forwardRef( - ( - { - pageSize = 10, - total = 60, - onChange = function () {}, - activePage, - defaultActivePage = 1, - disabled = false, - ...rest - }, - ref, - ) => { - const [itemList, setItemList] = useState(); - const [pageNumber, setPageNumber] = useState(0); - const [currentPage, changeCurrentPage] = useCurrentPageStore((state) => [ - state.currentPage, - state.changeCurrentPage, - ]); - - //default value must be assigned initially, and cannot be assigned later. - useEffect(() => { - changeCurrentPage(defaultActivePage); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - useEffect(() => { - const pageNumber = total / pageSize; - //Returns the smallest integer greater than or equal to its numeric argument. - setPageNumber(Math.ceil(pageNumber)); - }, [total, pageSize]); - - useEffect(() => { - onChange(currentPage); - }, [currentPage, onChange]); - - useEffect(() => { - if (activePage) changeCurrentPage(activePage); - }, [activePage, changeCurrentPage]); - - useEffect(() => { - const newItems: ReactNode[] = []; - //When the number of pages is less than or equal to 7, all are displayed without ellipses in between - if (pageNumber <= 7) - for (let i = 0; i < pageNumber; i++) { - newItems.push( - - {i + 1} - , - ); - } - else { - // This is the omission of currentPage when there are too many numbers and the currentPage appears in the first Four. - if (currentPage <= 3) { - for (let i = 0; i < 4; i++) { - newItems.push( - - {i + 1} - , - ); - } - newItems.push( - - ... - , - ); - for (let i = pageNumber - 3; i < pageNumber; i++) { - newItems.push( - - {i + 1} - , - ); - } - } - // This is the case when currentPage is omitted in the last four occurrences. - if (currentPage >= pageNumber - 2) { - for (let i = 0; i < 3; i++) { - newItems.push( - - {i + 1} - , - ); - } - newItems.push( - - ... - , - ); - for (let i = pageNumber - 4; i < pageNumber; i++) { - newItems.push( - - {i + 1} - , - ); - } - } - //This is what happens when currentPage appears in the middle of the omission - if (currentPage < pageNumber - 2 && currentPage > 3) { - newItems.push( - - {1} - , - ); - newItems.push( - - ... - , - ); - for (let i = currentPage - 2; i < currentPage + 2; i++) { - newItems.push( - - {i + 1} - , - ); - } - newItems.push( - - ... - , - ); - newItems.push( - - {pageNumber} - , - ); - } - } - setItemList(newItems); - }, [pageNumber, currentPage, disabled]); - - const PaginationClass = classNames(`${styles['base']} ${styles[disabled ? 'disabled' : '']}`); - - return ( - <> -
- - - - - - - {itemList} - - - - - - -
- - ); - }, -); - -Pagination.displayName = 'Pagination'; diff --git a/packages/ui/lib/Pagination/PaginationItem.tsx b/packages/ui/lib/Pagination/PaginationItem.tsx deleted file mode 100644 index 3890a5f..0000000 --- a/packages/ui/lib/Pagination/PaginationItem.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { type ReactNode } from 'react'; -import { Button } from '..'; -import styles from './Pagination.module.scss'; -import { useCurrentPageStore } from './useCurrentPageStore'; - -export interface PaginationItemProps { - children?: ReactNode; - disabled?: boolean; - type: 'select' | 'add' | 'delete' | 'none'; - index?: number; -} - -export const PaginationItem = ({ - children, - disabled = false, - index, - type, -}: PaginationItemProps) => { - const [currentPage, increaseCurrentPage, decreaseCurrentPage, changeCurrentPage] = - useCurrentPageStore((state) => [ - state.currentPage, - state.increaseCurrentPage, - state.decreaseCurrentPage, - state.changeCurrentPage, - ]); - - const handleClick = (type: 'select' | 'add' | 'delete' | 'none', index?: number) => { - if (type === 'select' && index !== undefined) changeCurrentPage(index + 1); - if (type === 'add') increaseCurrentPage(); - if (type === 'delete') decreaseCurrentPage(); - }; - - return ( - - ); -}; diff --git a/packages/ui/lib/Pagination/index.ts b/packages/ui/lib/Pagination/index.ts deleted file mode 100644 index e016c96..0000000 --- a/packages/ui/lib/Pagination/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Pagination'; diff --git a/packages/ui/lib/Pagination/useCurrentPageStore.ts b/packages/ui/lib/Pagination/useCurrentPageStore.ts deleted file mode 100644 index e042a1a..0000000 --- a/packages/ui/lib/Pagination/useCurrentPageStore.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { create } from 'zustand'; - -interface State { - currentPage: number; -} - -interface Action { - increaseCurrentPage: () => void; - decreaseCurrentPage: () => void; - changeCurrentPage: (currentPage: State['currentPage']) => void; -} - -export const useCurrentPageStore = create((set) => ({ - currentPage: 1, - increaseCurrentPage: () => set((state) => ({ currentPage: state.currentPage + 1 })), - decreaseCurrentPage: () => set((state) => ({ currentPage: state.currentPage - 1 })), - changeCurrentPage: (newCurrentPage) => set(() => ({ currentPage: newCurrentPage })), -})); diff --git a/packages/ui/lib/Radio/Radio.module.scss b/packages/ui/lib/Radio/Radio.module.scss deleted file mode 100644 index 81e0a4b..0000000 --- a/packages/ui/lib/Radio/Radio.module.scss +++ /dev/null @@ -1,166 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-300; -@mixin medium { - width: 20px; - height: 20px; -} -@mixin large { - width: 30px; - height: 30px; -} -@mixin small { - width: 16px; - height: 16px; -} -@mixin size-radio-content($size-name) { - @if $size-name == 'small' { - @include small(); - } - @if $size-name == 'medium' { - @include medium(); - } - @if $size-name == 'large' { - @include large(); - } -} - -@mixin size-radio($size-name) { - .radioItem { - @include size-radio-content($size-name); - - &::before { - @include size-radio-content($size-name); - } - - &::after { - @include size-radio-content($size-name); - } - - &:checked::before { - @include size-radio-content($size-name); - } - } -} - -@mixin color-radio($color-name) { - .radioItem { - &:checked::before { - background-color: var(--#{$color-name}-color); - box-shadow: 0 0px 6px rgba(var(--#{$color-name}-color-rgb), 0.4); - } - } -} - -.base { - display: flex; - flex-direction: row; - gap: 5px; - align-items: center; - cursor: pointer; - &.disabled, - &.disabled .radioItem, - &.disabled .radioSpan { - @include disabled; - } - .radioSpan { - cursor: pointer; - } - &.primary { - @include color-radio(primary); - } - &.warning { - @include color-radio(warning); - } - &.danger { - @include color-radio(danger); - } - &.large { - gap: 7px; - @include size-radio(large); - .radioItem { - &:checked::after { - width: 10px; - height: 10px; - } - } - .radioSpan { - font-size: 27px; - } - } - &.medium { - gap: 5px; - @include size-radio(medium); - .radioItem { - &:checked::after { - width: 8px; - height: 8px; - } - } - .radioSpan { - font-size: 18px; - } - } - &.small { - gap: 3px; - @include size-radio(small); - .radioItem { - &:checked::after { - width: 6px; - height: 6px; - } - } - .radioSpan { - font-size: 15px; - } - } - .radioItem { - cursor: pointer; - appearance: none; - position: relative; - transition: all $animation-duration $cubic-bezier; - display: flex; - justify-content: center; - align-items: center; - & { - border: 2px solid var(--shadow-color); - border-radius: 50%; - } - &::before { - content: ''; - position: absolute; - box-sizing: border-box; - display: inline-block; - border-radius: 50%; - transition: all $animation-duration $cubic-bezier; - } - &::after { - content: ''; - border-radius: 50%; - position: absolute; - width: 100%; - height: 100%; - transition: all $animation-duration $cubic-bezier; - } - &:active { - scale: 0.95; - } - &:checked { - border: 0px; - } - &:checked::before { - content: ''; - box-sizing: border-box; - display: block; - border-radius: 50%; - } - &:checked::after { - content: ''; - text-align: center; - box-sizing: border-box; - background: var(--white-color); - border-radius: 50%; - display: block; - position: absolute; - } - } -} diff --git a/packages/ui/lib/Radio/Radio.stories.tsx b/packages/ui/lib/Radio/Radio.stories.tsx deleted file mode 100644 index 4efbe94..0000000 --- a/packages/ui/lib/Radio/Radio.stories.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Radio, type RadioProps } from './Radio'; - -const meta = { - title: 'Components/Radio', - component: Radio, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: RadioProps = { - size: 'medium', - color: 'primary', -}; - -export const DefaultRadio: Story = { - args: { - ...defaultProps, - children: 'hello', - }, -}; - -export const ExampleRadio: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Radio/Radio.tsx b/packages/ui/lib/Radio/Radio.tsx deleted file mode 100644 index f499542..0000000 --- a/packages/ui/lib/Radio/Radio.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import classNames from 'classnames'; -import React, { useEffect, useState } from 'react'; -import styles from './Radio.module.scss'; - -export interface RadioProps { - /** - * the key of the radio, is very important in radiogroup - */ - key?: number; - /** - * The color of the Radio. - */ - color?: 'primary' | 'warning' | 'danger'; - - /** - * The size of the Radio. - */ - size?: 'small' | 'medium' | 'large'; - - /** - * If `true`, the Radio will be disabled. - */ - disabled?: boolean; - /** - * the children of the radio - */ - children?: string; - /** - * the value of the radio,if not provide ,the value is children - */ - value?: string; - /** - * the checked of the radio - */ - checked?: boolean; - /** - * the defaultchecked of the radio? - */ - defaultChecked?: boolean; - /** - * the onchange of the radio (type:the type of the click(used for can cancel radio),value:string) - */ - onChange?: (value: string) => void; -} - -export const Radio = React.forwardRef( - ( - { - color = 'primary', - size = 'medium', - disabled = false, - children = 'radio', - value = children, - checked = false, - onChange, - defaultChecked = false, - ...rest - }, - ref, - ) => { - const radioClass = classNames( - styles['base'], - styles[color], - styles[size], - styles[disabled ? 'disabled' : ''], - ); - const [isChecked, setIsChecked] = useState(defaultChecked); - - const handleChange = () => { - if (onChange) onChange(value); - setIsChecked(true); - }; - - useEffect(() => { - setIsChecked(checked); - }, [checked]); - - return ( -
- - -
- ); - }, -); - -Radio.displayName = 'Radio'; diff --git a/packages/ui/lib/Radio/index.ts b/packages/ui/lib/Radio/index.ts deleted file mode 100644 index bfbe6d0..0000000 --- a/packages/ui/lib/Radio/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Radio'; diff --git a/packages/ui/lib/RadioGroup/RadioGroup.module.scss b/packages/ui/lib/RadioGroup/RadioGroup.module.scss deleted file mode 100644 index 0a1eb56..0000000 --- a/packages/ui/lib/RadioGroup/RadioGroup.module.scss +++ /dev/null @@ -1,13 +0,0 @@ -$gap: 5px; -.base { - &.vertical { - display: flex; - flex-direction: column; - gap: $gap; - } - &.horizontal { - display: flex; - flex-direction: row; - gap: $gap; - } -} diff --git a/packages/ui/lib/RadioGroup/RadioGroup.stories.tsx b/packages/ui/lib/RadioGroup/RadioGroup.stories.tsx deleted file mode 100644 index 305f40c..0000000 --- a/packages/ui/lib/RadioGroup/RadioGroup.stories.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React, { useState } from 'react'; -import { RadioGroup, type RadioGroupProps } from './RadioGroup'; - -const handleRadioChange = (value: string | string[] | null) => { - console.log('Selected value:', value); -}; -const meta = { - title: 'Components/RadioGroup', - component: RadioGroup, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: RadioGroupProps = { - direction: 'vertical', - defaultValue: '', - onChange: () => {}, - options: [ - { children: 'nodejs', value: 'nodejs', color: 'danger', size: 'large' }, - { children: 'vuejs', value: 'vuejs', color: 'warning' }, - { children: 'react', value: 'react', size: 'small' }, - ], -}; - -export const DefaultRadioGroup: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleRadioGroup: Story = { - args: { - ...defaultProps, - onChange: handleRadioChange, - defaultValue: 'nodejs', - }, -}; diff --git a/packages/ui/lib/RadioGroup/RadioGroup.tsx b/packages/ui/lib/RadioGroup/RadioGroup.tsx deleted file mode 100644 index 4efc894..0000000 --- a/packages/ui/lib/RadioGroup/RadioGroup.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import type { RadioProps } from '..'; -import classNames from 'classnames'; -import styles from './RadioGroup.module.scss'; -import { Radio } from '../Radio/Radio'; - -export interface RadioGroupProps { - /** - * the direction of the group - */ - direction?: 'horizontal' | 'vertical'; - /** - * the defaultvalue of the group,if you use multipe ,the defaultValue must be an array - */ - defaultValue?: string | undefined; - /** - * the onchange of the group - */ - onChange: (value: string) => void; - /** - * the options of the radioGroup - */ - options: RadioProps[]; - /** - * value of the group - */ - value?: string; -} - -export const RadioGroup = React.forwardRef( - ( - { - direction = 'vertical', - defaultValue = 'nodejs', - onChange, - options = [ - { children: 'nodejs', value: 'nodejs', key: 1 }, - { children: 'vuejs', value: 'vuejs', key: 2 }, - { children: 'react', value: 'react', key: 3 }, - ], - value, - ...rest - }, - ref, - ) => { - const [selectedValue, setSelectedValue] = useState(defaultValue); - const handleRadioChange = (value: string) => { - setSelectedValue(value); - }; - - const radioGroupClass = classNames(styles[direction], styles['base']); - - useEffect(() => { - onChange(selectedValue); - }, [selectedValue, onChange]); - - useEffect(() => { - value && setSelectedValue(value); - }, [value]); - - return ( -
- {options.map((item, index) => { - return ( - - {item.children} - - ); - })} -
- ); - }, -); - -RadioGroup.displayName = 'RadioGroup'; diff --git a/packages/ui/lib/RadioGroup/index.ts b/packages/ui/lib/RadioGroup/index.ts deleted file mode 100644 index ad083eb..0000000 --- a/packages/ui/lib/RadioGroup/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './RadioGroup'; diff --git a/packages/ui/lib/Select/Select.module.scss b/packages/ui/lib/Select/Select.module.scss deleted file mode 100644 index 69c5a0e..0000000 --- a/packages/ui/lib/Select/Select.module.scss +++ /dev/null @@ -1,65 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-300; -.options { - position: absolute; - width: 280px; - box-sizing: border-box; - z-index: 1; - margin-top: 3px; - flex-direction: column; - gap: 4px; - padding: 7px 8px; - font-size: 14px; - max-height: 250px; - overflow-y: scroll; - box-shadow: $shadow; - border-radius: 8px; - transform-origin: top; - opacity: 0; - transform: scaleY(0); - background-color: var(--white-color); - transition: all $animation-duration $cubic-bezier; - display: flex; - .nothing-img-container { - margin: 15px; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - img { - width: 160px; - } - } - &.show { - opacity: 1; - transform: scaleY(1); - } - .option-item { - flex-shrink: 0; - height: 35px; - display: flex; - align-items: center; - transition: all $animation-duration $cubic-bezier; - &:hover { - background-color: rgba(var(--shadow-color-rgb), 0.1); - padding: 0 0 0 4px; - border-radius: 5px; - cursor: pointer; - color: var(--primary-color); - } - .option-item-span { - padding: 0 7px; - } - } -} - -@keyframes scaleFromBottom { - 0% { - transform: scaleY(0); - transform-origin: bottom; - } - 100% { - transform: scaleY(1); - transform-origin: bottom; - } -} diff --git a/packages/ui/lib/Select/Select.stories.tsx b/packages/ui/lib/Select/Select.stories.tsx deleted file mode 100644 index 89aab47..0000000 --- a/packages/ui/lib/Select/Select.stories.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; - -import { OptionProps, Select, type SelectProps } from './Select'; - -const test = (option: OptionProps) => { - console.log('selectOption', option); -}; - -const meta = { - title: 'Components/Select', - component: Select, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: SelectProps = { - optionsList: [ - { value: 'nextjs', label: 'Nextjs', key: 1 }, - { value: 'nuxtjs', label: 'Nuxtjs', key: 2 }, - { value: 'nodejs', label: 'Nodejs', key: 3 }, - { value: 'vuejs', label: 'Vuejs', key: 5 }, - { value: 'react', label: 'React', key: 4 }, - ], - onchange: test, - disabled: false, - isBorder: true, - defaultSelectKey: 1, - placeHolder: '', -}; - -export const DefaultSelect: Story = { - args: { - ...defaultProps, - }, -}; - -export const DisabledSelect: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Select/Select.tsx b/packages/ui/lib/Select/Select.tsx deleted file mode 100644 index 94af913..0000000 --- a/packages/ui/lib/Select/Select.tsx +++ /dev/null @@ -1,171 +0,0 @@ -import React, { useState, type MouseEventHandler, useEffect } from 'react'; -import styles from './Select.module.scss'; -import { Input } from '..'; - -export interface OptionProps { - value: string; - label: string; - key: number; -} - -export interface SelectProps extends React.HtmlHTMLAttributes { - /** - * onChange of the select - */ - onchange?: (value: OptionProps) => void; - /** - * the optionList of the select - */ - optionsList?: Array; - /** - * the title of the select - */ - title?: string; - /** - * diabled of the select - */ - disabled?: boolean; - /** - * defaultselectKey ,the defaultselectkey of the options - */ - defaultSelectKey?: number; - /** - * selectKey, the selectKey of the options - */ - selectKey?: number; - /** - * isBorder, the border of the select - */ - isBorder?: boolean; - /** - * width, the width of the select - */ - width?: number; - /** - * placeHolder of the select - */ - placeHolder?: string; -} - -export const Select = React.forwardRef( - ( - { - optionsList = [ - { value: 'nextjs', label: 'nextjs', key: 3 }, - { value: 'nuxtjs', label: 'nuxtjs', key: 5 }, - ], - onchange, - title = 'which framwork?', - disabled = false, - defaultSelectKey, - selectKey, - isBorder = true, - width = 280, - placeHolder = '', - ...rest - }, - ref, - ) => { - const [visible, setVisble] = useState(false); - const [selectItem, setSelectItem] = useState( - optionsList.find((item) => item.key === defaultSelectKey), - ); - const [options, setOptions] = useState(optionsList); - const [inputValue, setInputValue] = useState(''); - const [selectPlaceHolder, setSelectPlaceHolder] = useState(''); - - useEffect(() => { - setSelectPlaceHolder(placeHolder); - }, [placeHolder]); - - const showOptions: MouseEventHandler = () => { - if (!disabled) setVisble(!visible); - }; - - useEffect(() => { - setSelectItem(optionsList.find((item) => item.key === selectKey)); - }, [selectKey, optionsList]); - - function handleClick(value: OptionProps): void { - setSelectItem(value); - setSelectPlaceHolder(value.label); - setTimeout(() => { - setInputValue(''); - }, 300); - } - - useEffect(() => { - onchange && selectItem && onchange(selectItem); - console.log(selectItem?.label); - - selectItem?.label && setSelectPlaceHolder(selectItem.label); - }, [selectItem, onchange]); - - const handleOptions = (value: string) => { - if (value === '') { - setSelectItem(undefined); - } - setInputValue(value); - }; - - function fuzzySearch(optionsList: OptionProps[], searchTerm: string): OptionProps[] { - const regex = new RegExp(searchTerm, 'i'); - return optionsList.filter((option) => regex.test(option.label)); - } - - const closeOptions = () => { - setTimeout(() => { - setVisble(false); - }, 100); - }; - - useEffect(() => { - console.log(inputValue); - const results = fuzzySearch(optionsList, inputValue); - setOptions(results); - }, [inputValue, optionsList]); - - return ( - <> -
- -
- {!options.length ? ( -
- - 什么都没有检索到哦😭 -
- ) : ( - options.map((obj) => { - return ( -
handleClick(obj)} - > - {obj.label} -
- ); - }) - )} -
-
- - ); - }, -); - -Select.displayName = 'Select'; diff --git a/packages/ui/lib/Select/index.ts b/packages/ui/lib/Select/index.ts deleted file mode 100644 index 7868ecb..0000000 --- a/packages/ui/lib/Select/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Select'; diff --git a/packages/ui/lib/Sheet/Sheet.mdx b/packages/ui/lib/Sheet/Sheet.mdx deleted file mode 100644 index b2b6e7d..0000000 --- a/packages/ui/lib/Sheet/Sheet.mdx +++ /dev/null @@ -1,26 +0,0 @@ -import { Meta } from '@storybook/blocks'; -import { useState } from 'react'; - -import * as SheetStories from './Sheet.stories'; -import { Button } from '../Button'; -import { Sheet, SheetWrapper } from '.'; - - - -# Sheet - -export const ShowSheet = () => { - const [visible, setVisible] = useState(false); - return ( - <> - - setVisible(false)} - /> - - -); -}; - - diff --git a/packages/ui/lib/Sheet/Sheet.module.scss b/packages/ui/lib/Sheet/Sheet.module.scss deleted file mode 100644 index 66e5069..0000000 --- a/packages/ui/lib/Sheet/Sheet.module.scss +++ /dev/null @@ -1,147 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-400; -$padding-left-right-distance: 20px; - -@mixin animation($name) { - animation-name: $name; - animation-duration: $animation-duration; - animation-timing-function: $cubic-bezier; - animation-fill-mode: forwards; -} - -.base { - height: 100vh; - width: 100vw; - position: fixed; - left: 0; - top: 0; - z-index: 2; - box-sizing: border-box; - background-color: $background-shadow-color; - &.showAnimation { - @include animation(showShadow); - } - &.hideAnimation { - @include animation(hideShadow); - } - .sheetContent { - top: 0; - height: 100vh; - background-color: var(--white-color); - position: absolute; - z-index: 3; - box-sizing: border-box; - opacity: 1; - right: 0; - padding: $padding-left-right-distance; - opacity: 1; - &.showAnimation { - @include animation(showSlideSheet); - } - &.hideAnimation { - @include animation(hideSlideSheet); - } - .sheetMainContent { - padding: 10px 0; - overflow-y: scroll; - display: flex; - position: relative; - height: calc(100vh - 32px - 60px); - top: 30px; - } - .sheetFooter { - height: 50px; - position: absolute; - bottom: 20px; - width: -webkit-fill-available; - padding-right: $padding-left-right-distance; - text-align: end; - background-color: var(--white-color); - } - .sheet-header { - height: 32px; - background-color: var(--white-color); - position: absolute; - display: flex; - width: -webkit-fill-available; - padding-right: 20px; - flex-direction: column; - .sheet-header-content { - display: flex; - width: 100%; - align-items: center; - justify-content: space-between; - span { - font-size: 16px; - font-weight: 700; - white-space: nowrap; - } - .svg-container { - height: 30px; - width: 30px; - display: flex; - align-items: center; - justify-content: center; - svg { - transition: all $animation-duration $cubic-bezier; - } - &:hover { - svg { - fill: var(--black-color); - } - } - } - } - } - } -} - -.wrapper { - transition: all $animation-duration $cubic-bezier; - border-radius: 15px; - & > div { - transition: all $animation-duration $cubic-bezier; - } - &.show { - padding: 12px; - & > div { - border-radius: 15px; - } - } -} - -@keyframes showShadow { - from { - background-color: rgb(var(--black-color-rgb), 0); - } - to { - background-color: $background-shadow-color; - } -} - -@keyframes hideShadow { - from { - background-color: $background-shadow-color; - } - to { - background-color: rgb(var(--black-color-rgb), 0); - } -} - -@keyframes showSlideSheet { - from { - right: -30%; - } - to { - right: 0; - } -} - -@keyframes hideSlideSheet { - from { - right: 0; - } - to { - right: -30%; - } -} diff --git a/packages/ui/lib/Sheet/Sheet.stories.tsx b/packages/ui/lib/Sheet/Sheet.stories.tsx deleted file mode 100644 index c516e5f..0000000 --- a/packages/ui/lib/Sheet/Sheet.stories.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React, { useState } from 'react'; -import { Sheet, type SheetProps } from './Sheet'; - -const meta = { - title: 'Components/Sheet', - component: Sheet, - parameters: { - layout: 'centered', - }, - // tags: ['autodocs'], - argTypes: {}, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: SheetProps = { - visible: false, -}; - -export const DefaultSheet: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleSheet: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Sheet/Sheet.tsx b/packages/ui/lib/Sheet/Sheet.tsx deleted file mode 100644 index dea8663..0000000 --- a/packages/ui/lib/Sheet/Sheet.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import classnames from 'classnames'; -import React, { useEffect, useState } from 'react'; -import styles from './Sheet.module.scss'; -// import SheetTrigger from './SheetTrigger'; -import { SheetHeader } from './SheetHeader'; -import { SheetFooter } from './SheetFooter'; -import { useWrapperVisibleStore } from './useWrapperVisibleStore'; - -export interface SheetProps extends React.HtmlHTMLAttributes { - /** - * visible of the sheet - */ - visible: boolean; - /** - * onCancel of the sheet - */ - onCancel?: () => void; - /** - * header of the sheet - */ - sheetTitle?: string; - /** - * footer of the sheet - */ - sheetFooter?: React.ReactNode; - /** - * mainContent of the sheet - */ - mainContent?: React.ReactNode; - /** - * width, the width of the sheet - */ - width?: number; -} - -export const Sheet = React.forwardRef( - ({ visible, onCancel, sheetTitle, sheetFooter, mainContent, width = 500, ...rest }, ref) => { - const [innerVisible, setInnerVisible] = useState(false); - const [isShowAnimation, setIsShowAnimation] = useState(false); - const [isHideAnimation, setIsHideAnimation] = useState(false); - const [open, close] = useWrapperVisibleStore((state) => [state.open, state.close]); - - const stopPropagation = (e: React.MouseEvent) => { - e.stopPropagation(); - }; - - useEffect(() => { - if (visible) { - setInnerVisible(true); - setIsShowAnimation(true); - open(); - document.body.style.overflow = 'hidden'; - setTimeout(() => { - setIsShowAnimation(false); - }, 400); - } - if (!visible) { - setIsHideAnimation(true); - close(); - setTimeout(() => { - setIsHideAnimation(false); - setInnerVisible(false); - document.body.style.overflow = ''; - }, 400); - } - }, [visible, open, close]); - - const sheetClass = classnames( - `${styles['base']} - ${styles[isShowAnimation ? 'showAnimation' : '']} - ${styles[isHideAnimation ? 'hideAnimation' : '']}`, - ); - - return ( - <> - {innerVisible && ( -
-
- -
{mainContent}
- {sheetFooter} -
-
- )} - - ); - }, -); - -Sheet.displayName = 'Sheet'; diff --git a/packages/ui/lib/Sheet/SheetFooter.tsx b/packages/ui/lib/Sheet/SheetFooter.tsx deleted file mode 100644 index 572d5f4..0000000 --- a/packages/ui/lib/Sheet/SheetFooter.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import styles from './Sheet.module.scss'; -import { Button } from '..'; - -export interface SheetFooterProps { - /** - * content of the sheetheader - */ - children?: React.ReactNode; -} - -export const SheetFooter = React.forwardRef( - ({ children, ...rest }, ref) => { - return ( - <> -
-
- {children || } -
- - ); - }, -); - -SheetFooter.displayName = 'SheetFooter'; diff --git a/packages/ui/lib/Sheet/SheetHeader.tsx b/packages/ui/lib/Sheet/SheetHeader.tsx deleted file mode 100644 index da1523e..0000000 --- a/packages/ui/lib/Sheet/SheetHeader.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import styles from './Sheet.module.scss'; -import { Button } from '..'; - -export interface SheetHeaderProps { - /** - * content of the sheetheader - */ - content?: string; - /** - * onCancel of the sheet - */ - onCancel?: () => void; -} - -export const SheetHeader = React.forwardRef( - ({ content, onCancel, ...rest }, ref) => { - const [headerContent, setHeaderContent] = useState('Basic Sheet'); - - useEffect(() => { - content && setHeaderContent(content); - }, [content]); - return ( - <> -
-
- {headerContent} - -
-
- - ); - }, -); - -SheetHeader.displayName = 'SheetHeader'; diff --git a/packages/ui/lib/Sheet/SheetWrapper.tsx b/packages/ui/lib/Sheet/SheetWrapper.tsx deleted file mode 100644 index 138cf12..0000000 --- a/packages/ui/lib/Sheet/SheetWrapper.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import { useWrapperVisibleStore } from './useWrapperVisibleStore'; -import styles from './Sheet.module.scss'; - -export interface SheetWrapperProps { - /** - * children of the sheetTrigger - */ - children: React.ReactNode; - /** - * backgroundColor, the color of the background - */ - backgroundColor?: string; -} - -export const SheetWrapper = React.forwardRef( - ({ children, backgroundColor = 'black' }, ref) => { - const [wrapperVisible] = useWrapperVisibleStore((state) => [state.wrapperVisible]); - - return ( - <> -
-
- {children} -
-
- - ); - }, -); - -SheetWrapper.displayName = 'SheetWrapper'; diff --git a/packages/ui/lib/Sheet/index.ts b/packages/ui/lib/Sheet/index.ts deleted file mode 100644 index c0c1863..0000000 --- a/packages/ui/lib/Sheet/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Sheet'; -export * from './SheetWrapper'; diff --git a/packages/ui/lib/Sheet/useWrapperVisibleStore.ts b/packages/ui/lib/Sheet/useWrapperVisibleStore.ts deleted file mode 100644 index 7c22b1d..0000000 --- a/packages/ui/lib/Sheet/useWrapperVisibleStore.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { create } from 'zustand'; - -interface State { - wrapperVisible: boolean; -} - -interface Action { - open: () => void; - close: () => void; -} - -export const useWrapperVisibleStore = create((set) => ({ - wrapperVisible: false, - open: () => set(() => ({ wrapperVisible: true })), - close: () => set({ wrapperVisible: false }), -})); diff --git a/packages/ui/lib/Switch/Switch.module.scss b/packages/ui/lib/Switch/Switch.module.scss deleted file mode 100644 index 102192d..0000000 --- a/packages/ui/lib/Switch/Switch.module.scss +++ /dev/null @@ -1,146 +0,0 @@ -@use '../variables' as *; -//这是已经封装好的scss代码,只需要修改上面的数值,便可满足样式需求 -//Here is the encapsulated scss code, only need to modify the above values, can meet the style requirements -$switch-size-small: 18px; -$switch-size-medium: 24px; -$switch-size-large: 30px; -$animation-duration: $duration-300; -//这个是滑动的圆球和边框的距离的值 -// This is the value of the distance between the sliding sphere and the border. -$ball-margin: 5px; -//这个是当滑动的圆球滚动到中间时拉长的宽度的倍数 -// This is a multiple of the elongated width of the sliding orb when it rolls to the center. -$ball-center-width: 1.1; - -$switch-sizes: ( - small: $switch-size-small, - medium: $switch-size-medium, - large: $switch-size-large, -); - -@mixin switch-size($size, $size-name) { - height: $size; - width: 2 * $size; - border-radius: calc(#{$size} / 2); - &::after { - content: ''; - position: absolute; - top: 50%; - left: -$size; - border-radius: 50%; - height: $size; - width: $size; - transform: translateY(-50%); - background-color: var(--primary-color); - z-index: 0; - transition: all $animation-duration $cubic-bezier; - } - &::before { - height: calc($size - $ball-margin); - width: calc($size - $ball-margin); - border-radius: calc(#{$size} / 2); - animation-name: slide-checked-#{$size-name}; - } - &.isChecked::before { - animation-name: slide-not-checked-#{$size-name}; - } - &.isChecked::after { - content: ''; - height: $size * 2; - width: $size * 2; - left: 0px; - transition: all $animation-duration $cubic-bezier; - } -} - -@mixin animation($isChecked) { - animation-duration: $animation-duration; - animation-fill-mode: forwards; - animation-timing-function: $cubic-bezier; -} - -@mixin generate-animations($sizes, $ball-margin, $ball-center-width) { - @each $size-name, $size-value in $sizes { - @keyframes slide-checked-#{$size-name} { - 0% { - left: $size-value + calc($ball-margin / 2); - } - 50% { - width: calc((#{$size-value} - #{$ball-margin}) * $ball-center-width); - } - 100% { - left: calc($ball-margin / 2); - } - } - - @keyframes slide-not-checked-#{$size-name} { - 0% { - left: calc($ball-margin / 2); - } - 50% { - width: calc((#{$size-value} - #{$ball-margin}) * #{$ball-center-width}); - } - 100% { - left: $size-value + calc($ball-margin / 2); - } - } - } -} - -@include generate-animations($switch-sizes, $ball-margin, $ball-center-width); - -@mixin background-size($size) { - border-radius: calc(#{$size} / 2); -} - -.background { - position: relative; - overflow: hidden; - &.medium { - $switch-size-anim: $switch-size-medium; - @include background-size($switch-size-medium); - } - &.large { - @include background-size($switch-size-large); - } - &.small { - @include background-size($switch-size-small); - } - .base { - position: relative; - all: unset; - display: block; - background-color: var(--shadow-color); - z-index: -1; - box-shadow: $shadow-inner; - cursor: pointer; - transition: all $animation-duration $cubic-bezier; - &.medium { - $switch-size-anim: $switch-size-medium; - @include switch-size($switch-size-medium, 'medium'); - } - &.large { - @include switch-size($switch-size-large, 'large'); - } - &.small { - @include switch-size($switch-size-small, 'small'); - } - - &::before { - content: ''; - position: absolute; - top: 50%; - background-color: var(--white-color); - transform: translate(0, -50%); - @include animation('not-checked'); - z-index: 1; - } - &.isChecked::before { - content: ''; - @include animation('checked'); - } - &.disabled { - @include disabled; - } - } -} diff --git a/packages/ui/lib/Switch/Switch.stories.tsx b/packages/ui/lib/Switch/Switch.stories.tsx deleted file mode 100644 index 77b2a8e..0000000 --- a/packages/ui/lib/Switch/Switch.stories.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Switch, type SwitchProps } from './Switch'; - -const test = (value: boolean) => { - console.log(value); -}; - -const meta = { - title: 'Components/Switch', - component: Switch, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: SwitchProps = { - size: 'medium', - checked: false, - defaultChecked: false, - onchange: test, - disabled: false, -}; - -export const DefaultSwitch: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleSwitch: Story = { - args: { - ...defaultProps, - }, -}; diff --git a/packages/ui/lib/Switch/Switch.tsx b/packages/ui/lib/Switch/Switch.tsx deleted file mode 100644 index 74cc392..0000000 --- a/packages/ui/lib/Switch/Switch.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import classNames from 'classnames'; -import React, { useEffect, useState } from 'react'; -import styles from './Switch.module.scss'; - -export interface SwitchProps extends React.ButtonHTMLAttributes { - /** - * size, the size of the Switch - */ - size?: 'small' | 'medium' | 'large'; - /** - * checked ,the checked of the switch - */ - checked?: boolean; - /** - * defaultChecked ,the defaultChecked of the switch - */ - defaultChecked?: boolean; - /** - * onChange, the onChange of the switch - */ - onchange?: (value: boolean) => void; - /** - * disabled, the disabled of the switch - */ - disabled?: boolean; -} - -export const Switch = React.forwardRef( - ( - { - size = 'medium', - checked = false, - defaultChecked = false, - onchange, - disabled = false, - ...rest - }, - ref, - ) => { - const [isChecked, setIsChecked] = useState(defaultChecked); - const switchClass = classNames( - `${styles['base']} ${isChecked ? styles['isChecked'] : ''} ${styles[size]} - ${disabled ? styles['disabled'] : ''}`, - ); - - useEffect(() => { - setIsChecked(checked); - }, [checked]); - - useEffect(() => { - onchange && isChecked !== undefined && onchange(isChecked); - }, [isChecked, onchange]); - return ( - <> -
- -
- - ); - }, -); - -Switch.displayName = 'Switch'; diff --git a/packages/ui/lib/Switch/index.ts b/packages/ui/lib/Switch/index.ts deleted file mode 100644 index 1b19c1d..0000000 --- a/packages/ui/lib/Switch/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Switch'; diff --git a/packages/ui/lib/Toast/Toast.module.scss b/packages/ui/lib/Toast/Toast.module.scss deleted file mode 100644 index f1a93b5..0000000 --- a/packages/ui/lib/Toast/Toast.module.scss +++ /dev/null @@ -1,145 +0,0 @@ -@use '../variables' as *; -$animation-duration: $duration-400; -$border-radius: $radius-5; -@mixin animation($name) { - animation-name: $name; - animation-duration: $animation-duration; - animation-timing-function: $cubic-bezier; -} -@mixin type($type-name) { - color: var(--#{$type-name}-color); - .closeButton { - .icon { - fill: var(--#{$type-name}-color); - } - } -} -.base { - border-radius: $border-radius; - gap: 10px; - box-sizing: border-box; - opacity: 0; - transform: translateY(100px); - overflow: hidden; - transition: all $animation-duration $cubic-bezier; - padding: 12px 10px 16px 20px; - display: flex !important; - @include shadow; - background-color: var(--white-color); - &.visible { - opacity: 1; - scale: 1; - transform: translateY(0); - } - .sider { - position: absolute; - width: 5px; - height: -webkit-fill-available; - left: 0; - top: 0; - &.infoSider { - background-color: var(--primary-color); - } - &.errorSider { - background-color: var(--danger-color); - } - &.warningSider { - background-color: var(--warning-color); - } - &.successSider { - background-color: var(--success-color); - } - } - display: flex; - flex-direction: column; - gap: 5px; - .header { - font-weight: bold; - font-size: 20px; - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - .closeButton { - cursor: pointer; - height: 30px; - width: 30px; - display: flex; - justify-content: center; - align-items: center; - transition: all $animation-duration $cubic-bezier; - &:hover { - scale: 1.05; - } - &:active { - scale: 0.95; - } - } - } - .content { - display: flex; - margin-top: 10px; - } - - .footer { - margin-top: 10px; - } - &.info { - @include type(primary); - } - &.success { - @include type(success); - } - &.warning { - @include type(warning); - } - &.error { - @include type(danger); - } - &.small { - width: 300px; - .inner { - padding: 10px; - } - } - &.medium { - width: 400px; - .inner { - padding: 15px; - } - } - &.large { - width: 500px; - .inner { - padding: 20px; - } - } -} - -.container { - display: flex; - flex-direction: column; - gap: 10px; - .toastShow { - position: fixed; - right: 10px; - bottom: 10px; - @include animation(slideIn); - transition: all $animation-duration $cubic-bezier; - } - .toastHide { - bottom: -100px; - opacity: 0; - } -} - -@keyframes slideIn { - from { - opacity: 0.2; - transform: translateY(100%); - } - to { - opacity: 1; - transform: translateY(0); - } -} diff --git a/packages/ui/lib/Toast/Toast.stories.tsx b/packages/ui/lib/Toast/Toast.stories.tsx deleted file mode 100644 index ec800c4..0000000 --- a/packages/ui/lib/Toast/Toast.stories.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; -import { Toast, type ToastProps } from './Toast'; - -const meta = { - title: 'Components/Toast', - component: Toast, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], - argTypes: { - size: { - options: ['small', 'medium', 'large'], - control: { type: 'select' }, - }, - type: { - options: ['info', 'success', 'warning', 'error'], - control: { type: 'select' }, - }, - shadow: { - options: ['regular', 'small', 'medium', 'large', 'extraLarge', 'inner', 'none'], - control: { type: 'select' }, - }, - }, -} satisfies Meta; - -export default meta; - -type Story = StoryObj; - -const defaultProps: ToastProps = { - size: 'medium', - type: 'info', -}; - -export const DefaultToast: Story = { - args: { - ...defaultProps, - }, -}; - -export const ExampleToast: Story = { - args: { - ...defaultProps, - type: 'error', - content: 考试已结束,请不要重复提交, - }, -}; diff --git a/packages/ui/lib/Toast/Toast.tsx b/packages/ui/lib/Toast/Toast.tsx deleted file mode 100644 index b854ac2..0000000 --- a/packages/ui/lib/Toast/Toast.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import classNames from 'classnames'; -import React, { useState, useEffect } from 'react'; -import styles from './Toast.module.scss'; - -export interface ToastProps { - /** - * The type of the Toast. - */ - type?: 'info' | 'success' | 'warning' | 'error'; - /** - * The size of the Toast. - */ - size?: 'small' | 'medium' | 'large'; - /** - * The content of the Toast. - */ - content?: React.ReactNode; - /** - * The footer of the Toast. - */ - footer?: React.ReactNode; - /** - * onChange of the toast - */ - close?: () => void; - /** - * The shadow of the button. - */ - shadow?: 'regular' | 'small' | 'medium' | 'large' | 'extraLarge' | 'inner' | 'none'; -} - -export const Toast = React.forwardRef( - ( - { - type = 'info', - size = 'medium', - content = ( - - this is the message {type} - - ), - footer = null, - close, - shadow = 'regular', - ...rest - }, - ref, - ) => { - const [visible, setVisble] = useState(true); - - const toastClass = classNames( - styles['base'], - styles[type], - styles[size], - styles[visible ? 'visible' : ''], - styles[`shadow-${shadow}`], - ); - - useEffect(() => { - if (!visible && close) close(); - }, [visible, close]); - - return ( - <> - { -
-
-
-
-
- {/* Capitalize the TYPE one-key to present it as a headline */} -
{type.toUpperCase()}
-
setVisble(false)} - > - - - -
-
-
{content}
- {footer &&
{footer}
} -
-
-
- } - - ); - }, -); - -Toast.displayName = 'Toast'; diff --git a/packages/ui/lib/Toast/index.ts b/packages/ui/lib/Toast/index.ts deleted file mode 100644 index b7f5377..0000000 --- a/packages/ui/lib/Toast/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Toast'; -export * from './showToast'; diff --git a/packages/ui/lib/Toast/showToast.tsx b/packages/ui/lib/Toast/showToast.tsx deleted file mode 100644 index d1f3be7..0000000 --- a/packages/ui/lib/Toast/showToast.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { createRoot } from 'react-dom/client'; -import { Toast, type ToastProps } from '.'; - -import classNames from 'classnames'; -import styles from './Toast.module.scss'; - -let toasts: HTMLDivElement[] = []; -let toastContainer: HTMLDivElement | null = null; - -export const showToast = (props?: ToastProps) => { - if (!toastContainer) { - toastContainer = document.createElement('div'); - document.body.appendChild(toastContainer); - } - - const div: HTMLDivElement = document.createElement('div'); - toastContainer.appendChild(div); - const containerClass = classNames(styles['container']); - toastContainer.className = containerClass; - - const ToastClass: string = classNames(styles['toastShow']); - div.className = ToastClass; - - const root = createRoot(div); - - root.render( - closeToast(div)} - >, - ); - - toasts.push(div); - - addListener(div); - hide(toasts); - moreThreeClose(); - moreTimeClose(div); -}; - -const moreTimeClose = (div: HTMLDivElement) => { - setTimeout(() => { - const ToasthideClass: string = classNames(styles['toastHide']); - div.classList.add(ToasthideClass); - setTimeout(() => { - toastContainer?.removeChild(div); - toasts = toasts.filter((toast) => toast !== div); - }, 400); - }, 5000); -}; - -const moreThreeClose = () => { - if (toasts.length > 3) { - toasts.shift(); - setTimeout(() => { - while (toastContainer && toastContainer?.childNodes.length > 3 && toastContainer.firstChild) { - toastContainer.removeChild(toastContainer.firstChild); - } - }, 300); - } -}; - -const closeToast = (div: HTMLDivElement) => { - setTimeout(() => { - div.remove(); - }, 300); - toasts = toasts.filter((toast) => toast !== div); - addListener(div); - expand(toasts); -}; - -const expand = (expandToasts: HTMLDivElement[]) => { - expandToasts.forEach((toast: HTMLDivElement, index: number) => { - const totalHeight = expandToasts - .slice(0, expandToasts.length - index - 1) - .reduce((height: number, toast: HTMLDivElement) => height + toast.offsetHeight, 0); - toast.style.transform = `translateY(-${totalHeight}px)`; - }); -}; - -const hide = (hideToasts: HTMLDivElement[]) => { - hideToasts.forEach((toast: HTMLDivElement, index: number) => { - toast.style.transform = `translateY(-${(hideToasts.length - index - 1) * 15}px) scale(${ - 0.95 ** (hideToasts.length - index - 1) - })`; - if (hideToasts.length - index === 4) { - toast.style.opacity = '0'; - } - }); -}; - -const addListener = (div: HTMLDivElement) => { - const handleMouseEnter = () => { - expand(toasts); - }; - - const handleMouseLeave = () => { - hide(toasts); - }; - - div.addEventListener('mouseenter', handleMouseEnter); - div.addEventListener('mouseleave', handleMouseLeave); -}; diff --git a/packages/ui/lib/_variables.scss b/packages/ui/lib/_variables.scss deleted file mode 100644 index 1882034..0000000 --- a/packages/ui/lib/_variables.scss +++ /dev/null @@ -1,82 +0,0 @@ -// box-shadow variables -$shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); -$shadow: - 0 1px 3px 0 rgba(0, 0, 0, 0.1), - 0 1px 2px -1px rgba(0, 0, 0, 0.1); -$shadow-md: - 0 4px 6px -1px rgb(0 0 0 / 0.1), - 0 2px 4px -2px rgb(0 0 0 / 0.1); -$shadow-lg: - 0 10px 15px -3px rgb(0 0 0 / 0.1), - 0 4px 6px -4px rgb(0 0 0 / 0.1); -$shadow-xl: - 0 20px 25px -5px rgb(0 0 0 / 0.1), - 0 8px 10px -6px rgb(0 0 0 / 0.1); -$shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); -$shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - -@mixin shadow { - &.shadow-regular { - box-shadow: $shadow; - } - &.shadow-small { - box-shadow: $shadow-sm; - } - &.shadow-medium { - box-shadow: $shadow-md; - } - &.shadow-large { - box-shadow: $shadow-lg; - } - &.shadow-extraLarge { - box-shadow: $shadow-xl; - } - &.shadow-inner { - box-shadow: $shadow-inner; - } -} - -// border width variables -$border-0: 0px; -$border-1: 1px; -$border-2: 2px; - -//animation-duration varibles -$duration-100: 100ms; -$duration-200: 200ms; -$duration-300: 300ms; -$duration-400: 400ms; -$duration-800: 800ms; - -//border radius variables -$radius-10: 10px; -$radius-8: 8px; -$radius-5: 5px; -$radius-15: 15px; -$radius-half: 50%; - -//absolute center -@mixin absolute-center { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} - -//font-size variables -$font-size-8: 8px; -$font-size-10: 10px; -$font-size-12: 12px; -$font-size-14: 14px; -$font-size-16: 16px; - -//disabled -@mixin disabled { - cursor: not-allowed; - opacity: 0.4; -} - -//background color -$background-shadow-color: rgb(var(--black-color-rgb), 0.6); - -$cubic-bezier: cubic-bezier(0.215, 0.61, 0.355, 1); diff --git a/packages/ui/lib/global.scss b/packages/ui/lib/global.scss deleted file mode 100644 index 64d6d20..0000000 --- a/packages/ui/lib/global.scss +++ /dev/null @@ -1,49 +0,0 @@ -@import url('./reset.scss'); - -* { - // color variables - --primary-color: #0078d4; - --primary-color-rgb: 0, 120, 212; - --primary-color-background-rgb: 219, 236, 249; - --secondary-color: #71afe5; - --danger-color: #ff0000; - --danger-color-rgb: 255, 0, 0; - --danger-color-background-rgb: 255, 245, 245; - --warning-color: #ffb900; - --warning-color-rgb: 255, 185, 0; - --warning-color-background-rgb: 255, 252, 245; - --success-color: #00c853; - --success-color-rgb: 0, 200, 83; - --success-color-background-rgb: 245, 253, 248; - --white-color: #ffffff; - --black-color: #121212; - --black-color-rgb: 18, 18, 18; - --title-shadow: #f3f3f3; - --shadow-color: rgb(128, 128, 128); - --shadow-color-rgb: 128, 128, 128; - --dark-color: rgb(30, 30, 30); - --small-font-size: 12px; - --medium-font-size: 16px; - --large-font-size: 20px; - font-family: sans-serif; - --background-blue: #ecf2ff; - --border-white: #f1f1f1; - --pale-white: #fcfcfc; -} - -::-webkit-scrollbar { - all: unset; - width: 4px; -} -::-webkit-scrollbar-thumb { - background: var(--shadow-color); - border-radius: 2px; -} - -::-webkit-scrollbar-track { - margin: 5px; -} - -.stopMove { - overflow: hidden; -} diff --git a/packages/ui/lib/index.ts b/packages/ui/lib/index.ts deleted file mode 100644 index 82f5fdb..0000000 --- a/packages/ui/lib/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import './global.scss'; - -export * from './Button'; -export * from './Card'; -export * from './Input'; -export * from './Accordion'; -export * from './Toast'; -export * from './Radio'; -export * from './Dialog'; -export * from './RadioGroup'; -export * from './Select'; -export * from './Badge'; -export * from './Checkbox'; -export * from './Navbar'; -export * from './Pagination'; -export * from './Calendar'; -export * from './Sheet'; -export * from './Carousel'; -export * from './Switch'; -export * from './DatePicker'; -export * from './CodeEditor'; diff --git a/packages/ui/lib/reset.scss b/packages/ui/lib/reset.scss deleted file mode 100644 index e1348b6..0000000 --- a/packages/ui/lib/reset.scss +++ /dev/null @@ -1,351 +0,0 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { - /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { - /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type='button']::-moz-focus-inner, -[type='reset']::-moz-focus-inner, -[type='submit']::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type='button']:-moz-focusring, -[type='reset']:-moz-focusring, -[type='submit']:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type='checkbox'], -[type='radio'] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type='number']::-webkit-inner-spin-button, -[type='number']::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type='search'] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} diff --git a/packages/ui/lib/test/setup.ts b/packages/ui/lib/test/setup.ts deleted file mode 100644 index 0d74b73..0000000 --- a/packages/ui/lib/test/setup.ts +++ /dev/null @@ -1,7 +0,0 @@ -import '@testing-library/jest-dom/vitest'; -import { cleanup } from '@testing-library/react'; -import { afterEach } from 'vitest'; - -afterEach(() => { - cleanup(); -}); diff --git a/packages/ui/package.json b/packages/ui/package.json deleted file mode 100644 index 9d2845d..0000000 --- a/packages/ui/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "@sast/oj-ui", - "private": true, - "version": "0.0.0", - "description": "A React UI library built for SASTOJ", - "author": "sast", - "license": "", - "type": "module", - "files": [ - "dist" - ], - "sideEffects": [ - "**/*.css" - ], - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "require": { - "types": "./dist/index.d.ts", - "default": "./dist/index.cjs" - } - }, - "./css": "./dist/style.css" - }, - "scripts": { - "dev": "storybook dev -p 6006", - "dev:lib": "tsc && vite build --watch", - "test": "vitest run", - "test:watch": "vitest", - "test:ui": "vitest --ui", - "test:coverage": "vitest run --coverage", - "build": "storybook build", - "build:lib": "tsc && vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "format": "prettier . --write --ignore-unknown" - }, - "devDependencies": { - "@storybook/addon-actions": "^7.6.5", - "@storybook/addon-essentials": "^7.6.5", - "@storybook/blocks": "^7.6.5", - "@storybook/builder-vite": "^7.6.5", - "@storybook/react": "^7.6.5", - "@storybook/react-vite": "^7.6.5", - "@testing-library/jest-dom": "^6.1.5", - "@testing-library/react": "^14.1.2", - "@testing-library/user-event": "^14.5.1", - "@types/node": "^20.10.4", - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@typescript-eslint/eslint-plugin": "^6.14.0", - "@typescript-eslint/parser": "^6.14.0", - "@vitejs/plugin-react-swc": "^3.5.0", - "@vitest/coverage-v8": "^1.0.4", - "@vitest/ui": "^1.0.4", - "autoprefixer": "^10.4.16", - "clsx": "^2.0.0", - "eslint": "^8.55.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jest-dom": "^5.1.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "eslint-plugin-storybook": "^0.6.15", - "jsdom": "^23.0.1", - "prettier": "^3.1.1", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "storybook": "^7.6.5", - "typescript": "^5.2.2", - "vite": "^5.0.8", - "vite-plugin-dts": "^3.6.4", - "vite-plugin-libcss": "^1.1.1", - "vitest": "^1.0.4" - }, - "peerDependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "dependencies": { - "@monaco-editor/react": "^4.6.0", - "@storybook/addon-docs": "^7.6.17", - "@types/react-transition-group": "^4.4.10", - "zustand": "^4.4.7" - } -} diff --git a/packages/ui/public/sast_test_image/404.png b/packages/ui/public/sast_test_image/404.png deleted file mode 100644 index 1b19c1c..0000000 Binary files a/packages/ui/public/sast_test_image/404.png and /dev/null differ diff --git a/packages/ui/public/sast_test_image/Logo.svg b/packages/ui/public/sast_test_image/Logo.svg deleted file mode 100644 index 143ef7e..0000000 --- a/packages/ui/public/sast_test_image/Logo.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/ui/public/sast_test_image/sast-link.png b/packages/ui/public/sast_test_image/sast-link.png deleted file mode 100644 index f4436be..0000000 Binary files a/packages/ui/public/sast_test_image/sast-link.png and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\216\210\350\257\2761.jpg" "b/packages/ui/public/sast_test_image/\346\216\210\350\257\2761.jpg" deleted file mode 100644 index 92b65bf..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\216\210\350\257\2761.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2501.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2501.jpg" deleted file mode 100644 index da0ce17..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2501.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2502.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2502.jpg" deleted file mode 100644 index 8127555..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2502.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2503.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2503.jpg" deleted file mode 100644 index 619b6a6..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2503.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2504.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2504.jpg" deleted file mode 100644 index 861fc6f..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2504.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2505.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2505.jpg" deleted file mode 100644 index 2e39f9d..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2505.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2506.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2506.jpg" deleted file mode 100644 index 2befa57..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2506.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2507.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2507.jpg" deleted file mode 100644 index b142853..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2507.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2508.jpg" "b/packages/ui/public/sast_test_image/\346\264\273\345\212\2508.jpg" deleted file mode 100644 index 2beb2c1..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\264\273\345\212\2508.jpg" and /dev/null differ diff --git "a/packages/ui/public/sast_test_image/\346\274\224\350\256\2621.jpg" "b/packages/ui/public/sast_test_image/\346\274\224\350\256\2621.jpg" deleted file mode 100644 index c145127..0000000 Binary files "a/packages/ui/public/sast_test_image/\346\274\224\350\256\2621.jpg" and /dev/null differ diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json deleted file mode 100644 index c0fce97..0000000 --- a/packages/ui/tsconfig.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "extends": ["../../tsconfig.json"], - "compilerOptions": { - // This is a component library, so "ESNext" is a good choice. Also it requires very little down-leveling during transpilation. - "target": "ESNext", - - // Include a list of type definitions for build-in JS APIs. - "lib": ["DOM", "DOM.Iterable", "ESNext"], - - // Specify the module system for the output files. It's not required for Vite but good to have. - "module": "ESNext", - - // The types defined in "vite/client" are included in global scope. - "types": ["vite/client"], - - // Do not emit compiled output files, vite will take care of the that. - "noEmit": true, - - // Vite will handle the resolution of the import paths. - "moduleResolution": "Bundler", - - // Use the React 17 JSX transform, importing React is no longer required. - "jsx": "react-jsx", - - // Skip the type checking for declaration files to improve performance. - "skipLibCheck": true, - - // Allow importing modules with ".json" extension. - "resolveJsonModule": true, - - // "declarationMap" need to be enabled to let Vite generates source map files. - "declaration": true, - "declarationMap": true, - - // Importing .js files is not allowed, enable if needed. - "allowJs": false, - - // Fix the mis-match of behaviors between ES import and CommonJS require. - "esModuleInterop": true, - - // Allow default import from modules with no default export, i.e. you can write `import React from 'react'` instead of `import * as React from 'react'`. - "allowSyntheticDefaultImports": true, - - // Enforce the file name casing to be consistent with development environment. - "forceConsistentCasingInFileNames": true, - - // Ensure the run-time code does not depend on the TypeScript-only features, such as constant enum. - "isolatedModules": true, - - // Allow importing TypeScript modules. - "allowImportingTsExtensions": true, - - // Enfore "type" modifier for type imports. - "verbatimModuleSyntax": true, - - // Ensure the public class field initialization is transpiled correctly to match the future JS standard. - "useDefineForClassFields": true, - - // Type-checking options - "strict": true, - "noFallthroughCasesInSwitch": true, - "noImplicitOverride": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noPropertyAccessFromIndexSignature": true, - "noUncheckedIndexedAccess": true, - "noUnusedLocals": false, - "noUnusedParameters": true - }, - "paths": { - "@/*": ["./lib/*"] - }, - "include": ["./lib/**/*.ts", "./lib/**/*.tsx", "lib/Toast/showToast.js"], - "exclude": ["./lib/**/*.stories.*"] -} diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts deleted file mode 100644 index 249e8a2..0000000 --- a/packages/ui/vite.config.ts +++ /dev/null @@ -1,44 +0,0 @@ -/// -import { join, resolve } from 'node:path'; -import react from '@vitejs/plugin-react-swc'; -import { defineConfig } from 'vite'; -import dts from 'vite-plugin-dts'; -import libCss from 'vite-plugin-libcss'; - -import { peerDependencies } from './package.json'; - -export default defineConfig({ - plugins: [ - react(), - dts({ rollupTypes: true }), // Output .d.ts files - libCss(), - ], - build: { - target: 'esnext', - minify: false, - lib: { - entry: resolve(__dirname, join('lib', 'index.ts')), - fileName: 'index', - formats: ['es', 'cjs'], - }, - rollupOptions: { - // Exclude peer dependencies from the bundle to reduce bundle size - external: ['react/jsx-runtime', ...Object.keys(peerDependencies)], - }, - }, - css: { - preprocessorOptions: { - scss: {}, - }, - // 可以查看 CSS 的源码 - devSourcemap: true, - }, - test: { - environment: 'jsdom', - setupFiles: './lib/test/setup.ts', - coverage: { - all: false, - enabled: true, - }, - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9dc248..6d8944f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 2.3.2 commitizen: specifier: ^4.3.0 - version: 4.3.0(@types/node@20.11.24)(typescript@5.3.3) + version: 4.3.0(@types/node@16.0.0)(typescript@5.3.3) cz-conventional-changelog-zh: specifier: ^0.0.2 - version: 0.0.2(@types/node@20.11.24)(typescript@5.3.3) + version: 0.0.2(@types/node@16.0.0)(typescript@5.3.3) eslint: specifier: ^8.55.0 version: 8.55.0 @@ -50,12 +50,9 @@ importers: packages/competition: dependencies: - '@sast/oj-ui': - specifier: workspace:^ - version: link:../ui - '@sast/oj-ui-universal': - specifier: workspace:^ - version: link:../ui-universal + '@ui-aurora/react': + specifier: ^0.0.1 + version: 0.0.1(@types/react@18.2.43)(monaco-editor@0.46.0)(react-dom@18.2.0)(react@18.2.0) axios: specifier: ^1.6.7 version: 1.6.7 @@ -107,7 +104,7 @@ importers: version: 5.3.3 vite: specifier: ^5.0.8 - version: 5.0.8(@types/node@20.11.24)(sass@1.69.5) + version: 5.0.8(@types/node@16.0.0)(sass@1.69.5) packages/docs: dependencies: @@ -256,7 +253,7 @@ importers: version: 18.2.0 vite-plugin-dts: specifier: ^3.6.4 - version: 3.6.4(@types/node@20.11.24)(rollup@3.29.4)(typescript@5.3.3)(vite@5.1.6) + version: 3.6.4(@types/node@20.11.24)(typescript@5.3.3)(vite@5.1.6) devDependencies: '@types/react': specifier: ^18.2.43 @@ -264,9 +261,15 @@ importers: rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 - rollup-plugin-scss-lit: - specifier: ^1.1.6 - version: 1.1.6(lit@3.1.2)(rollup@3.29.4) + rollup-plugin-postcss: + specifier: ^4.0.2 + version: 4.0.2(postcss@8.4.35) + rollup-plugin-postcss-lit: + specifier: ^2.1.0 + version: 2.1.0 + rollup-plugin-scss: + specifier: '3' + version: 3.0.0 sass: specifier: ^1.69.5 version: 1.69.5 @@ -1642,6 +1645,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 + dev: true /@babel/runtime@7.24.0: resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} @@ -1741,7 +1745,7 @@ packages: dev: true optional: true - /@commitlint/load@19.0.3(@types/node@20.11.24)(typescript@5.3.3): + /@commitlint/load@19.0.3(@types/node@16.0.0)(typescript@5.3.3): resolution: {integrity: sha512-18Tk/ZcDFRKIoKfEcl7kC+bYkEQ055iyKmGsYDoYWpKf6FUvBrP9bIWapuy/MB+kYiltmP9ITiUx6UXtqC9IRw==} engines: {node: '>=v18'} requiresBuild: true @@ -1752,7 +1756,7 @@ packages: '@commitlint/types': 19.0.3 chalk: 5.3.0 cosmiconfig: 8.3.6(typescript@5.3.3) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.24)(cosmiconfig@8.3.6)(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@16.0.0)(cosmiconfig@8.3.6)(typescript@5.3.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -2757,6 +2761,7 @@ packages: /@lit-labs/ssr-dom-shim@1.2.0: resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + dev: false /@lit/react@1.0.3(@types/react@18.2.43): resolution: {integrity: sha512-RGoPMrAPbFjQFXFbfmYdotw000DyChehTim+d562HRXvFGw//KxouI8jNOcc3Kw/1uqUA1SJqXFtKKxK0NUrww==} @@ -2770,6 +2775,7 @@ packages: resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false /@loadable/component@5.15.2(react@18.2.0): resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} @@ -2838,6 +2844,17 @@ packages: '@types/react': 18.2.43 react: 18.2.0 + /@mdx-js/react@3.0.1(@types/react@18.2.43)(react@18.2.0): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/mdx': 2.0.10 + '@types/react': 18.2.43 + react: 18.2.0 + dev: false + /@microsoft/api-extractor-model@7.28.3(@types/node@20.10.4): resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: @@ -3864,7 +3881,7 @@ packages: engines: {node: '>=14.0.0'} dev: false - /@rollup/pluginutils@5.1.0(rollup@3.29.4): + /@rollup/pluginutils@5.1.0: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3876,7 +3893,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.4 /@rollup/rollup-android-arm-eabi@4.12.0: resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} @@ -4758,6 +4774,34 @@ packages: - supports-color dev: true + /@storybook/addon-docs@8.0.6: + resolution: {integrity: sha512-QOlOE2XEFcUaR85YytBuf/nfKFkbIlD0Qc9CI4E65FoZPTCMhRVKAEN2CpsKI63fs/qQxM2mWkPXb6w7QXGxvg==} + dependencies: + '@babel/core': 7.24.0 + '@mdx-js/react': 3.0.1(@types/react@18.2.43)(react@18.2.0) + '@storybook/blocks': 8.0.6(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 8.0.6 + '@storybook/components': 8.0.6(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 8.0.6 + '@storybook/csf-tools': 8.0.6 + '@storybook/global': 5.0.0 + '@storybook/node-logger': 8.0.6 + '@storybook/preview-api': 8.0.6 + '@storybook/react-dom-shim': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 8.0.6 + '@types/react': 18.2.43 + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehype-external-links: 3.0.0 + rehype-slug: 6.0.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@storybook/addon-essentials@7.6.5(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-VCLj1JAEpGoqF5iFJOo1CZFFck/tg4m/98DLdQuNuXvxT6jqaF0NI9UUQuJLIGteDCR7NKRbTFc1hV3/Ev+Ziw==} peerDependencies: @@ -4893,6 +4937,49 @@ packages: - supports-color dev: true + /@storybook/blocks@8.0.6(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ycuPJwxyngSor4YNa4kkX3rAmX+w2pXNsIo+Zs4fEdAfCvha9+GZ/3jQSdrsHxjeIm9l9guiv4Ag8QTnnllXkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/channels': 8.0.6 + '@storybook/client-logger': 8.0.6 + '@storybook/components': 8.0.6(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 8.0.6 + '@storybook/csf': 0.1.2 + '@storybook/docs-tools': 8.0.6 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 8.0.6 + '@storybook/theming': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 8.0.6 + '@types/lodash': 4.14.202 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.3.2(react@18.2.0) + memoizerific: 1.11.3 + polished: 4.2.2 + react: 18.2.0 + react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + telejson: 7.2.0 + tocbot: 4.23.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + - encoding + - supports-color + dev: false + /@storybook/builder-manager@7.6.5: resolution: {integrity: sha512-FQyI+tfzMam2XKXq7k921YVafIJs9Vqvos5qx8vyRnRffo55UU8tgunwjGn0PswtbMm6sThVqE0C0ZzVr7RG8A==} dependencies: @@ -4977,6 +5064,16 @@ packages: tiny-invariant: 1.3.1 dev: true + /@storybook/channels@8.0.6: + resolution: {integrity: sha512-IbNvjxeyQKiMpb+gSpQ7yYsFqb8BM/KYgfypJM3yJV6iU/NFeevrC/DA6/R+8xWFyPc70unRNLv8fPvxhcIu8Q==} + dependencies: + '@storybook/client-logger': 8.0.6 + '@storybook/core-events': 8.0.6 + '@storybook/global': 5.0.0 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + dev: false + /@storybook/cli@7.6.5: resolution: {integrity: sha512-w+Y8dx5oCLQVESOVmpsQuFksr/ewARKrnSKl9kwnVMN4sMgjOgoZ3zmV66J7SKexvwyuwlOjf840pmEglGdPPg==} hasBin: true @@ -5041,6 +5138,12 @@ packages: '@storybook/global': 5.0.0 dev: true + /@storybook/client-logger@8.0.6: + resolution: {integrity: sha512-et/IHPHiiOwMg93l5KSgw47NZXz5xOyIrIElRcsT1wr8OJeIB9DzopB/suoHBZ/IML+t8x91atdutzUN2BLF6A==} + dependencies: + '@storybook/global': 5.0.0 + dev: false + /@storybook/codemod@7.6.5: resolution: {integrity: sha512-K5C9ltBClZ0aSyujGt3RJFtRicrUZy8nzhHrcADUj27rrQD26jH/p+Y05jWKj9JcI8SyMg978GN5X/1aw2Y31A==} dependencies: @@ -5108,6 +5211,27 @@ packages: - '@types/react-dom' dev: true + /@storybook/components@8.0.6(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6W2BAqAPJkrExk8D/ug2NPBPvMs05p6Bdt9tk3eWjiMrhG/CUKBzlBTEfNK/mzy3YVB6ijyT2DgsqzmWWYJ/Xw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) + '@storybook/client-logger': 8.0.6 + '@storybook/csf': 0.1.2 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 8.0.6 + memoizerific: 1.11.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + dev: false + /@storybook/core-client@7.6.5: resolution: {integrity: sha512-6FtyJcz8MSl+JYwNJZ53FM6rkT27pFHWcJPdtw/9229Ec8as9RpkNeZ/NBZjRTeDkn9Ki0VOiVAefNie9tZ/8Q==} dependencies: @@ -5177,6 +5301,42 @@ packages: - supports-color dev: true + /@storybook/core-common@8.0.6: + resolution: {integrity: sha512-Z4cA52SjcW6SAV9hayqVm5kyr362O20Zmwz7+H2nYEhcu8bY69y5p45aaoyElMxL1GDNu84GrmTp7dY4URw1fQ==} + dependencies: + '@storybook/core-events': 8.0.6 + '@storybook/csf-tools': 8.0.6 + '@storybook/node-logger': 8.0.6 + '@storybook/types': 8.0.6 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + cross-spawn: 7.0.3 + esbuild: 0.19.12 + esbuild-register: 3.5.0(esbuild@0.19.12) + execa: 5.1.1 + file-system-cache: 2.3.0 + find-cache-dir: 3.3.2 + find-up: 5.0.0 + fs-extra: 11.2.0 + glob: 10.3.10 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.7.0 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + semver: 7.5.4 + tempy: 1.0.1 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 + util: 0.12.5 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@storybook/core-events@7.6.17: resolution: {integrity: sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==} dependencies: @@ -5189,6 +5349,12 @@ packages: ts-dedent: 2.2.0 dev: true + /@storybook/core-events@8.0.6: + resolution: {integrity: sha512-EwGmuMm8QTUAHPhab4yftQWoSCX3OzEk6cQdpLtbNFtRRLE9aPZzxhk5Z/d3KhLNSCUAGyCiDt5I9JxTBetT9A==} + dependencies: + ts-dedent: 2.2.0 + dev: false + /@storybook/core-server@7.6.5: resolution: {integrity: sha512-BfKzK/ObTjUcPvE5/r1pogCifM/4nLRhOUYJl7XekwHkOQwn19e6H3/ku1W3jDoYXBu642Dc9X7l/ERjKTqxFg==} dependencies: @@ -5258,6 +5424,15 @@ packages: - supports-color dev: true + /@storybook/csf-plugin@8.0.6: + resolution: {integrity: sha512-ULaAFGhdgDDbknGnCqxitzeBlSzYZJQvZT4HtFgxfNU2McOu+GLIzyUOx3xG5eoziLvvm+oW+lxLr5nDkSaBUg==} + dependencies: + '@storybook/csf-tools': 8.0.6 + unplugin: 1.5.1 + transitivePeerDependencies: + - supports-color + dev: false + /@storybook/csf-tools@7.6.17: resolution: {integrity: sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==} dependencies: @@ -5290,6 +5465,22 @@ packages: - supports-color dev: true + /@storybook/csf-tools@8.0.6: + resolution: {integrity: sha512-MEBVxpnzqkBPyYXdtYQrY0SQC3oflmAQdEM0qWFzPvZXTnIMk3Q2ft8JNiBht6RlrKGvKql8TodwpbOiPeJI/w==} + dependencies: + '@babel/generator': 7.23.6 + '@babel/parser': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + '@storybook/csf': 0.1.2 + '@storybook/types': 8.0.6 + fs-extra: 11.2.0 + recast: 0.23.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: false + /@storybook/csf@0.0.1: resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} dependencies: @@ -5335,9 +5526,35 @@ packages: - supports-color dev: true + /@storybook/docs-tools@8.0.6: + resolution: {integrity: sha512-PsAA2b/Q1ki5IR0fa52MI+fdDkQ0W+mrZVRRj3eJzonGZYcQtXofTXQB7yi0CaX7zzI/N8JcdE4bO9sI6SrOTg==} + dependencies: + '@storybook/core-common': 8.0.6 + '@storybook/preview-api': 8.0.6 + '@storybook/types': 8.0.6 + '@types/doctrine': 0.0.3 + assert: 2.1.0 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + /@storybook/icons@1.2.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@storybook/manager-api@7.6.17(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==} dependencies: @@ -5383,6 +5600,29 @@ packages: - react-dom dev: true + /@storybook/manager-api@8.0.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-khYA5CM+LY/B5VsqqUmt2ivNLNqyIKfcgGsXHkOs3Kr5BOz8LhEmSwZOB348ey2C2ejFJmvKlkcsE+rB9ixlww==} + dependencies: + '@storybook/channels': 8.0.6 + '@storybook/client-logger': 8.0.6 + '@storybook/core-events': 8.0.6 + '@storybook/csf': 0.1.2 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0) + '@storybook/router': 8.0.6 + '@storybook/theming': 8.0.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 8.0.6 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + store2: 2.14.2 + telejson: 7.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - react + - react-dom + dev: false + /@storybook/manager@7.6.5: resolution: {integrity: sha512-y1KLH0O1PGPyMxGMvOhppzFSO7r4ibjTve5iqsI0JZwxUjNuBKRLYbrhXdAyC2iacvxYNrHgevae1k9XdD+FQw==} dev: true @@ -5398,6 +5638,10 @@ packages: resolution: {integrity: sha512-xKw6IH1wLkIssekdBv3bd13xYKUF1t8EwqDR8BYcN8AVjZlqJMTifssqG4bYV+G/B7J3tz4ugJ5nmtWg6RQ0Qw==} dev: true + /@storybook/node-logger@8.0.6: + resolution: {integrity: sha512-mDRJLVAuTWauO0mnrwajfJV/6zKBJVPp/9g0ULccE3Q+cuqNfUefqfCd17cZBlJHeRsdB9jy9tod48d4qzGEkQ==} + dev: false + /@storybook/postinstall@7.6.17: resolution: {integrity: sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==} dev: false @@ -5444,6 +5688,25 @@ packages: util-deprecate: 1.0.2 dev: true + /@storybook/preview-api@8.0.6: + resolution: {integrity: sha512-O5SvBqlHIO/Cf5oGZUJV2npkp9bLqg9Sn0T0a5zXolJbRy+gP7MDyz4AnliLpTn5bT2rzVQ6VH8IDlhHBq3K6g==} + dependencies: + '@storybook/channels': 8.0.6 + '@storybook/client-logger': 8.0.6 + '@storybook/core-events': 8.0.6 + '@storybook/csf': 0.1.2 + '@storybook/global': 5.0.0 + '@storybook/types': 8.0.6 + '@types/qs': 6.9.10 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.2 + tiny-invariant: 1.3.1 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: false + /@storybook/preview@7.6.5: resolution: {integrity: sha512-zmLa7C7yFGTYhgGZXoecdww9rx0Z5HpNi/GDBRWoNSK+FEdE8Jj2jF5NJ2ncldtYIyegz9ku29JFMKbhMj9K5Q==} dev: true @@ -5468,6 +5731,16 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@storybook/react-dom-shim@8.0.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NC4k0dBIypvVqwqnMhKDUxNc1OeL6lgspn8V26PnmCYbvY97ZqoGQ7n2a5Kw/kubN6yWX1nxNkV6HcTRgEnYTw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@storybook/react-vite@7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@5.0.8): resolution: {integrity: sha512-fIoSBbou3rQdOo6qX/nD5givb3qIOSwXeZWjAqRB6560cqmeSQFlRGtKUJ0nzQYADwJ0/iNHz3nOvJOOSnPepA==} engines: {node: '>=16'} @@ -5477,7 +5750,7 @@ packages: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@5.0.8) - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.0 '@storybook/builder-vite': 7.6.5(typescript@5.3.3)(vite@5.0.8) '@storybook/react': 7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@vitejs/plugin-react': 3.1.0(vite@5.0.8) @@ -5551,6 +5824,14 @@ packages: qs: 6.11.2 dev: true + /@storybook/router@8.0.6: + resolution: {integrity: sha512-ektN0+TyQPxVxcUvt9ksGizgDM1bKFEdGJeeqv0yYaOSyC4M1e4S8QZ+Iq/p/NFNt5XJWsWU+HtQ8AzQWagQfQ==} + dependencies: + '@storybook/client-logger': 8.0.6 + memoizerific: 1.11.3 + qs: 6.11.2 + dev: false + /@storybook/telemetry@7.6.5: resolution: {integrity: sha512-FiLRh9k9LoGphqgBqPYySWdGqplihiZyDwqdo+Qs19RcQ/eiKg0W7fdA09nStcdcsHmDl/1cMfRhz9KUiMtwOw==} dependencies: @@ -5595,6 +5876,25 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@storybook/theming@8.0.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-o/b12+nDp8WDFlE0qQilzJ2aIeOHD48MCoc+ouFRPRH4tUS5xNaBPYxBxTgdtFbwZNuOC2my4A37Uhjn6IwkuQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@storybook/client-logger': 8.0.6 + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@storybook/types@7.6.17: resolution: {integrity: sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==} dependencies: @@ -5613,6 +5913,14 @@ packages: file-system-cache: 2.3.0 dev: true + /@storybook/types@8.0.6: + resolution: {integrity: sha512-YKq4A+3diQ7UCGuyrB/9LkB29jjGoEmPl3TfV7mO1FvdRw22BNuV3GyJCiLUHigSKiZgFo+pfQhmsNRJInHUnQ==} + dependencies: + '@storybook/channels': 8.0.6 + '@types/express': 4.17.21 + file-system-cache: 2.3.0 + dev: false + /@stylexjs/babel-plugin@0.3.0(@babel/core@7.23.6)(@babel/traverse@7.24.0)(@babel/types@7.24.0): resolution: {integrity: sha512-OwViUP78aOMt3zJ9Uhrk2UMveMocyuZ/9Lhru+4j71aarimi2syIas20NpBeNUgzjzcmQXzLkSxVQizUGkGGbA==} peerDependencies: @@ -6116,7 +6424,6 @@ packages: /@types/emscripten@1.39.10: resolution: {integrity: sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==} - dev: true /@types/escodegen@0.0.6: resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} @@ -6199,6 +6506,12 @@ packages: '@types/unist': 2.0.10 dev: false + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 2.0.10 + dev: false + /@types/html-minifier-terser@7.0.0: resolution: {integrity: sha512-hw3bhStrg5e3FQT8qZKCJTrzt/UbEaunU1xRWJ+aNOTmeBMvE3S4Ml2HiiNnZgL8izu0LFVkHUoPFXL1s5QNpQ==} dev: false @@ -6383,10 +6696,15 @@ packages: /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + dev: false /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: false + /@types/uuid@9.0.7: resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} dev: true @@ -6592,9 +6910,32 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@ui-aurora/react@0.0.1(@types/react@18.2.43)(monaco-editor@0.46.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ptRM9lWVTRt+GQe5cVdmrOATGV6Qh8BC3usRvO6Q6aO20mD0IPXTSLtpphthpoU33AloI2s3J4l0UIKr9/NM4A==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + dependencies: + '@monaco-editor/react': 4.6.0(monaco-editor@0.46.0)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 8.0.6 + '@types/react-transition-group': 4.4.10 + classnames: 2.5.1 + framer-motion: 11.0.25(react-dom@18.2.0)(react@18.2.0) + lucide-react: 0.364.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.43)(react@18.2.0) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - encoding + - immer + - monaco-editor + - supports-color + dev: false + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true /@vitejs/plugin-react-swc@3.5.0(vite@5.0.8): resolution: {integrity: sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==} @@ -6602,7 +6943,7 @@ packages: vite: ^4 || ^5 dependencies: '@swc/core': 1.3.101 - vite: 5.0.8(@types/node@20.11.24)(sass@1.69.5) + vite: 5.0.8(@types/node@16.0.0)(sass@1.69.5) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -6881,7 +7222,6 @@ packages: dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 - dev: true /@yarnpkg/libzip@2.3.0: resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} @@ -6889,7 +7229,6 @@ packages: dependencies: '@types/emscripten': 1.39.10 tslib: 1.14.1 - dev: true /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -6948,7 +7287,6 @@ packages: acorn: 7.4.1 acorn-walk: 7.2.0 xtend: 4.0.2 - dev: false /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} @@ -7073,6 +7411,11 @@ packages: hasBin: true dev: false + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -7081,6 +7424,11 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -7468,6 +7816,10 @@ packages: resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} dev: true + /browser-process-hrtime@0.1.3: + resolution: {integrity: sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==} + dev: true + /browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} dependencies: @@ -7607,6 +7959,17 @@ packages: type-detect: 4.0.8 dev: true + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -7708,6 +8071,10 @@ packages: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: true + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + dev: false + /clean-css@5.2.0: resolution: {integrity: sha512-2639sWGa43EMmG7fn8mdVuBSs6HuWaSor+ZPoFWzenBc6oN+td8YhTfghWXZ25G1NiiSvz8bOFBS7PdSbTiqEA==} engines: {node: '>= 10.0'} @@ -7858,13 +8225,13 @@ packages: engines: {node: ^12.20.0 || >=14} requiresBuild: true - /commitizen@4.3.0(@types/node@20.11.24)(typescript@5.3.3): + /commitizen@4.3.0(@types/node@16.0.0)(typescript@5.3.3): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@20.11.24)(typescript@5.3.3) + cz-conventional-changelog: 3.3.0(@types/node@16.0.0)(typescript@5.3.3) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -7929,6 +8296,12 @@ packages: typedarray: 0.0.6 dev: true + /concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + dependencies: + source-map: 0.6.1 + dev: true + /connect-history-api-fallback@2.0.0: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} @@ -7950,7 +8323,11 @@ packages: resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} dev: true - /convert-source-map@2.0.0: + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} /cookie-signature@1.0.6: @@ -7992,7 +8369,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.24)(cosmiconfig@8.3.6)(typescript@5.3.3): + /cosmiconfig-typescript-loader@5.0.0(@types/node@16.0.0)(cosmiconfig@8.3.6)(typescript@5.3.3): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} requiresBuild: true @@ -8001,7 +8378,7 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 20.11.24 + '@types/node': 16.0.0 cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 typescript: 5.3.3 @@ -8046,6 +8423,14 @@ packages: /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + + /css-declaration-sorter@6.4.1(postcss@8.4.35): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.35 dev: true /css-declaration-sorter@7.1.1(postcss@8.4.31): @@ -8064,6 +8449,7 @@ packages: postcss: ^8.0.9 dependencies: postcss: 8.4.35 + dev: false /css-mediaquery@0.1.2: resolution: {integrity: sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==} @@ -8103,6 +8489,16 @@ packages: webpack: 5.89.0 dev: false + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -8111,6 +8507,15 @@ packages: domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 + dev: false + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true /css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} @@ -8118,6 +8523,7 @@ packages: dependencies: mdn-data: 2.0.28 source-map-js: 1.0.2 + dev: false /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} @@ -8125,6 +8531,7 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 + dev: false /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} @@ -8139,6 +8546,44 @@ packages: engines: {node: '>=4'} hasBin: true + /cssnano-preset-default@5.2.14(postcss@8.4.35): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.35) + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-calc: 8.2.4(postcss@8.4.35) + postcss-colormin: 5.3.1(postcss@8.4.35) + postcss-convert-values: 5.1.3(postcss@8.4.35) + postcss-discard-comments: 5.1.2(postcss@8.4.35) + postcss-discard-duplicates: 5.1.0(postcss@8.4.35) + postcss-discard-empty: 5.1.1(postcss@8.4.35) + postcss-discard-overridden: 5.1.0(postcss@8.4.35) + postcss-merge-longhand: 5.1.7(postcss@8.4.35) + postcss-merge-rules: 5.1.4(postcss@8.4.35) + postcss-minify-font-values: 5.1.0(postcss@8.4.35) + postcss-minify-gradients: 5.1.1(postcss@8.4.35) + postcss-minify-params: 5.1.4(postcss@8.4.35) + postcss-minify-selectors: 5.2.1(postcss@8.4.35) + postcss-normalize-charset: 5.1.0(postcss@8.4.35) + postcss-normalize-display-values: 5.1.0(postcss@8.4.35) + postcss-normalize-positions: 5.1.1(postcss@8.4.35) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.35) + postcss-normalize-string: 5.1.0(postcss@8.4.35) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.35) + postcss-normalize-unicode: 5.1.1(postcss@8.4.35) + postcss-normalize-url: 5.1.0(postcss@8.4.35) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.35) + postcss-ordered-values: 5.1.3(postcss@8.4.35) + postcss-reduce-initial: 5.1.2(postcss@8.4.35) + postcss-reduce-transforms: 5.1.0(postcss@8.4.35) + postcss-svgo: 5.1.0(postcss@8.4.35) + postcss-unique-selectors: 5.1.1(postcss@8.4.35) + dev: true + /cssnano-preset-default@6.0.2(postcss@8.4.31): resolution: {integrity: sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw==} engines: {node: ^14 || ^16 || >=18.0} @@ -8213,6 +8658,16 @@ packages: postcss-reduce-transforms: 6.0.1(postcss@8.4.35) postcss-svgo: 6.0.1(postcss@8.4.35) postcss-unique-selectors: 6.0.1(postcss@8.4.35) + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.35): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true /cssnano-utils@4.0.1(postcss@8.4.31): resolution: {integrity: sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==} @@ -8230,6 +8685,19 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 + dev: false + + /cssnano@5.1.15(postcss@8.4.35): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.35) + lilconfig: 2.1.0 + postcss: 8.4.35 + yaml: 1.10.2 + dev: true /cssnano@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==} @@ -8251,12 +8719,21 @@ packages: cssnano-preset-default: 6.0.2(postcss@8.4.35) lilconfig: 2.1.0 postcss: 8.4.35 + dev: false + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true /csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: css-tree: 2.2.1 + dev: false /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -8283,45 +8760,45 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - /cuint@0.2.2: - resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==} - dev: true - - /cz-conventional-changelog-zh@0.0.2(@types/node@20.11.24)(typescript@5.3.3): + /cz-conventional-changelog-zh@0.0.2(@types/node@16.0.0)(typescript@5.3.3): resolution: {integrity: sha512-rXy2HiG/0M7xChuodAN1L9qHDWTBInGTljaE59AlyqrXQAv0srg147vjep5CO7mGtxVYJQJi9TVP5KVZMWxDqQ==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.11.24)(typescript@5.3.3) + commitizen: 4.3.0(@types/node@16.0.0)(typescript@5.3.3) conventional-commit-types: 3.0.0 lodash.assign: 4.2.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.0.3(@types/node@20.11.24)(typescript@5.3.3) + '@commitlint/load': 19.0.3(@types/node@16.0.0)(typescript@5.3.3) transitivePeerDependencies: - '@types/node' - typescript dev: true - /cz-conventional-changelog@3.3.0(@types/node@20.11.24)(typescript@5.3.3): + /cz-conventional-changelog@3.3.0(@types/node@16.0.0)(typescript@5.3.3): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@types/node@20.11.24)(typescript@5.3.3) + commitizen: 4.3.0(@types/node@16.0.0)(typescript@5.3.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 19.0.3(@types/node@20.11.24)(typescript@5.3.3) + '@commitlint/load': 19.0.3(@types/node@16.0.0)(typescript@5.3.3) transitivePeerDependencies: - '@types/node' - typescript dev: true + /dash-ast@1.0.0: + resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} + dev: true + /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -8475,7 +8952,6 @@ packages: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 - dev: true /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -8574,12 +9050,21 @@ packages: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: false /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -8592,11 +9077,27 @@ packages: webidl-conversions: 7.0.0 dev: false + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + /domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true /domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} @@ -8604,6 +9105,7 @@ packages: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: false /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -8695,6 +9197,10 @@ packages: tapable: 2.2.1 dev: false + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -8851,6 +9357,17 @@ packages: transitivePeerDependencies: - supports-color + /esbuild-register@3.5.0(esbuild@0.19.12): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4 + esbuild: 0.19.12 + transitivePeerDependencies: + - supports-color + dev: false + /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} @@ -9220,6 +9737,10 @@ packages: '@types/unist': 2.0.10 dev: false + /estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -9239,7 +9760,6 @@ packages: /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - dev: false /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -9263,7 +9783,6 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -9625,6 +10144,25 @@ packages: /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + /framer-motion@11.0.25(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mRt7vQGzA7++wTgb+PW1TrlXXgndqR6hCiJ48fXr2X9alte2hPQiAq556HRwDCt0Q5X98MNvcSe4KUa27Gm5Lg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + dev: false + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -9723,6 +10261,12 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + dependencies: + loader-utils: 3.2.1 + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -9776,7 +10320,6 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -9982,6 +10525,13 @@ packages: optionalDependencies: uglify-js: 3.17.4 + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -10062,6 +10612,12 @@ packages: '@types/hast': 2.3.8 dev: false + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + /hast-util-is-element@2.1.3: resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} dependencies: @@ -10069,6 +10625,12 @@ packages: '@types/unist': 2.0.10 dev: false + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + dependencies: + '@types/hast': 3.0.4 + dev: false + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: false @@ -10156,6 +10718,12 @@ packages: '@types/hast': 2.3.8 dev: false + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + /hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: false @@ -10377,7 +10945,6 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -10403,6 +10970,19 @@ packages: dependencies: safer-buffer: 2.1.2 + /icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + dev: true + + /icss-utils@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -10421,6 +11001,13 @@ packages: /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + /import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + dependencies: + import-from: 3.0.0 + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -10429,6 +11016,13 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} @@ -10599,7 +11193,6 @@ packages: /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} - dev: false /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -10725,12 +11318,10 @@ packages: /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} - dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - dev: true /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -10788,7 +11379,6 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -11325,11 +11915,13 @@ packages: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 lit-html: 3.1.2 + dev: false /lit-html@3.1.2: resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} dependencies: '@types/trusted-types': 2.0.7 + dev: false /lit@3.1.2: resolution: {integrity: sha512-VZx5iAyMtX7CV4K8iTLdCkMaYZ7ipjJZ0JcSdJ0zIdGxxyurjIn7yuuSxNBD7QmjvcNJwr0JS4cAdAtsy7gZ6w==} @@ -11337,6 +11929,7 @@ packages: '@lit/reactive-element': 2.0.4 lit-element: 4.0.4 lit-html: 3.1.2 + dev: false /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} @@ -11352,6 +11945,11 @@ packages: json5: 2.2.3 dev: false + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: true + /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -11397,6 +11995,10 @@ packages: resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==} dev: true + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -11517,11 +12119,25 @@ packages: dependencies: yallist: 4.0.0 + /lucide-react@0.364.0(react@18.2.0): + resolution: {integrity: sha512-eHfdbJExWtTaZ0tBMGtI7PA/MbqV5wt+o4/yitDce17tadH/75Gq3Tq8jSteb3LhLr0eay/j5YUuN4yXjnI3aw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true + /magic-string@0.23.2: + resolution: {integrity: sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -11790,11 +12406,17 @@ packages: '@types/mdast': 3.0.15 dev: false + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + /mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: false /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} @@ -11830,6 +12452,12 @@ packages: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true + /merge-source-map@1.0.4: + resolution: {integrity: sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==} + dependencies: + source-map: 0.5.7 + dev: true + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -12202,12 +12830,6 @@ packages: engines: {node: '>=4'} hasBin: true - /mime@2.5.2: - resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true - /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -12228,12 +12850,6 @@ packages: engines: {node: '>=4'} dev: true - /minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - dependencies: - brace-expansion: 1.1.11 - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -12344,6 +12960,22 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mutexify@1.4.0: + resolution: {integrity: sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==} + dependencies: + queue-tick: 1.0.1 + dev: true + + /nanobench@2.1.1: + resolution: {integrity: sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==} + hasBin: true + dependencies: + browser-process-hrtime: 0.1.3 + chalk: 1.1.3 + mutexify: 1.4.0 + pretty-hrtime: 1.0.3 + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -12437,12 +13069,16 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -12597,6 +13233,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -12640,6 +13281,21 @@ packages: dependencies: aggregate-error: 3.1.0 + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -12829,11 +13485,17 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + dev: false /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true + /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -12875,7 +13537,7 @@ packages: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.24.0 /polka@0.5.2: resolution: {integrity: sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==} @@ -12884,6 +13546,16 @@ packages: trouter: 2.0.1 dev: false + /postcss-calc@8.2.4(postcss@8.4.35): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + /postcss-calc@9.0.1(postcss@8.4.31): resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==} engines: {node: ^14 || ^16 || >=18.0} @@ -12904,6 +13576,20 @@ packages: postcss: 8.4.35 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin@5.3.1(postcss@8.4.35): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-colormin@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w==} @@ -12929,6 +13615,18 @@ packages: colord: 2.9.3 postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values@5.1.3(postcss@8.4.35): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-convert-values@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA==} @@ -12950,6 +13648,16 @@ packages: browserslist: 4.23.0 postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-discard-comments@5.1.2(postcss@8.4.35): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true /postcss-discard-comments@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==} @@ -12967,6 +13675,16 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 + dev: false + + /postcss-discard-duplicates@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true /postcss-discard-duplicates@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg==} @@ -12984,6 +13702,16 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 + dev: false + + /postcss-discard-empty@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true /postcss-discard-empty@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg==} @@ -13001,8 +13729,18 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 + dev: false - /postcss-discard-overridden@6.0.1(postcss@8.4.31): + /postcss-discard-overridden@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true + + /postcss-discard-overridden@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: @@ -13018,15 +13756,7 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 - - /postcss-fail-on-warn@0.2.1(postcss@8.4.35): - resolution: {integrity: sha512-WITa+kj67cZzPwDXsdcKyfIGFDoeUTHDhA7tW8o70k1P5QwdZfz5YdTDTTb5MvpSFtm+NnsCMjhPrvqxQzcO5g==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.35 - dev: true + dev: false /postcss-import@14.1.0(postcss@8.4.21): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} @@ -13040,18 +13770,6 @@ packages: resolve: 1.22.8 dev: false - /postcss-import@15.1.0(postcss@8.4.35): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.35 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - dev: true - /postcss-js@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} @@ -13079,6 +13797,34 @@ packages: yaml: 1.10.2 dev: false + /postcss-load-config@3.1.4(postcss@8.4.35): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.35 + yaml: 1.10.2 + dev: true + + /postcss-merge-longhand@5.1.7(postcss@8.4.35): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.35) + dev: true + /postcss-merge-longhand@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA==} engines: {node: ^14 || ^16 || >=18.0} @@ -13099,6 +13845,20 @@ packages: postcss: 8.4.35 postcss-value-parser: 4.2.0 stylehacks: 6.0.1(postcss@8.4.35) + dev: false + + /postcss-merge-rules@5.1.4(postcss@8.4.35): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + dev: true /postcss-merge-rules@6.0.2(postcss@8.4.31): resolution: {integrity: sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ==} @@ -13124,6 +13884,17 @@ packages: cssnano-utils: 4.0.1(postcss@8.4.35) postcss: 8.4.35 postcss-selector-parser: 6.0.13 + dev: false + + /postcss-minify-font-values@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-minify-font-values@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==} @@ -13143,6 +13914,19 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-minify-gradients@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==} @@ -13166,6 +13950,19 @@ packages: cssnano-utils: 4.0.1(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params@5.1.4(postcss@8.4.35): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-minify-params@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g==} @@ -13189,6 +13986,17 @@ packages: cssnano-utils: 4.0.1(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-selectors@5.2.1(postcss@8.4.35): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + dev: true /postcss-minify-selectors@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ==} @@ -13208,6 +14016,64 @@ packages: dependencies: postcss: 8.4.35 postcss-selector-parser: 6.0.13 + dev: false + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + + /postcss-modules-local-by-default@4.0.4(postcss@8.4.35): + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.1.1(postcss@8.4.35): + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.35): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + dev: true + + /postcss-modules@4.3.1(postcss@8.4.35): + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) + postcss-modules-scope: 3.1.1(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) + string-hash: 1.1.3 + dev: true /postcss-nested@6.0.0(postcss@8.4.21): resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} @@ -13219,6 +14085,15 @@ packages: postcss-selector-parser: 6.0.13 dev: false + /postcss-normalize-charset@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + dev: true + /postcss-normalize-charset@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==} engines: {node: ^14 || ^16 || >=18.0} @@ -13235,6 +14110,17 @@ packages: postcss: ^8.4.31 dependencies: postcss: 8.4.35 + dev: false + + /postcss-normalize-display-values@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-display-values@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==} @@ -13254,6 +14140,17 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-positions@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==} @@ -13273,6 +14170,17 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-repeat-style@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==} @@ -13292,6 +14200,17 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-string@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==} @@ -13311,6 +14230,17 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-timing-functions@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==} @@ -13330,6 +14260,18 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-unicode@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ==} @@ -13351,6 +14293,18 @@ packages: browserslist: 4.23.0 postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-url@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==} @@ -13370,6 +14324,17 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-normalize-whitespace@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==} @@ -13389,6 +14354,18 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-ordered-values@5.1.3(postcss@8.4.35): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-ordered-values@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==} @@ -13410,6 +14387,18 @@ packages: cssnano-utils: 4.0.1(postcss@8.4.35) postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false + + /postcss-reduce-initial@5.1.2(postcss@8.4.35): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + caniuse-api: 3.0.0 + postcss: 8.4.35 + dev: true /postcss-reduce-initial@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA==} @@ -13431,6 +14420,17 @@ packages: browserslist: 4.23.0 caniuse-api: 3.0.0 postcss: 8.4.35 + dev: false + + /postcss-reduce-transforms@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true /postcss-reduce-transforms@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==} @@ -13450,6 +14450,7 @@ packages: dependencies: postcss: 8.4.35 postcss-value-parser: 4.2.0 + dev: false /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} @@ -13458,6 +14459,17 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 + /postcss-svgo@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: true + /postcss-svgo@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA==} engines: {node: ^14 || ^16 || >= 18} @@ -13478,6 +14490,17 @@ packages: postcss: 8.4.35 postcss-value-parser: 4.2.0 svgo: 3.1.0 + dev: false + + /postcss-unique-selectors@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + dev: true /postcss-unique-selectors@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ==} @@ -13497,19 +14520,7 @@ packages: dependencies: postcss: 8.4.35 postcss-selector-parser: 6.0.13 - - /postcss-url@10.1.3(postcss@8.4.35): - resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} - engines: {node: '>=10'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - make-dir: 3.1.0 - mime: 2.5.2 - minimatch: 3.0.8 - postcss: 8.4.35 - xxhashjs: 0.2.2 - dev: true + dev: false /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -13612,6 +14623,11 @@ packages: engines: {node: '>=0.4.0'} dev: true + /promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + dev: true + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -13717,6 +14733,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: true + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -13962,6 +14982,7 @@ packages: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: false /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -14018,6 +15039,17 @@ packages: source-map: 0.6.1 tslib: 2.6.2 + /recast@0.23.6: + resolution: {integrity: sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.6.2 + dev: false + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -14113,6 +15145,17 @@ packages: unist-util-visit: 4.1.2 dev: false + /rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + dev: false + /rehype-slug@5.1.0: resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} dependencies: @@ -14125,6 +15168,16 @@ packages: unist-util-visit: 4.1.2 dev: false + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 + dev: false + /rehype-stringify@9.0.4: resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} dependencies: @@ -14322,23 +15375,6 @@ packages: hasBin: true dependencies: glob: 7.2.3 - dev: true - - /rollup-copy-transform-css@1.2.5(rollup@3.29.4): - resolution: {integrity: sha512-03DcxlZ0WqhMYiGyhCEls54236X7k9cvYwQ5Hl6duI4STDLMXqhuD0xKAFwtG3TiXXr93bGFHEEUL3s37c9LwQ==} - engines: {node: '>= 14.18'} - peerDependencies: - rollup: ^2 || ^3 || ^4 - dependencies: - cssnano: 6.0.1(postcss@8.4.35) - esbuild: 0.19.12 - picomatch: 2.3.1 - postcss: 8.4.35 - postcss-fail-on-warn: 0.2.1(postcss@8.4.35) - postcss-import: 15.1.0(postcss@8.4.35) - postcss-url: 10.1.3(postcss@8.4.35) - rollup: 3.29.4 - dev: true /rollup-plugin-copy@3.5.0: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} @@ -14351,19 +15387,49 @@ packages: is-plain-object: 3.0.1 dev: true - /rollup-plugin-scss-lit@1.1.6(lit@3.1.2)(rollup@3.29.4): - resolution: {integrity: sha512-JyRbPY9NuCoDyfx7tvz9F7h4v0EOnbOB+082erQLaTBTZEAgk5fgHB/GsWmKyMFwWagRe89cllklCO3kkO1IuA==} - engines: {node: '>= 14.18'} + /rollup-plugin-postcss-lit@2.1.0: + resolution: {integrity: sha512-rtgCG0U2GkT5aLymkZEKXLq36sgtWVJFtL97Vmek0jgaYa6FDs0Xhqd9cCHdDBXPeTctlSZGGs+tpUtIpHMFMQ==} + dependencies: + '@rollup/pluginutils': 5.1.0 + transform-ast: 2.4.4 + transitivePeerDependencies: + - rollup + dev: true + + /rollup-plugin-postcss@4.0.2(postcss@8.4.35): + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} peerDependencies: - lit: ^2 - rollup: ^2 || ^3 + postcss: 8.x dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - lit: 3.1.2 + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.4.35) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 postcss: 8.4.35 - rollup: 3.29.4 - rollup-copy-transform-css: 1.2.5(rollup@3.29.4) - sass: 1.69.5 + postcss-load-config: 3.1.4(postcss@8.4.35) + postcss-modules: 4.3.1(postcss@8.4.35) + promise.series: 0.2.0 + resolve: 1.22.8 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + dev: true + + /rollup-plugin-scss@3.0.0: + resolution: {integrity: sha512-UldNaNHEon2a5IusHvj/Nnwc7q13YDvbFxz5pfNbHBNStxGoUNyM+0XwAA/UafJ1u8XRPGdBMrhWFthrrGZdWQ==} + dependencies: + rollup-pluginutils: 2.8.2 + dev: true + + /rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 dev: true /rollup@3.29.4: @@ -14372,6 +15438,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true /rollup@4.12.0: resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} @@ -14523,6 +15590,10 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + dev: true + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -14772,6 +15843,11 @@ packages: buffer-from: 1.1.2 source-map: 0.6.1 + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -14781,6 +15857,11 @@ packages: engines: {node: '>= 8'} dev: false + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true + /space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} @@ -14813,6 +15894,11 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -14863,6 +15949,10 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + /string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + dev: true + /string-replace-loader@3.1.0(webpack@5.90.3): resolution: {integrity: sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==} peerDependencies: @@ -14955,6 +16045,13 @@ packages: character-entities-legacy: 3.0.0 dev: false + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -14975,7 +16072,6 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -15006,6 +16102,10 @@ packages: acorn: 8.11.3 dev: true + /style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} + dev: true + /style-loader@3.3.3(webpack@5.89.0): resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==} engines: {node: '>= 12.13.0'} @@ -15021,6 +16121,17 @@ packages: inline-style-parser: 0.1.1 dev: false + /stylehacks@5.1.1(postcss@8.4.35): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.23.0 + postcss: 8.4.35 + postcss-selector-parser: 6.0.13 + dev: true + /stylehacks@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg==} engines: {node: ^14 || ^16 || >=18.0} @@ -15041,11 +16152,17 @@ packages: browserslist: 4.23.0 postcss: 8.4.35 postcss-selector-parser: 6.0.13 + dev: false /styleq@0.1.3: resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} dev: true + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -15080,6 +16197,20 @@ packages: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: false + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + /svgo@3.1.0: resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} engines: {node: '>=14.0.0'} @@ -15092,6 +16223,7 @@ packages: css-what: 6.1.0 csso: 5.0.5 picocolors: 1.0.0 + dev: false /swr@2.2.5(react@18.2.0): resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} @@ -15188,7 +16320,6 @@ packages: /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} - dev: true /temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} @@ -15206,7 +16337,6 @@ packages: temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 - dev: true /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} @@ -15301,6 +16431,10 @@ packages: /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + dev: false + /tinybench@2.5.1: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true @@ -15376,6 +16510,18 @@ packages: punycode: 2.3.1 dev: true + /transform-ast@2.4.4: + resolution: {integrity: sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==} + dependencies: + acorn-node: 1.8.2 + convert-source-map: 1.9.0 + dash-ast: 1.0.0 + is-buffer: 2.0.5 + magic-string: 0.23.2 + merge-source-map: 1.0.4 + nanobench: 2.1.1 + dev: true + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false @@ -15406,7 +16552,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -15436,7 +16581,6 @@ packages: /type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} - dev: true /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -15586,7 +16730,6 @@ packages: engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 - dev: true /unist-util-generated@2.0.1: resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} @@ -15601,6 +16744,12 @@ packages: '@types/unist': 2.0.10 dev: false + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: false + /unist-util-position-from-estree@1.1.2: resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} dependencies: @@ -15645,6 +16794,13 @@ packages: unist-util-is: 5.2.1 dev: false + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + /unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} dependencies: @@ -15660,6 +16816,14 @@ packages: unist-util-visit-parents: 5.1.3 dev: false + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -15887,7 +17051,7 @@ packages: optional: true dependencies: '@microsoft/api-extractor': 7.38.5(@types/node@20.10.4) - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.0 '@vue/language-core': 1.8.25(typescript@5.3.3) debug: 4.3.4 kolorist: 1.8.0 @@ -15900,7 +17064,7 @@ packages: - supports-color dev: true - /vite-plugin-dts@3.6.4(@types/node@20.11.24)(rollup@3.29.4)(typescript@5.3.3)(vite@5.1.6): + /vite-plugin-dts@3.6.4(@types/node@20.11.24)(typescript@5.3.3)(vite@5.1.6): resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -15911,7 +17075,7 @@ packages: optional: true dependencies: '@microsoft/api-extractor': 7.38.5(@types/node@20.11.24) - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.0 '@vue/language-core': 1.8.25(typescript@5.3.3) debug: 4.3.4 kolorist: 1.8.0 @@ -15943,14 +17107,14 @@ packages: '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) '@stylexjs/babel-plugin': 0.3.0(@babel/core@7.23.6)(@babel/traverse@7.24.0)(@babel/types@7.24.0) - vite: 5.1.6(@types/node@20.11.24)(sass@1.69.5) + vite: 5.1.6(@types/node@16.0.0)(sass@1.69.5) transitivePeerDependencies: - '@babel/traverse' - '@babel/types' - supports-color dev: true - /vite@5.0.8(@types/node@20.10.4)(sass@1.69.5): + /vite@5.0.8(@types/node@16.0.0)(sass@1.69.5): resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -15978,7 +17142,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.4 + '@types/node': 16.0.0 esbuild: 0.19.9 postcss: 8.4.32 rollup: 4.9.1 @@ -15987,7 +17151,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.0.8(@types/node@20.11.24)(sass@1.69.5): + /vite@5.0.8(@types/node@20.10.4)(sass@1.69.5): resolution: {integrity: sha512-jYMALd8aeqR3yS9xlHd0OzQJndS9fH5ylVgWdB+pxTwxLKdO1pgC5Dlb398BUxpfaBxa4M9oT7j1g503Gaj5IQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -16015,7 +17179,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.24 + '@types/node': 20.10.4 esbuild: 0.19.9 postcss: 8.4.32 rollup: 4.9.1 @@ -16024,6 +17188,43 @@ packages: fsevents: 2.3.3 dev: true + /vite@5.1.6(@types/node@16.0.0)(sass@1.69.5): + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 16.0.0 + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.12.0 + sass: 1.69.5 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vite@5.1.6(@types/node@20.10.4)(sass@1.69.5): resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -16525,12 +17726,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - /xxhashjs@0.2.2: - resolution: {integrity: sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==} - dependencies: - cuint: 0.2.2 - dev: true - /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -16548,7 +17743,6 @@ packages: /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: false /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} diff --git a/public/README.jpg b/public/README.jpg new file mode 100644 index 0000000..f7573b3 Binary files /dev/null and b/public/README.jpg differ