From 792952de8aed52b934ecd975868a33006950765d Mon Sep 17 00:00:00 2001
From: m6io <147613092+m6io@users.noreply.github.com>
Date: Sun, 20 Apr 2025 13:19:51 -0400
Subject: [PATCH] feat: decoupling templates from schema implementations
(0.0.0-alpha.24)
---
packages/core/package.json | 2 +-
packages/json-schema/package.json | 4 +-
.../json-schema/src/components/Templates.tsx | 1299 ------
packages/json-schema/src/components/index.ts | 1 -
packages/json-schema/src/components/types.ts | 220 +-
packages/json-schema/src/index.ts | 17 +-
packages/yup/package.json | 4 +-
packages/zod/package.json | 4 +-
pnpm-lock.yaml | 3709 ++---------------
website/package.json | 6 +-
.../templates/json-schema/BaseFormRoot.tsx | 86 +
.../json-schema/common/AjvInstance.tsx | 9 +
.../common/ComplexWrapperStyle.tsx | 7 +
.../json-schema/common/ErrorsList.tsx | 19 +
.../common/ReadonlyComplexTemplate.tsx | 33 +
.../common/ReadonlyPrimitiveTemplate.tsx | 21 +
.../json-schema/common/WrapperStyle.ts | 6 +
.../json-schema/hooks/useWindowSize.ts | 32 +
.../array/MultiSelectCheckboxTemplate.tsx | 101 +
.../templates/array/MultiSelectTemplate.tsx | 92 +
.../templates/array/SimpleArrayTemplate.tsx | 142 +
.../templates/array/TupleArrayTemplate.tsx | 126 +
.../templates/boolean/CheckboxTemplate.tsx | 63 +
.../templates/boolean/RadioTemplate.tsx | 73 +
.../templates/json-schema/templates/index.tsx | 211 +
.../templates/object/SimpleObjectTemplate.tsx | 88 +
.../templates/string/TextareaTemplate.tsx | 69 +
.../templates/union/InputTemplate.tsx | 78 +
.../union/MultipleChoiceTemplate.tsx | 123 +
.../templates/union/SelectTemplate.tsx | 95 +
website/src/examples/JsonSchema.tsx | 33 +-
31 files changed, 1908 insertions(+), 4865 deletions(-)
delete mode 100644 packages/json-schema/src/components/Templates.tsx
create mode 100644 website/src/components/templates/json-schema/BaseFormRoot.tsx
create mode 100644 website/src/components/templates/json-schema/common/AjvInstance.tsx
create mode 100644 website/src/components/templates/json-schema/common/ComplexWrapperStyle.tsx
create mode 100644 website/src/components/templates/json-schema/common/ErrorsList.tsx
create mode 100644 website/src/components/templates/json-schema/common/ReadonlyComplexTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/common/ReadonlyPrimitiveTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/common/WrapperStyle.ts
create mode 100644 website/src/components/templates/json-schema/hooks/useWindowSize.ts
create mode 100644 website/src/components/templates/json-schema/templates/array/MultiSelectCheckboxTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/array/MultiSelectTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/array/SimpleArrayTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/array/TupleArrayTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/boolean/CheckboxTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/boolean/RadioTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/index.tsx
create mode 100644 website/src/components/templates/json-schema/templates/object/SimpleObjectTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/string/TextareaTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/union/InputTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/union/MultipleChoiceTemplate.tsx
create mode 100644 website/src/components/templates/json-schema/templates/union/SelectTemplate.tsx
diff --git a/packages/core/package.json b/packages/core/package.json
index e95c504..c05dd2d 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -2,7 +2,7 @@
"name": "@react-formgen/core",
"description": "A headless, type-safe, customizable, and super simple React form generator.",
"private": false,
- "version": "0.0.0-alpha.23",
+ "version": "0.0.0-alpha.24",
"license": "MIT",
"author": "m6io",
"repository": {
diff --git a/packages/json-schema/package.json b/packages/json-schema/package.json
index 9595999..4c1fd55 100644
--- a/packages/json-schema/package.json
+++ b/packages/json-schema/package.json
@@ -2,7 +2,7 @@
"name": "@react-formgen/json-schema",
"description": "A headless, type-safe, customizable, and super simple React form generator.",
"private": false,
- "version": "0.0.0-alpha.23",
+ "version": "0.0.0-alpha.24",
"license": "MIT",
"author": "m6io",
"repository": {
@@ -35,7 +35,7 @@
"analyze": "vite build --mode analyze"
},
"dependencies": {
- "@react-formgen/core": "0.0.0-alpha.23"
+ "@react-formgen/core": "0.0.0-alpha.24"
},
"peerDependencies": {
"ajv": "^8.16.0",
diff --git a/packages/json-schema/src/components/Templates.tsx b/packages/json-schema/src/components/Templates.tsx
deleted file mode 100644
index 6f6220a..0000000
--- a/packages/json-schema/src/components/Templates.tsx
+++ /dev/null
@@ -1,1299 +0,0 @@
-import React from "react";
-import Ajv, { ErrorObject } from "ajv";
-import addFormats from "ajv-formats";
-import {
- StringSchema,
- ArraySchema,
- NumberSchema,
- BooleanSchema,
- ObjectSchema,
- Templates,
- FormRootProps,
- FormgenJSONSchema7,
-} from "./types";
-import {
- useFormDataAtPath,
- useErrorsAtPath,
- useFormContext,
- useArrayTemplate,
- FormState,
- useRenderTemplate,
-} from "..";
-import { generateInitialData, resolveSchema } from "../utils";
-import { useIsRequired } from "../hooks/useIsRequired";
-
-export function useWindowSize(): {
- width: number | null;
- height: number | null;
-} {
- const [size, setSize] = React.useState<{
- width: number | null;
- height: number | null;
- }>({
- width: null,
- height: null,
- });
-
- React.useLayoutEffect(() => {
- const handleResize = () => {
- setSize({
- width: window.innerWidth,
- height: window.innerHeight,
- });
- };
-
- handleResize();
- window.addEventListener("resize", handleResize);
-
- return () => {
- window.removeEventListener("resize", handleResize);
- };
- }, []);
-
- return size;
-}
-
-export const ReadonlyPrimitiveTemplate: React.FC<{
- title?: string;
- value?: string | number | boolean;
- description?: string;
-}> = ({ title, value, description }) => {
- return (
-
- {title &&
{title} }
-
{value ?? "N/A"}
- {description &&
{description} }
-
- );
-};
-
-/**
- * ReadonlyComplexTemplate
- * Renders a readonly view of complex data (objects or arrays) with a title and description.
- * @param {Object} props - The props for the component.
- * @param {string} [props.title] - The title of the field.
- * @param {string} [props.description] - The description of the field.
- * @param {React.ReactNode} props.children - The child components to render.
- * @returns {JSX.Element} - The readonly complex component.
- */
-export const ReadonlyComplexTemplate: React.FC<{
- title?: string;
- description?: string;
- children: React.ReactNode;
-}> = ({ title, description, children }) => {
- return (
-
- {title &&
{title} }
- {description && (
-
{description}
- )}
-
{children}
-
- );
-};
-
-/**
- * ErrorsList
- * Displays a list of validation errors for a given path.
- * @param {Object} props - The props for the component.
- * @param {ErrorObject[]} props.errorsAtPath - The list of error objects at the path.
- * @returns {JSX.Element} - The errors list component.
- */
-export const ErrorsList: React.FC<{ errorsAtPath: ErrorObject[] }> = ({
- errorsAtPath,
-}) => {
- return errorsAtPath.map((error, index) => (
-
- {error.message}
-
- ));
-};
-
-const WrapperStyle: React.CSSProperties = {
- display: "flex",
- flexDirection: "column",
-};
-
-const ComplexWrapperStyle: React.CSSProperties = {
- display: "flex",
- flexWrap: "wrap",
- gap: "1rem",
-};
-
-/**
- * StringTemplate
- * Handles switching between input, select, and date fields based on schema metadata.
- * @param {Object} props - The props for the component.
- * @param {StringSchema} props.schema - The schema for the string property.
- * @param {string[]} props.path - The path to the string property in the form data.
- * @returns {JSX.Element} - The string template component.
- */
-export const StringTemplate: React.FC<{
- schema: StringSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const stringMatchers = [
- {
- matcher: (schema: StringSchema) => schema.enum || schema.oneOf,
- render: () => ,
- // Alternative render method
- // render: () => (
- //
- // ),
- },
- {
- matcher: (schema: StringSchema) =>
- schema.format && ["date", "date-time"].includes(schema.format),
- render: () => (
-
- ),
- },
- {
- matcher: (schema: StringSchema) => schema.format === "email",
- render: () => (
-
- ),
- },
- {
- matcher: (schema: StringSchema) => schema.format === "uri",
- render: () => (
-
- ),
- },
- {
- matcher: () => true,
- render: () => ,
- },
- ];
-
- for (const { matcher, render } of stringMatchers) {
- if (matcher(schema)) {
- return render();
- }
- }
- return ;
-};
-
-/**
- * InputTemplate
- * Renders a text input field for string and number schemas.
- * @param {Object} props - The props for the component.
- * @param {StringSchema | NumberSchema} props.schema - The schema for the input field.
- * @param {string[]} props.path - The path to the input field in the form data.
- * @param {string} [props.htmlType] - The HTML input type (default: "text").
- * @returns {JSX.Element} - The input field component.
- */
-export const InputTemplate: React.FC<{
- schema: StringSchema | NumberSchema;
- path: string[];
- htmlType?: string;
-}> = ({ schema, path, htmlType = "text" }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const size = useWindowSize();
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- );
- }
-
- return (
- 640 ? "min-content" : "100%",
- ...WrapperStyle,
- }}
- >
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- setValueAtPath(e.target.value ? e.target.value : null)}
- placeholder={schema.title || ""}
- style={{
- width: size.width && size.width > 640 ? "12rem" : "100%",
- padding: "8px",
- border: "1px solid #d1d5db",
- borderRadius: "0.375rem",
- boxSizing: "border-box",
- }}
- />
- {schema.description && {schema.description} }
- {errorsAtPath && }
-
- );
-};
-
-// Memoized MultipleChoiceOptionTemplate to prevent re-renders unless its props change
-const MultipleChoiceOptionTemplate: React.FC<{
- value: string;
- title: string;
- checked: boolean;
- onChange: (event: React.ChangeEvent) => void;
- disabled?: boolean;
-}> = React.memo(({ value, title, checked, onChange, disabled }) => {
- return (
-
-
- {title}
-
- );
-});
-
-/**
- * MultipleChoiceTemplate
- * Renders a multiple-choice field as radio buttons for string schemas with enum or oneOf options.
- * @param {Object} props - The props for the component.
- * @param {StringSchema} props.schema - The schema for the multiple-choice field.
- * @param {string[]} props.path - The path to the field in the form data.
- * @returns {JSX.Element} - The multiple-choice field component.
- */
-export const MultipleChoiceTemplate: React.FC<{
- schema: StringSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- const handleChange = React.useCallback(
- (event: React.ChangeEvent) => {
- setValueAtPath(event.target.value);
- },
- [setValueAtPath]
- );
-
- // Memoize the options to prevent unnecessary recalculations
- const opts: { value: string; title: string }[] = React.useMemo(() => {
- const options: { value: string; title: string }[] = [];
- if (schema.enum) {
- schema.enum.forEach((opt) => options.push({ value: opt, title: opt }));
- } else if (schema.oneOf) {
- schema.oneOf.forEach((opt) =>
- options.push({ value: opt.const, title: opt.title ?? opt.const })
- );
- }
- return options;
- }, [schema.enum, schema.oneOf]);
-
- // Memoize the option rendering to avoid recreating the function on every render
- const renderOption = React.useCallback(
- (option: { value: string; title: string }, index: number) => {
- return (
-
- );
- },
- [valueAtPath, handleChange, schema.readOnly]
- );
-
- if (readonly) {
- const selectedOption =
- schema.enum?.find((opt) => opt === valueAtPath) ||
- schema.oneOf?.find((opt) => opt.const === valueAtPath)?.title ||
- valueAtPath;
- return (
-
- );
- }
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
-
{opts.map((option, index) => renderOption(option, index))}
- {schema.description &&
{schema.description} }
- {errorsAtPath &&
}
-
- );
-};
-
-/**
- * TextareaTemplate
- * Renders a textarea input for multi-line string input.
- * @param {Object} props - The props for the component.
- * @param {StringSchema} props.schema - The schema for the textarea field.
- * @param {string[]} props.path - The path to the textarea field in the form data.
- * @returns {JSX.Element} - The textarea field component.
- */
-export const TextareaTemplate: React.FC<{
- schema: StringSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- );
- }
-
- const handleChange = (event: React.ChangeEvent) => {
- setValueAtPath(event.target.value);
- };
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
-
- {schema.description && {schema.description} }
- {errorsAtPath && }
-
- );
-};
-
-/**
- * SelectTemplate
- * Renders a select dropdown field for string or number schemas with enum or oneOf options.
- * @param {StringSchema|NumberSchema} props.schema - The schema for the select field.
- * @param {string[]} props.path - The path to the select field in the form data.
- * @returns {JSX.Element} - The select field component.
- */
-export const SelectTemplate: React.FC<{
- schema: StringSchema | NumberSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, "");
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const size = useWindowSize();
- const required = useIsRequired(path);
-
- if (readonly) {
- const selectedOption =
- schema.enum?.find((opt) => opt === valueAtPath) ||
- schema.oneOf?.find((opt) => opt.const === valueAtPath)?.title ||
- valueAtPath;
-
- return (
-
- );
- }
-
- const handleChange = (event: React.ChangeEvent) => {
- setValueAtPath(event.target.value);
- };
-
- return (
- 640 ? "min-content" : "100%",
- ...WrapperStyle,
- }}
- >
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- 640 ? "12rem" : "100%",
- padding: "8px",
- border: "1px solid #d1d5db",
- borderRadius: "0.375rem",
- boxSizing: "border-box",
- }}
- >
-
- {schema.enum
- ? schema.enum.map((option, index) => (
-
- {option}
-
- ))
- : schema.oneOf?.map((option) => (
-
- {option.title}
-
- ))}
-
- {schema.description && {schema.description} }
- {errorsAtPath && }
-
- );
-};
-
-/**
- * NumberTemplate
- * Renders a number input or select field based on the number schema.
- * @param {Object} props - The props for the component.
- * @param {NumberSchema} props.schema - The schema for the number property.
- * @param {string[]} props.path - The path to the number property in the form data.
- * @returns {JSX.Element} - The number template component.
- */
-export const NumberTemplate: React.FC<{
- schema: NumberSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const numberMatchers = [
- {
- matcher: (schema: NumberSchema) => schema.enum || schema.oneOf,
- render: () => ,
- },
- {
- matcher: () => true,
- render: () => (
-
- ),
- },
- ];
-
- for (const { matcher, render } of numberMatchers) {
- if (matcher(schema)) {
- return render();
- }
- }
- return ;
-};
-
-/**
- * BooleanTemplate
- * Renders a checkbox or radio buttons for boolean schemas.
- * @param {Object} props - The props for the component.
- * @param {BooleanSchema} props.schema - The schema for the boolean property.
- * @param {string[]} props.path - The path to the boolean property in the form data.
- * @returns {JSX.Element} - The boolean template component.
- */
-export const BooleanTemplate: React.FC<{
- schema: BooleanSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const booleanMatchers = [
- {
- matcher: (schema: BooleanSchema) => !schema.oneOf,
- render: () => ,
- },
- {
- matcher: () => true,
- render: () => ,
- },
- ];
-
- for (const { matcher, render } of booleanMatchers) {
- if (matcher(schema)) {
- return render();
- }
- }
- return ;
-};
-
-/**
- * RadioTemplate
- * Renders radio buttons for boolean schemas with oneOf options.
- * @param {Object} props - The props for the component.
- * @param {BooleanSchema} props.schema - The schema for the radio boolean field.
- * @param {string[]} props.path - The path to the radio boolean field in the form data.
- * @returns {JSX.Element} - The radio boolean field component.
- */
-export const RadioTemplate: React.FC<{
- schema: BooleanSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- );
- }
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.oneOf?.map((option) => (
-
- setValueAtPath(option.const)}
- style={{
- height: "16px",
- width: "16px",
- marginRight: "8px",
- }}
- />
- {option.title}
-
- ))}
- {schema.description && {schema.description} }
- {errorsAtPath && }
-
- );
-};
-
-/**
- * CheckboxTemplate
- * Renders a checkbox for boolean schemas without oneOf options.
- * @param {Object} props - The props for the component.
- * @param {BooleanSchema} props.schema - The schema for the checkbox boolean field.
- * @param {string[]} props.path - The path to the checkbox boolean field in the form data.
- * @returns {JSX.Element} - The checkbox boolean field component.
- */
-export const CheckboxTemplate: React.FC<{
- schema: BooleanSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- );
- }
-
- return (
-
-
- setValueAtPath(event.target.checked)}
- style={{ marginRight: "8px" }}
- />
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
-
- {schema.description &&
{schema.description} }
- {errorsAtPath &&
}
-
- );
-};
-
-/**
- * ObjectTemplate
- * Renders an object schema by delegating to the appropriate template.
- * @param {Object} props - The props for the component.
- * @param {ObjectSchema} props.schema - The schema of the object.
- * @param {string[]} props.path - The path to the object in the form data.
- * @returns {JSX.Element} - The object template component.
- */
-export const ObjectTemplate: React.FC<{
- schema: ObjectSchema;
- path: string[];
-}> = ({ schema, path }) => {
- return ;
-};
-
-/**
- * SimpleObjectTemplate
- * Renders a simple object schema by rendering each property.
- * @param {Object} props - The props for the component.
- * @param {ObjectSchema} props.schema - The schema of the object.
- * @param {string[]} props.path - The path to the object in the form data.
- * @returns {JSX.Element} - The simple object template component.
- */
-export const SimpleObjectTemplate: React.FC<{
- schema: ObjectSchema;
- path: string[];
-}> = ({ schema, path }) => {
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const RenderTemplate = useRenderTemplate();
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- {schema.properties && Object.keys(schema.properties).length > 0 ? (
- Object.keys(schema.properties).map((key) => (
-
- ))
- ) : (
- No data available
- )}
-
- );
- }
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.description &&
{schema.description} }
- {errorsAtPath &&
}
-
- {schema.properties &&
- Object.keys(schema.properties).map((key) => (
-
- ))}
-
-
- );
-};
-
-/**
- * ArrayTemplate
- * Renders an array field, choosing the appropriate template based on the schema.
- * @param {Object} props - The props for the component.
- * @param {ArraySchema} props.schema - The schema for the array property.
- * @param {string[]} props.path - The path to the array property in the form data.
- * @returns {JSX.Element} - The array template component.
- */
-export const ArrayTemplate: React.FC<{
- schema: ArraySchema;
- path: string[];
-}> = ({ schema, path }) => {
- const arrayMatchers = [
- {
- matcher: (schema: ArraySchema) => Array.isArray(schema.items),
- render: () => ,
- },
- {
- matcher: (schema: ArraySchema) =>
- schema.uniqueItems &&
- schema.items &&
- !Array.isArray(schema.items) &&
- typeof schema.items === "object" &&
- ((schema.items as FormgenJSONSchema7).enum ||
- (schema.items as FormgenJSONSchema7).oneOf),
- render: () => ,
- },
- {
- matcher: () => true,
- render: () => ,
- },
- ];
-
- for (const { matcher, render } of arrayMatchers) {
- if (matcher(schema)) {
- return render();
- }
- }
-
- return ;
-};
-
-/**
- * TupleArrayTemplate
- * Renders a tuple array where each item has a different schema.
- * @param {Object} props - The props for the component.
- * @param {ArraySchema} props.schema - The schema for the array property.
- * @param {string[]} props.path - The path to the array property in the form data.
- * @returns {JSX.Element} - The tuple array template component.
- */
-export const TupleArrayTemplate: React.FC<{
- schema: ArraySchema;
- path: string[];
-}> = ({ schema, path }) => {
- // To account for the elements of the tuple array having their respective data generated at form creation and the effect this has on validation, we need to first check if this tuple is a required property. If it's not, then we should reset the tuple's initial data to an empty array.
- const rootSchema = useFormContext((state: FormState) => state.schema);
- // We can use the current path and cross reference it with the root schema to determine if this tuple instance is a required property of its parent object.
- const parentPath = path.slice(0, -1);
- // We'll get the parent schema by iterating through the root schema using the parent path, resolving any $ref schemas along the way.
- let parentSchema = rootSchema;
- for (const key of parentPath) {
- const newSchema =
- parentSchema.type === "object"
- ? (resolveSchema(
- parentSchema.properties?.[key] as FormgenJSONSchema7,
- rootSchema.definitions
- ) as FormgenJSONSchema7)
- : (resolveSchema(
- parentSchema.items as FormgenJSONSchema7,
- rootSchema.definitions
- ) as FormgenJSONSchema7);
-
- parentSchema = newSchema;
- }
-
- const isRequired = parentSchema?.required?.includes(path[path.length - 1]);
-
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path);
- const [parentValue, setParentValue] = useFormDataAtPath(parentPath);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const RenderTemplate = useRenderTemplate();
- const required = useIsRequired(path);
-
- return (
-
- {valueAtPath ? (
- <>
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.description &&
{schema.description} }
-
- {errorsAtPath && }
- {Array.isArray(schema.items) &&
- schema.items.map((itemSchema, index) => (
-
- ))}
-
- {/* If the tuple is not required, render a button to remove it */}
- {!readonly && !isRequired && valueAtPath && (
-
- setParentValue({
- ...parentValue,
- [path[path.length - 1]]: undefined,
- })
- }
- type="button"
- style={{
- width: "100%",
- }}
- >
- Remove {schema.title ?? path[path.length - 1]}
-
- )}
- >
- ) : (
- !readonly && (
-
setValueAtPath([])}
- type="button"
- style={{
- width: "100%",
- }}
- >
- Add {schema.title ?? path[path.length - 1]}
-
- )
- )}
-
- );
-};
-
-/**
- * MultiSelectCheckboxTemplate
- * Renders a set of checkboxes for multi-select arrays with unique items.
- * @param {Object} props - The props for the component.
- * @param {ArraySchema} props.schema - The schema for the array property.
- * @param {string[]} props.path - The path to the array property in the form data.
- * @returns {JSX.Element} - The multi-select checkbox component.
- */
-export const MultiSelectCheckboxTemplate: React.FC<{
- schema: ArraySchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, []);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- const options = React.useMemo(() => {
- if (typeof schema.items === "object" && !Array.isArray(schema.items)) {
- if ("enum" in schema.items && schema.items.enum) {
- return schema.items.enum.map((option) => ({
- value: option,
- label: option,
- }));
- } else if ("oneOf" in schema.items && schema.items.oneOf) {
- return schema.items.oneOf
- .filter(
- (item): item is FormgenJSONSchema7 =>
- typeof item === "object" && !Array.isArray(item)
- )
- .map((option) => ({
- value: option.const,
- label: option.title,
- }));
- }
- }
- return [];
- }, [schema]);
-
- const handleChange = (event: React.ChangeEvent) => {
- const selectedValue = event.target.value;
- const updatedValues = valueAtPath.includes(selectedValue)
- ? valueAtPath.filter((item: string) => item !== selectedValue)
- : [...valueAtPath, selectedValue];
- setValueAtPath(updatedValues);
- };
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.description &&
{schema.description} }
-
- {options
- .filter(
- (option) => option.value !== undefined && option.label !== undefined
- )
- .map((option) => (
-
-
- {String(option.label)}
-
- ))}
-
- {errorsAtPath &&
}
-
- );
-};
-
-/**
- * MultiSelectTemplate
- * Renders a multi-select dropdown for arrays with unique items.
- * @param {Object} props - The props for the component.
- * @param {ArraySchema} props.schema - The schema for the array property.
- * @param {string[]} props.path - The path to the array property in the form data.
- * @returns {JSX.Element} - The multi-select field component.
- */
-export const MultiSelectTemplate: React.FC<{
- schema: ArraySchema;
- path: string[];
-}> = ({ schema, path }) => {
- const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, []);
- const errorsAtPath = useErrorsAtPath(path);
- const readonly = useFormContext((state: FormState) => state.readonly);
- const required = useIsRequired(path);
-
- const options = React.useMemo(() => {
- if (typeof schema.items === "object" && !Array.isArray(schema.items)) {
- if ("enum" in schema.items && schema.items.enum) {
- return schema.items.enum.map((option) => ({
- value: option,
- label: option,
- }));
- } else if ("oneOf" in schema.items && schema.items.oneOf) {
- return schema.items.oneOf
- .filter(
- (item): item is FormgenJSONSchema7 =>
- typeof item === "object" && !Array.isArray(item)
- )
- .map((option) => ({
- value: option.const,
- label: option.title,
- }));
- }
- }
- return [];
- }, [schema]);
-
- const handleChange = (event: React.ChangeEvent) => {
- const selectedOptions = Array.from(
- event.target.selectedOptions,
- (option) => option.value
- );
- setValueAtPath(selectedOptions);
- };
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.description && {schema.description} }
-
- {options.map((option) => (
-
- {String(option.label)}
-
- ))}
-
- {errorsAtPath && }
-
- );
-};
-
-/**
- * SimpleArrayTemplate
- * Renders an array schema where items are of the same type.
- * @param {Object} props - The props for the component.
- * @param {ArraySchema} props.schema - The schema of the array.
- * @param {string[]} props.path - The path to the array in the form data.
- * @returns {JSX.Element} - The simple array template component.
- */
-export const SimpleArrayTemplate: React.FC<{
- schema: ArraySchema;
- path: string[];
-}> = ({ schema, path }) => {
- const readonly = useFormContext((state: FormState) => state.readonly);
- const definitions = useFormContext(
- (state: FormState) => state.schema.definitions || {}
- );
- const RenderTemplate = useRenderTemplate();
-
- const { valueAtPath, errorsAtPath, moveItem, removeItem, addItem } =
- useArrayTemplate(path, () =>
- generateInitialData(schema.items as FormgenJSONSchema7, definitions)
- );
- const required = useIsRequired(path);
-
- if (readonly) {
- return (
-
- {Array.isArray(valueAtPath) && valueAtPath.length > 0 ? (
- valueAtPath.map((_, index: number) => (
-
-
-
- ))
- ) : (
- No items available
- )}
-
- );
- }
-
- return (
-
- {schema.title && (
-
- {schema.title}
- {required && * }
-
- )}
- {schema.description &&
{schema.description} }
- {errorsAtPath &&
}
-
- {schema.items &&
- Array.isArray(valueAtPath) &&
- valueAtPath.map((_, index: number) => (
-
-
-
- moveItem(index, "up")}
- disabled={index === 0}
- >
- Move Up
-
- moveItem(index, "down")}
- disabled={index === valueAtPath.length - 1}
- >
- Move Down
-
- removeItem(index)}>
- Remove
-
-
-
- ))}
-
- Add Item
-
-
-
- );
-};
-
-export const BaseTemplates: Templates = {
- StringTemplate: StringTemplate,
- NumberTemplate: NumberTemplate,
- BooleanTemplate: BooleanTemplate,
- ObjectTemplate: ObjectTemplate,
- ArrayTemplate: ArrayTemplate,
-};
-
-// Single shared Ajv instance with formats
-export const AjvInstance = new Ajv({
- allErrors: true,
- verbose: true,
-}).addKeyword("uiSchema");
-addFormats(AjvInstance);
-
-/**
- * BaseFormRoot
- * The root form component that renders the form based on the schema and handles submission.
- * @param {FormRootProps} props - The props for the BaseFormRoot.
- * @param {Function} props.onSubmit - Callback function when form is submitted successfully.
- * @param {Function} props.onError - Callback function when form submission has errors.
- * @returns {JSX.Element} - The form component.
- */
-export const BaseFormRoot: React.FC = ({
- onSubmit,
- onError,
-}) => {
- const readonly = useFormContext((state: FormState) => state.readonly);
- const schema = useFormContext((state: FormState) => state.schema);
- const formData = useFormContext((state: FormState) => state.formData);
- const setErrors = useFormContext((state: FormState) => state.setErrors);
- const RenderTemplate = useRenderTemplate();
- const [formBorder, setFormBorder] = React.useState("none");
-
- if (readonly) {
- return (
-
- {Object.keys(schema.properties || {}).map((key) => (
-
- ))}
-
- );
- }
-
- const handleSubmit = (event: React.FormEvent) => {
- event.preventDefault();
- const validate = AjvInstance.compile(schema);
- const valid = validate(formData);
- if (valid) {
- setFormBorder("1px solid green");
- setErrors(null);
- onSubmit(formData);
- } else {
- setFormBorder("1px solid red");
- setErrors(validate.errors ?? null);
- onError(validate.errors ?? [], formData);
- }
- };
-
- return (
-
- );
-};
diff --git a/packages/json-schema/src/components/index.ts b/packages/json-schema/src/components/index.ts
index d4c8f5b..ba5f34c 100644
--- a/packages/json-schema/src/components/index.ts
+++ b/packages/json-schema/src/components/index.ts
@@ -1,3 +1,2 @@
export * from "./types";
export * from "./RenderTemplate";
-export * from "./Templates";
diff --git a/packages/json-schema/src/components/types.ts b/packages/json-schema/src/components/types.ts
index 04b4862..270e1a7 100644
--- a/packages/json-schema/src/components/types.ts
+++ b/packages/json-schema/src/components/types.ts
@@ -2,35 +2,58 @@ import { ErrorObject } from "ajv";
import { JSONSchema7 } from "json-schema";
/**
- * Represents the props for the Form.
- * @typedef {Object} FormProps
- * @property {JSONSchema7 | FormgenJSONSchema7} schema - The schema for the form.
- * @property {{ [key: string]: unknown }} [initialData] - The initial data for the form.
- * @property {(data: { [key: string]: unknown }) => void} onSubmit - The function to call when the form is submitted.
- * @property {(errors: ErrorObject[], data?: { [key: string]: unknown }) => void} onError - The function to call when there are errors in the form.
- * @property {Templates} [templates] - The typed templates to use for the form.
- * @property {React.FC} [formRoot] - The custom form component to use for the form.
- * @property {React.FC} [displayTemplate] - The custom display component to use for the form.
- * @property {boolean} [readonly] - Whether the form is read-only.
+ * Represents the props for the Form component.
*
+ * @property {JSONSchema7 | FormgenJSONSchema7} schema - The JSON Schema for the form
+ * @property {{ [key: string]: unknown }} [initialData] - Initial form data
+ * @property {(data: { [key: string]: unknown }) => void} [onSubmit] - Called on successful form submission
+ * @property {(errors: ErrorObject[], data?: { [key: string]: unknown }) => void} [onError] - Called when form has validation errors
+ * @property {Templates} templates - Custom templates used in rendering type-specific components
+ * @property {React.FC} formRoot - Custom form root component
+ * @property {React.FC} [renderTemplate] - Custom template renderer override
+ * @property {boolean} [readonly] - Whether to render the form in readonly mode
+ * @property {boolean} [enableDevtools] - Whether to enable Zustand devtools for debugging
*/
export type FormProps = {
schema: JSONSchema7 | FormgenJSONSchema7;
initialData?: { [key: string]: unknown };
onSubmit?: (data: { [key: string]: unknown }) => void;
onError?: (errors: ErrorObject[], data?: { [key: string]: unknown }) => void;
- templates?: Templates;
- formRoot?: React.FC;
- displayTemplate?: React.FC;
+ templates: Templates; // Required
+ formRoot: React.FC; // Required
+ renderTemplate?: React.FC;
readonly?: boolean;
+ enableDevtools?: boolean;
};
/**
- * Represents the props for the FormRoot.
- * @typedef {Object} FormRootProps
- * @property {(data: { [key: string]: unknown }) => void} onSubmit - The function to call when the form is submitted.
- * @property {(errors: ErrorObject[], data?: { [key: string]: unknown }) => void} onError - The function to call when there are errors in the form.
+ * Represents the props for the FormProvider component.
*
+ * @property {JSONSchema7 | FormgenJSONSchema7} schema - The JSON Schema for the form
+ * @property {{ [key: string]: unknown }} [initialData] - Initial form data
+ * @property {React.ReactNode} children - Child components that will have access to the form context
+ * @property {Templates} templates - Custom templates used in rendering type-specific components
+ * @property {boolean} [readonly] - Whether to render the form in readonly mode
+ * @property {React.FC} [renderTemplate] - Optional custom render template function
+ * @property {boolean} [enableDevtools] - Whether to enable Zustand devtools for debugging
+ */
+export type FormProviderProps = {
+ schema: JSONSchema7 | FormgenJSONSchema7;
+ initialData?: { [key: string]: unknown };
+ children: React.ReactNode;
+ templates: Templates; // Required
+ readonly?: boolean;
+ renderTemplate?: React.FC;
+ enableDevtools?: boolean;
+};
+
+/**
+ * Represents the props for the FormRoot component.
+ * This is the component responsible for rendering the form container, handling form submission,
+ * and displaying validation errors.
+ *
+ * @property {(data: { [key: string]: unknown }) => void} onSubmit - Called on successful form submission
+ * @property {(errors: ErrorObject[], data?: { [key: string]: unknown }) => void} onError - Called when form has validation errors
*/
export type FormRootProps = {
onSubmit: (data: { [key: string]: unknown }) => void;
@@ -39,9 +62,10 @@ export type FormRootProps = {
/**
* Represents the UI schema for a property.
- * @typedef {Object} UISchema
- * @property {string} component - The component to use for the property.
- * @property {Record} [props] - The props to pass to the component.
+ * This can be used to provide UI-specific configuration for a schema property.
+ *
+ * @property {string} component - The component to use for the property
+ * @property {Record} [props] - The props to pass to the component
*/
export interface UISchema {
component: string;
@@ -50,12 +74,12 @@ export interface UISchema {
/**
* Represents an extended JSONSchema7 with additional properties for customizing forms.
- * @typedef {Object} FormgenJSONSchema7
+ * This adds form-specific extensions to the standard JSON Schema.
+ *
* @extends {Omit}
- * @property {UISchema} [uiSchema] - The UI schema for the property.
- * @property {Record} [properties] - The properties of the object.
- * @property {Record} [definitions] - The definitions of the object.
- * @returns {FormgenJSONSchema7} The extended JSONSchema7.
+ * @property {UISchema} [uiSchema] - UI-specific configuration
+ * @property {Record} [properties] - Object properties
+ * @property {Record} [definitions] - Schema definitions
*/
export interface FormgenJSONSchema7
extends Omit {
@@ -66,11 +90,11 @@ export interface FormgenJSONSchema7
/**
* Custom OneOf type for strings.
- * @typedef {Object} StringOneOf
- * @property {string} const - The value of the string property.
- * @property {string} title - The title of the string property.
- * @property {string} [description] - The description of the string property.
+ * Used in the StringSchema to provide multiple-choice options with labels.
*
+ * @property {string} const - The actual string value
+ * @property {string} [title] - Display label for the option
+ * @property {string} [description] - Optional description for the option
*/
export type StringOneOf = {
const: string;
@@ -79,25 +103,25 @@ export type StringOneOf = {
};
/**
- * Represents a base string schema. This is used as a base for the StringSchema type, for instances where the constraints are not needed.
- * @typedef {Object} BaseStringSchema
- * @extends {Omit}
- * @property {"string"} type - The type of the schema.
+ * Represents a base string schema.
+ * This is used as a base for the StringSchema type, for instances where all constraints are not needed.
*
+ * @extends {Omit}
+ * @property {"string"} type - The schema type
*/
export interface BaseStringSchema extends Omit {
type: "string";
}
/**
- * Represents the recommended string schema with additional UI options.
- * @typedef {Object} StringSchema
- * @extends {Omit}
- * @property {"string"} type - The type of the schema.
- * @property {string[]} [enum] - The enum options for the string property. This is evaluated first before the oneOf options.
- * @property {StringOneOf[]} [oneOf] - The oneOf options for the string property.
- * @property {uiSchema} [UISchema] - The UI schema for the string property.
+ * Represents a fully-featured string schema with additional UI options.
+ * Use this type when implementing your StringTemplate component.
*
+ * @extends {Omit}
+ * @property {"string"} type - The schema type
+ * @property {string[]} [enum] - Dropdown options
+ * @property {StringOneOf[]} [oneOf] - Multiple-choice options with labels
+ * @property {UISchema} [uiSchema] - UI-specific configuration
*/
export interface StringSchema
extends Omit {
@@ -109,11 +133,11 @@ export interface StringSchema
/**
* Custom OneOf type for numbers.
- * @typedef {Object} NumberOneOf
- * @property {number} const - The value of the number property.
- * @property {string} title - The title of the number property.
- * @property {string} [description] - The description of the number property.
+ * Used in the NumberSchema to provide multiple-choice options with labels.
*
+ * @property {number} const - The actual numeric value
+ * @property {string} [title] - Display label for the option
+ * @property {string} [description] - Optional description for the option
*/
export type NumberOneOf = {
const: number;
@@ -122,25 +146,25 @@ export type NumberOneOf = {
};
/**
- * Represents a base number schema. This is used as a base for the NumberSchema type, for instances where the constraints are not needed.
- * @typedef {Object} BaseNumberSchema
- * @extends {Omit}
- * @property {"number" | "integer"} type - The type of the schema.
+ * Represents a base number schema.
+ * This is used as a base for the NumberSchema type, for instances where all constraints are not needed.
*
+ * @extends {Omit}
+ * @property {"number" | "integer"} type - The schema type
*/
export interface BaseNumberSchema extends Omit {
type: "number" | "integer";
}
/**
- * Represents the recommended number schema with additional UI options.
- * @typedef {Object} NumberSchema
- * @extends {Omit}
- * @property {"number" | "integer"} type - The type of the schema.
- * @property {number[]} [enum] - The enum options for the number property. This is evaluated first before the oneOf options.
- * @property {NumberOneOf[]} [oneOf] - The oneOf options for the number property.
- * @property {uiSchema} [UISchema] - The UI schema for the number property.
+ * Represents a fully-featured number schema with additional UI options.
+ * Use this type when implementing your NumberTemplate component.
*
+ * @extends {Omit}
+ * @property {"number" | "integer"} type - The schema type
+ * @property {number[]} [enum] - Dropdown options
+ * @property {NumberOneOf[]} [oneOf] - Multiple-choice options with labels
+ * @property {UISchema} [uiSchema] - UI-specific configuration
*/
export interface NumberSchema
extends Omit {
@@ -152,10 +176,10 @@ export interface NumberSchema
/**
* Custom OneOf type for booleans.
- * @typedef {Object} BooleanOneOf
- * @property {boolean} const - The value of the boolean property.
- * @property {string} title - The title of the boolean property.
+ * Used in the BooleanSchema to provide labeled boolean options (e.g., "Yes"/"No").
*
+ * @property {boolean} const - The actual boolean value
+ * @property {string} [title] - Display label for the option
*/
export type BooleanOneOf = {
const: boolean;
@@ -163,22 +187,24 @@ export type BooleanOneOf = {
};
/**
- * Represents a base boolean schema. This is used as a base for the BooleanSchema type, for instances where the constraints are not needed.
- * @typedef {Object} BaseBooleanSchema
+ * Represents a base boolean schema.
+ * This is used as a base for the BooleanSchema type, for instances where all constraints are not needed.
+ *
* @extends {Omit}
- * @property {"boolean"} type - The type of the schema.
+ * @property {"boolean"} type - The schema type
*/
export interface BaseBooleanSchema extends Omit {
type: "boolean";
}
/**
- * Represents the recommended boolean schema with additional UI options.
- * @typedef {Object} BooleanSchema
- * @extends { Omit}
- * @property {BooleanOneOf[]} oneOf - The oneOf options for the boolean property.
- * @property {uiSchema} [UISchema] - The UI schema for the string property.
+ * Represents a fully-featured boolean schema with additional UI options.
+ * Use this type when implementing your BooleanTemplate component.
*
+ * @extends {Omit}
+ * @property {"boolean"} type - The schema type
+ * @property {BooleanOneOf[]} [oneOf] - Options for rendering as radio buttons with labels
+ * @property {UISchema} [uiSchema] - UI-specific configuration
*/
export interface BooleanSchema
extends Omit {
@@ -189,22 +215,22 @@ export interface BooleanSchema
/**
* Represents a base object schema.
- * @typedef {Object} BaseObjectSchema
- * @extends {Omit}
- * @property {"object"} type - The type of the schema.
+ * This is used as a base for the ObjectSchema type, for instances where all constraints are not needed.
*
+ * @extends {Omit}
+ * @property {"object"} type - The schema type
*/
export interface BaseObjectSchema extends Omit {
type: "object";
}
/**
- * Represents the recommended object schema with additional UI options.
- * @typedef {Object} ObjectSchema
- * @extends {Omit}
- * @property {"object"} type - The type of the schema.
- * @property {uiSchema} [UISchema] - The UI schema for the object property.
+ * Represents a fully-featured object schema with additional UI options.
+ * Use this type when implementing your ObjectTemplate component.
*
+ * @extends {Omit}
+ * @property {"object"} type - The schema type
+ * @property {UISchema} [uiSchema] - UI-specific configuration
*/
export interface ObjectSchema extends Omit {
type: "object";
@@ -213,20 +239,22 @@ export interface ObjectSchema extends Omit {
/**
* Represents a base array schema.
- * @typedef {Object} BaseArraySchema
+ * This is used as a base for the ArraySchema type, for instances where all constraints are not needed.
+ *
* @extends {Omit}
- * @property {"array"} type - The type of the schema.
+ * @property {"array"} type - The schema type
*/
export interface BaseArraySchema extends Omit {
type: "array";
}
/**
- * Represents the recommended array schema with additional UI options.
- * @typedef {Object} ArraySchema
+ * Represents a fully-featured array schema with additional UI options.
+ * Use this type when implementing your ArrayTemplate component.
+ *
* @extends {Omit}
- * @property {"array"} type - The type of the schema.
- * @property {uiSchema} [UISchema] - The UI schema for the array property.
+ * @property {"array"} type - The schema type
+ * @property {UISchema} [uiSchema] - UI-specific configuration
*/
export interface ArraySchema extends Omit {
type: "array";
@@ -234,14 +262,14 @@ export interface ArraySchema extends Omit {
}
/**
- * Represents the custom templates for the form.
- * @typedef {Object} Templates
- * @property {React.FC<{ schema: StringSchema; path: string[] }>} StringTemplate - The custom template for strings.
- * @property {React.FC<{ schema: NumberSchema; path: string[] }>} NumberTemplate - The custom template for numbers.
- * @property {React.FC<{ schema: BooleanSchema; path: string[] }>} BooleanTemplate - The custom template for booleans.
- * @property {React.FC<{ schema: BaseObjectSchema; path: string[] }>} ObjectTemplate - The custom template for objects.
- * @property {React.FC<{ schema: BaseArraySchema; path: string[] }>} ArrayTemplate - The custom template for arrays.
- * @returns {Templates} The custom templates for the form.
+ * Represents the custom templates for each schema type.
+ * You MUST provide implementations for all of these template components.
+ *
+ * @property {React.FC<{ schema: StringSchema; path: string[] }>} StringTemplate - Template for string-schema
+ * @property {React.FC<{ schema: NumberSchema; path: string[] }>} NumberTemplate - Template for number-schema
+ * @property {React.FC<{ schema: BooleanSchema; path: string[] }>} BooleanTemplate - Template for boolean-schema
+ * @property {React.FC<{ schema: ObjectSchema; path: string[] }>} ObjectTemplate - Template for object-schema
+ * @property {React.FC<{ schema: ArraySchema; path: string[] }>} ArrayTemplate - Template for array-schema
*/
export type Templates = {
StringTemplate:
@@ -254,19 +282,19 @@ export type Templates = {
| React.FC<{ schema: BooleanSchema; path: string[] }>
| React.FC<{ schema: BaseBooleanSchema; path: string[] }>;
ObjectTemplate:
- | React.FC<{ schema: BaseObjectSchema; path: string[] }>
- | React.FC<{ schema: ObjectSchema; path: string[] }>;
+ | React.FC<{ schema: ObjectSchema; path: string[] }>
+ | React.FC<{ schema: BaseObjectSchema; path: string[] }>;
ArrayTemplate:
- | React.FC<{ schema: BaseArraySchema; path: string[] }>
- | React.FC<{ schema: ArraySchema; path: string[] }>;
+ | React.FC<{ schema: ArraySchema; path: string[] }>
+ | React.FC<{ schema: BaseArraySchema; path: string[] }>;
};
/**
* Props for the RenderTemplate component.
- * @interface RenderTemplateProps
- * @property {JSONSchema7 | FormgenJSONSchema7} schema - The schema to render.
- * @property {string[]} path - The path to the schema.
- * @returns {JSX.Element} The template component.
+ * This component is responsible for rendering the correct template based on the schema type.
+ *
+ * @property {JSONSchema7 | FormgenJSONSchema7} schema - The schema to render
+ * @property {string[]} path - The path to the property corresponding to the schema
*/
export interface RenderTemplateProps {
schema: JSONSchema7 | FormgenJSONSchema7;
diff --git a/packages/json-schema/src/index.ts b/packages/json-schema/src/index.ts
index 9a75e61..3f90ec5 100644
--- a/packages/json-schema/src/index.ts
+++ b/packages/json-schema/src/index.ts
@@ -6,10 +6,10 @@ import {
import { ErrorObject } from "ajv";
import { generateInitialData } from "./utils";
import {
- BaseFormRoot,
- BaseTemplates,
RenderTemplate as DefaultRenderTemplate,
FormgenJSONSchema7,
+ FormProviderProps,
+ FormProps,
} from "./components";
const createInitialData = (schema: JSONSchema7 | FormgenJSONSchema7) =>
@@ -38,20 +38,18 @@ const getErrorsAtPath = (
};
const {
- FormProvider,
+ FormProvider: CoreFormProvider,
useFormContext,
useFormDataAtPath,
useErrorsAtPath,
useArrayTemplate,
useTemplates,
useRenderTemplate,
- Form,
+ Form: CoreForm,
} = createFormProviderAndHooks(
createInitialData,
getErrorsAtPath,
- DefaultRenderTemplate,
- BaseFormRoot,
- BaseTemplates
+ DefaultRenderTemplate
);
export type FormState = CoreFormState<
@@ -59,7 +57,12 @@ export type FormState = CoreFormState<
ErrorObject
>;
+const FormProvider = CoreFormProvider as React.FC;
+const Form = CoreForm as React.FC;
+
export {
+ CoreFormProvider,
+ CoreForm,
FormProvider,
useFormContext,
useFormDataAtPath,
diff --git a/packages/yup/package.json b/packages/yup/package.json
index 18b73da..6cac1c8 100644
--- a/packages/yup/package.json
+++ b/packages/yup/package.json
@@ -2,7 +2,7 @@
"name": "@react-formgen/yup",
"description": "A headless, type-safe, customizable, and super simple React form generator.",
"private": false,
- "version": "0.0.0-alpha.23",
+ "version": "0.0.0-alpha.24",
"license": "MIT",
"author": "m6io",
"repository": {
@@ -33,7 +33,7 @@
"analyze": "vite build --mode analyze"
},
"dependencies": {
- "@react-formgen/core": "0.0.0-alpha.23"
+ "@react-formgen/core": "0.0.0-alpha.24"
},
"peerDependencies": {
"react": "^18.3.1",
diff --git a/packages/zod/package.json b/packages/zod/package.json
index c0a3845..d856a4f 100644
--- a/packages/zod/package.json
+++ b/packages/zod/package.json
@@ -2,7 +2,7 @@
"name": "@react-formgen/zod",
"description": "A headless, type-safe, customizable, and super simple React form generator.",
"private": false,
- "version": "0.0.0-alpha.23",
+ "version": "0.0.0-alpha.24",
"license": "MIT",
"author": "m6io",
"repository": {
@@ -33,7 +33,7 @@
"analyze": "vite build --mode analyze"
},
"dependencies": {
- "@react-formgen/core": "0.0.0-alpha.23"
+ "@react-formgen/core": "0.0.0-alpha.24"
},
"peerDependencies": {
"react": "^18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ac6c9bf..c5f83e7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -18,428 +18,6 @@ importers:
specifier: ^3.2.5
version: 3.3.2
- examples/antd:
- dependencies:
- '@ant-design/icons':
- specifier: ^5.3.7
- version: 5.3.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-formgen/json-schema':
- specifier: workspace:*
- version: link:../../packages/json-schema
- antd:
- specifier: ^5.19.0
- version: 5.19.1(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- dayjs:
- specifier: ^1.11.11
- version: 1.11.11
- lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- devDependencies:
- '@types/lodash-es':
- specifier: ^4.17.12
- version: 4.17.12
- '@types/node':
- specifier: ^20.14.8
- version: 20.14.8
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.13.1
- version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
- '@typescript-eslint/parser':
- specifier: ^7.13.1
- version: 7.13.1(eslint@8.57.0)(typescript@5.5.2)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.1(@types/node@20.14.8))
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.7(eslint@8.57.0)
- pnpm:
- specifier: ^9.4.0
- version: 9.5.0
- typescript:
- specifier: ^5.2.2
- version: 5.5.2
- vite:
- specifier: ^5.3.1
- version: 5.3.1(@types/node@20.14.8)
- vite-plugin-singlefile:
- specifier: ^2.0.2
- version: 2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8))
-
- examples/bootstrap:
- dependencies:
- '@react-formgen/json-schema':
- specifier: workspace:*
- version: link:../../packages/json-schema
- lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- react-icons:
- specifier: ^5.2.1
- version: 5.2.1(react@18.3.1)
- devDependencies:
- '@types/lodash-es':
- specifier: ^4.17.12
- version: 4.17.12
- '@types/node':
- specifier: ^20.14.8
- version: 20.14.8
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.13.1
- version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
- '@typescript-eslint/parser':
- specifier: ^7.13.1
- version: 7.13.1(eslint@8.57.0)(typescript@5.5.2)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.1(@types/node@20.14.8))
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.7(eslint@8.57.0)
- pnpm:
- specifier: ^9.4.0
- version: 9.5.0
- typescript:
- specifier: ^5.2.2
- version: 5.5.2
- vite:
- specifier: ^5.3.1
- version: 5.3.1(@types/node@20.14.8)
- vite-plugin-singlefile:
- specifier: ^2.0.2
- version: 2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8))
-
- examples/material-ui:
- dependencies:
- '@emotion/react':
- specifier: ^11.11.4
- version: 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled':
- specifier: ^11.11.5
- version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@mui/icons-material':
- specifier: ^5.15.21
- version: 5.16.0(@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@mui/material':
- specifier: ^5.15.21
- version: 5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/x-date-pickers':
- specifier: ^7.8.0
- version: 7.9.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(date-fns@3.6.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-formgen/json-schema':
- specifier: workspace:*
- version: link:../../packages/json-schema
- dayjs:
- specifier: ^1.11.11
- version: 1.11.11
- lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- devDependencies:
- '@types/lodash-es':
- specifier: ^4.17.12
- version: 4.17.12
- '@types/node':
- specifier: ^20.14.8
- version: 20.14.8
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.13.1
- version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
- '@typescript-eslint/parser':
- specifier: ^7.13.1
- version: 7.13.1(eslint@8.57.0)(typescript@5.5.2)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.1(@types/node@20.14.8))
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.7(eslint@8.57.0)
- pnpm:
- specifier: ^9.4.0
- version: 9.5.0
- typescript:
- specifier: ^5.2.2
- version: 5.5.2
- vite:
- specifier: ^5.3.1
- version: 5.3.1(@types/node@20.14.8)
- vite-plugin-singlefile:
- specifier: ^2.0.2
- version: 2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8))
-
- examples/shadcn-ui:
- dependencies:
- '@hookform/resolvers':
- specifier: ^3.6.0
- version: 3.9.0(react-hook-form@7.52.1(react@18.3.1))
- '@radix-ui/react-checkbox':
- specifier: ^1.1.0
- version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-label':
- specifier: ^2.1.0
- version: 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-popover':
- specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-radio-group':
- specifier: ^1.2.0
- version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-select':
- specifier: ^2.1.1
- version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-slot':
- specifier: ^1.1.0
- version: 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-switch':
- specifier: ^1.1.0
- version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@react-formgen/json-schema':
- specifier: workspace:*
- version: link:../../packages/json-schema
- class-variance-authority:
- specifier: ^0.7.0
- version: 0.7.0
- clsx:
- specifier: ^2.1.1
- version: 2.1.1
- date-fns:
- specifier: ^3.6.0
- version: 3.6.0
- lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
- lucide-react:
- specifier: ^0.396.0
- version: 0.396.0(react@18.3.1)
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-day-picker:
- specifier: ^8.10.1
- version: 8.10.1(date-fns@3.6.0)(react@18.3.1)
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- react-icons:
- specifier: ^5.2.1
- version: 5.2.1(react@18.3.1)
- react-router-dom:
- specifier: ^6.24.0
- version: 6.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- tailwind-merge:
- specifier: ^2.3.0
- version: 2.4.0
- tailwindcss-animate:
- specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.4)
- zod:
- specifier: ^3.23.8
- version: 3.23.8
- devDependencies:
- '@types/lodash-es':
- specifier: ^4.17.12
- version: 4.17.12
- '@types/node':
- specifier: ^20.14.8
- version: 20.14.8
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.13.1
- version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
- '@typescript-eslint/parser':
- specifier: ^7.13.1
- version: 7.13.1(eslint@8.57.0)(typescript@5.5.2)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.1(@types/node@20.14.8))
- autoprefixer:
- specifier: ^10.4.19
- version: 10.4.19(postcss@8.4.38)
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.7(eslint@8.57.0)
- pnpm:
- specifier: ^9.4.0
- version: 9.5.0
- postcss:
- specifier: ^8.4.38
- version: 8.4.38
- tailwindcss:
- specifier: ^3.4.4
- version: 3.4.4
- typescript:
- specifier: ^5.2.2
- version: 5.5.2
- vite:
- specifier: ^5.3.1
- version: 5.3.1(@types/node@20.14.8)
- vite-plugin-singlefile:
- specifier: ^2.0.2
- version: 2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8))
-
- examples/tailwindcss:
- dependencies:
- '@react-formgen/json-schema':
- specifier: workspace:*
- version: link:../../packages/json-schema
- '@react-formgen/yup':
- specifier: workspace:*
- version: link:../../packages/yup
- '@react-formgen/zod':
- specifier: workspace:*
- version: link:../../packages/zod
- ajv:
- specifier: ^8.17.1
- version: 8.17.1
- ajv-formats:
- specifier: ^3.0.1
- version: 3.0.1(ajv@8.17.1)
- json-schema:
- specifier: ^0.4.0
- version: 0.4.0
- lodash-es:
- specifier: ^4.17.21
- version: 4.17.21
- react:
- specifier: ^18.3.1
- version: 18.3.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- react-icons:
- specifier: ^5.2.1
- version: 5.2.1(react@18.3.1)
- yup:
- specifier: ^1.4.0
- version: 1.4.0
- zod:
- specifier: ^3.23.8
- version: 3.23.8
- devDependencies:
- '@tailwindcss/forms':
- specifier: ^0.5.7
- version: 0.5.7(tailwindcss@3.4.4)
- '@types/json-schema':
- specifier: ^7.0.15
- version: 7.0.15
- '@types/lodash-es':
- specifier: ^4.17.12
- version: 4.17.12
- '@types/node':
- specifier: ^20.14.8
- version: 20.14.8
- '@types/react':
- specifier: ^18.3.3
- version: 18.3.3
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/eslint-plugin':
- specifier: ^7.13.1
- version: 7.13.1(@typescript-eslint/parser@7.13.1(eslint@8.57.0)(typescript@5.5.2))(eslint@8.57.0)(typescript@5.5.2)
- '@typescript-eslint/parser':
- specifier: ^7.13.1
- version: 7.13.1(eslint@8.57.0)(typescript@5.5.2)
- '@vitejs/plugin-react':
- specifier: ^4.3.1
- version: 4.3.1(vite@5.3.1(@types/node@20.14.8))
- autoprefixer:
- specifier: ^10.4.19
- version: 10.4.19(postcss@8.4.38)
- eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-react-hooks:
- specifier: ^4.6.2
- version: 4.6.2(eslint@8.57.0)
- eslint-plugin-react-refresh:
- specifier: ^0.4.7
- version: 0.4.7(eslint@8.57.0)
- pnpm:
- specifier: ^9.4.0
- version: 9.5.0
- postcss:
- specifier: ^8.4.38
- version: 8.4.38
- tailwindcss:
- specifier: ^3.4.4
- version: 3.4.4
- typescript:
- specifier: ^5.2.2
- version: 5.5.2
- vite:
- specifier: ^5.3.1
- version: 5.3.1(@types/node@20.14.8)
- vite-plugin-singlefile:
- specifier: ^2.0.2
- version: 2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8))
-
packages/core:
dependencies:
nanoid:
@@ -524,6 +102,9 @@ importers:
react:
specifier: ^18.3.1
version: 18.3.1
+ react-dom:
+ specifier: ^18.0.0
+ version: 18.3.1(react@18.3.1)
devDependencies:
'@types/json-schema':
specifier: ^7.0.15
@@ -570,6 +151,9 @@ importers:
react:
specifier: ^18.3.1
version: 18.3.1
+ react-dom:
+ specifier: ^18.0.0
+ version: 18.3.1(react@18.3.1)
yup:
specifier: ^1.4.0
version: 1.4.0
@@ -616,6 +200,9 @@ importers:
react:
specifier: ^18.3.1
version: 18.3.1
+ react-dom:
+ specifier: ^18.0.0
+ version: 18.3.1(react@18.3.1)
zod:
specifier: ^3.23.8
version: 3.23.8
@@ -741,41 +328,13 @@ packages:
'@adobe/css-tools@4.4.0':
resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==}
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
-
'@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@ant-design/colors@7.1.0':
- resolution: {integrity: sha512-MMoDGWn1y9LdQJQSHiCC20x3uZ3CwQnv9QMz6pCmJOrqdgM9YxsoVVY0wtrdXbmfSgnV0KNk6zi09NAhMR2jvg==}
-
- '@ant-design/cssinjs@1.21.0':
- resolution: {integrity: sha512-gIilraPl+9EoKdYxnupxjHB/Q6IHNRjEXszKbDxZdsgv4sAZ9pjkCq8yanDWNvyfjp4leir2OVAJm0vxwKK8YA==}
- peerDependencies:
- react: '>=16.0.0'
- react-dom: '>=16.0.0'
-
- '@ant-design/icons-svg@4.4.2':
- resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==}
-
- '@ant-design/icons@5.3.7':
- resolution: {integrity: sha512-bCPXTAg66f5bdccM4TT21SQBDO1Ek2gho9h3nO9DAKXJP4sq+5VBjrQMSxMVXSB3HyEz+cUbHQ5+6ogxCOpaew==}
- engines: {node: '>=8'}
- peerDependencies:
- react: '>=16.0.0'
- react-dom: '>=16.0.0'
-
- '@ant-design/react-slick@1.1.2':
- resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==}
- peerDependencies:
- react: '>=16.9.0'
-
- '@babel/code-frame@7.24.7':
- resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
- engines: {node: '>=6.9.0'}
+ '@babel/code-frame@7.24.7':
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
+ engines: {node: '>=6.9.0'}
'@babel/compat-data@7.24.7':
resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==}
@@ -883,70 +442,6 @@ packages:
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
- '@ctrl/tinycolor@3.6.1':
- resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
- engines: {node: '>=10'}
-
- '@emotion/babel-plugin@11.11.0':
- resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
-
- '@emotion/cache@11.11.0':
- resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==}
-
- '@emotion/hash@0.8.0':
- resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
-
- '@emotion/hash@0.9.1':
- resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
-
- '@emotion/is-prop-valid@1.2.2':
- resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==}
-
- '@emotion/memoize@0.8.1':
- resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
-
- '@emotion/react@11.11.4':
- resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==}
- peerDependencies:
- '@types/react': '*'
- react: '>=16.8.0'
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@emotion/serialize@1.1.4':
- resolution: {integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==}
-
- '@emotion/sheet@1.2.2':
- resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
-
- '@emotion/styled@11.11.5':
- resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==}
- peerDependencies:
- '@emotion/react': ^11.0.0-rc.0
- '@types/react': '*'
- react: '>=16.8.0'
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@emotion/unitless@0.7.5':
- resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
-
- '@emotion/unitless@0.8.1':
- resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
-
- '@emotion/use-insertion-effect-with-fallbacks@1.0.1':
- resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
- peerDependencies:
- react: '>=16.8.0'
-
- '@emotion/utils@1.2.1':
- resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
-
- '@emotion/weak-memoize@0.3.1':
- resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
-
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
@@ -1103,26 +598,6 @@ packages:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- '@floating-ui/core@1.6.4':
- resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==}
-
- '@floating-ui/dom@1.6.7':
- resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==}
-
- '@floating-ui/react-dom@2.1.1':
- resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
- '@floating-ui/utils@0.2.4':
- resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
-
- '@hookform/resolvers@3.9.0':
- resolution: {integrity: sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==}
- peerDependencies:
- react-hook-form: ^7.0.0
-
'@humanwhocodes/config-array@0.11.14':
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
@@ -1162,141 +637,6 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
- '@mui/base@5.0.0-beta.40':
- resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- react-dom: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/core-downloads-tracker@5.16.0':
- resolution: {integrity: sha512-8SLffXYPRVpcZx5QzxNE8fytTqzp+IuU3deZbQWg/vSaTlDpR5YVrQ4qQtXTi5cRdhOufV5INylmwlKK+//nPw==}
-
- '@mui/icons-material@5.16.0':
- resolution: {integrity: sha512-6ISoOhkp9w5gD0PEW9JklrcbyARDkFWNTBdwXZ1Oy5IGlyu9B0zG0hnUIe4H17IaF1Vgj6C8VI+v4tkSdK0veg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@mui/material': ^5.0.0
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/material@5.16.0':
- resolution: {integrity: sha512-DbR1NckTLpjt9Zut9EGQ70th86HfN0BYQgyYro6aXQrNfjzSwe3BJS1AyBQ5mJ7TdL6YVRqohfukxj9JlqZZUg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@emotion/react': ^11.5.0
- '@emotion/styled': ^11.3.0
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- react-dom: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- '@types/react':
- optional: true
-
- '@mui/private-theming@5.16.0':
- resolution: {integrity: sha512-sYpubkO1MZOnxNyVOClrPNOTs0MfuRVVnAvCeMaOaXt6GimgQbnUcshYv2pSr6PFj+Mqzdff/FYOBceK8u5QgA==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/styled-engine@5.15.14':
- resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@emotion/react': ^11.4.1
- '@emotion/styled': ^11.3.0
- react: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
-
- '@mui/system@5.16.0':
- resolution: {integrity: sha512-9YbkC2m3+pNumAvubYv+ijLtog6puJ0fJ6rYfzfLCM47pWrw3m+30nXNM8zMgDaKL6vpfWJcCXm+LPaWBpy7sw==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@emotion/react': ^11.5.0
- '@emotion/styled': ^11.3.0
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- '@types/react':
- optional: true
-
- '@mui/types@7.2.14':
- resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/utils@5.16.0':
- resolution: {integrity: sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@types/react': ^17.0.0 || ^18.0.0
- react: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@mui/x-date-pickers@7.9.0':
- resolution: {integrity: sha512-GMDprioHlYmNle8Cbh6TxB4QThDGgqJxfH/R/p/5dNk+Tn5vB1gZSDMn3wVxItiEV6tDXbkyS5gPhSMVFDGvAA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- '@emotion/react': ^11.9.0
- '@emotion/styled': ^11.8.1
- '@mui/material': ^5.15.14
- date-fns: ^2.25.0 || ^3.2.0
- date-fns-jalali: ^2.13.0-0 || ^3.2.0-0
- dayjs: ^1.10.7
- luxon: ^3.0.2
- moment: ^2.29.4
- moment-hijri: ^2.1.2
- moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0
- react: ^17.0.0 || ^18.0.0
- react-dom: ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@emotion/react':
- optional: true
- '@emotion/styled':
- optional: true
- date-fns:
- optional: true
- date-fns-jalali:
- optional: true
- dayjs:
- optional: true
- luxon:
- optional: true
- moment:
- optional: true
- moment-hijri:
- optional: true
- moment-jalaali:
- optional: true
-
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -1313,508 +653,107 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@popperjs/core@2.11.8':
- resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ '@remix-run/router@1.19.1':
+ resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==}
+ engines: {node: '>=14.0.0'}
- '@radix-ui/number@1.1.0':
- resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
+ '@rollup/rollup-android-arm-eabi@4.18.0':
+ resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
+ cpu: [arm]
+ os: [android]
- '@radix-ui/primitive@1.1.0':
- resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
+ '@rollup/rollup-android-arm64@4.18.0':
+ resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
+ cpu: [arm64]
+ os: [android]
- '@radix-ui/react-arrow@1.1.0':
- resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-darwin-arm64@4.18.0':
+ resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
+ cpu: [arm64]
+ os: [darwin]
- '@radix-ui/react-checkbox@1.1.1':
- resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-darwin-x64@4.18.0':
+ resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
+ cpu: [x64]
+ os: [darwin]
- '@radix-ui/react-collection@1.1.0':
- resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
+ resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
+ cpu: [arm]
+ os: [linux]
- '@radix-ui/react-compose-refs@1.1.0':
- resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@rollup/rollup-linux-arm-musleabihf@4.18.0':
+ resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
+ cpu: [arm]
+ os: [linux]
- '@radix-ui/react-context@1.1.0':
- resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@rollup/rollup-linux-arm64-gnu@4.18.0':
+ resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
+ cpu: [arm64]
+ os: [linux]
- '@radix-ui/react-direction@1.1.0':
- resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@rollup/rollup-linux-arm64-musl@4.18.0':
+ resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
+ cpu: [arm64]
+ os: [linux]
- '@radix-ui/react-dismissable-layer@1.1.0':
- resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
+ resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
+ cpu: [ppc64]
+ os: [linux]
- '@radix-ui/react-focus-guards@1.1.0':
- resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@rollup/rollup-linux-riscv64-gnu@4.18.0':
+ resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
+ cpu: [riscv64]
+ os: [linux]
- '@radix-ui/react-focus-scope@1.1.0':
- resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-linux-s390x-gnu@4.18.0':
+ resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
+ cpu: [s390x]
+ os: [linux]
- '@radix-ui/react-id@1.1.0':
- resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@rollup/rollup-linux-x64-gnu@4.18.0':
+ resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
+ cpu: [x64]
+ os: [linux]
- '@radix-ui/react-label@2.1.0':
- resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-linux-x64-musl@4.18.0':
+ resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
+ cpu: [x64]
+ os: [linux]
- '@radix-ui/react-popover@1.1.1':
- resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-win32-arm64-msvc@4.18.0':
+ resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
+ cpu: [arm64]
+ os: [win32]
- '@radix-ui/react-popper@1.2.0':
- resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@rollup/rollup-win32-ia32-msvc@4.18.0':
+ resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.18.0':
+ resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
+ cpu: [x64]
+ os: [win32]
+
+ '@testing-library/dom@10.4.0':
+ resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
+ engines: {node: '>=18'}
+
+ '@testing-library/jest-dom@6.4.8':
+ resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
- '@radix-ui/react-portal@1.1.1':
- resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==}
+ '@testing-library/react@16.0.0':
+ resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==}
+ engines: {node: '>=18'}
peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-presence@1.1.0':
- resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.0.0':
- resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-radio-group@1.2.0':
- resolution: {integrity: sha512-yv+oiLaicYMBpqgfpSPw6q+RyXlLdIpQWDHZbUKURxe+nEh53hFXPPlfhfQQtYkS5MMK/5IWIa76SksleQZSzw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-roving-focus@1.1.0':
- resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-select@2.1.1':
- resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-slot@1.1.0':
- resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-switch@1.1.0':
- resolution: {integrity: sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-use-callback-ref@1.1.0':
- resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-controllable-state@1.1.0':
- resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-escape-keydown@1.1.0':
- resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-layout-effect@1.1.0':
- resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-previous@1.1.0':
- resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-rect@1.1.0':
- resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-size@1.1.0':
- resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-visually-hidden@1.1.0':
- resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/rect@1.1.0':
- resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
-
- '@rc-component/async-validator@5.0.4':
- resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==}
- engines: {node: '>=14.x'}
-
- '@rc-component/color-picker@1.5.3':
- resolution: {integrity: sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/context@1.4.0':
- resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/mini-decimal@1.1.0':
- resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==}
- engines: {node: '>=8.x'}
-
- '@rc-component/mutate-observer@1.1.0':
- resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/portal@1.1.2':
- resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/qrcode@1.0.0':
- resolution: {integrity: sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/tour@1.15.0':
- resolution: {integrity: sha512-h6hyILDwL+In9GAgRobwRWihLqqsD7Uft3fZGrJ7L4EiyCoxbnNYwzPXDfz7vNDhWeVyvAWQJj9fJCzpI4+b4g==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@rc-component/trigger@2.2.0':
- resolution: {integrity: sha512-QarBCji02YE9aRFhZgRZmOpXBj0IZutRippsVBv85sxvG4FGk/vRxwAlkn3MS9zK5mwbETd86mAVg2tKqTkdJA==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- '@remix-run/router@1.17.1':
- resolution: {integrity: sha512-mCOMec4BKd6BRGBZeSnGiIgwsbLGp3yhVqAD8H+PxiRNEHgDpZb8J1TnrSDlg97t0ySKMQJTHCWBCmBpSmkF6Q==}
- engines: {node: '>=14.0.0'}
-
- '@remix-run/router@1.19.1':
- resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==}
- engines: {node: '>=14.0.0'}
-
- '@rollup/rollup-android-arm-eabi@4.18.0':
- resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.18.0':
- resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.18.0':
- resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.18.0':
- resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
- resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.18.0':
- resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.18.0':
- resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.18.0':
- resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
- resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.18.0':
- resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.18.0':
- resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.18.0':
- resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.18.0':
- resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-win32-arm64-msvc@4.18.0':
- resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.18.0':
- resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.18.0':
- resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/forms@0.5.7':
- resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
-
- '@testing-library/dom@10.4.0':
- resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
- engines: {node: '>=18'}
-
- '@testing-library/jest-dom@6.4.8':
- resolution: {integrity: sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw==}
- engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
-
- '@testing-library/react@16.0.0':
- resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==}
- engines: {node: '>=18'}
- peerDependencies:
- '@testing-library/dom': ^10.0.0
- '@types/react': ^18.0.0
- '@types/react-dom': ^18.0.0
- react: ^18.0.0
- react-dom: ^18.0.0
+ '@testing-library/dom': ^10.0.0
+ '@types/react': ^18.0.0
+ '@types/react-dom': ^18.0.0
+ react: ^18.0.0
+ react-dom: ^18.0.0
peerDependenciesMeta:
'@types/react':
optional: true
@@ -1842,27 +781,15 @@ packages:
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
- '@types/lodash-es@4.17.12':
- resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
-
- '@types/lodash@4.17.6':
- resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
-
'@types/node@20.14.8':
resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==}
- '@types/parse-json@4.0.2':
- resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
-
'@types/prop-types@15.7.12':
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
- '@types/react-transition-group@4.4.10':
- resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
-
'@types/react@18.3.3':
resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
@@ -2019,35 +946,12 @@ packages:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- antd@5.19.1:
- resolution: {integrity: sha512-ogGEUPaamSZ2HFGvlyLBNfxZ0c4uX5aqEIwMtmqRTPNjcLY/k+qdMmdWrMMiY1CDJ3j1in5wjzQTvREG+do65g==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
-
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
- arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
-
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- aria-hidden@1.2.4:
- resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
- engines: {node: '>=10'}
-
aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
- array-tree-filter@2.1.0:
- resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==}
-
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
@@ -2059,24 +963,9 @@ packages:
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- autoprefixer@10.4.19:
- resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
-
- babel-plugin-macros@3.1.0:
- resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
- engines: {node: '>=10', npm: '>=6'}
-
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
-
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -2100,10 +989,6 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- camelcase-css@2.0.1:
- resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
- engines: {node: '>= 6'}
-
caniuse-lite@1.0.30001636:
resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==}
@@ -2127,28 +1012,10 @@ packages:
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
engines: {node: '>= 16'}
- chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
-
- class-variance-authority@0.7.0:
- resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
-
- classnames@2.5.1:
- resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
-
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
- clsx@2.0.0:
- resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
- engines: {node: '>=6'}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -2166,29 +1033,12 @@ packages:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
- commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
-
- compute-scroll-into-view@3.1.0:
- resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
-
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
-
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- copy-to-clipboard@3.3.3:
- resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
-
- cosmiconfig@7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
-
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -2196,11 +1046,6 @@ packages:
css.escape@1.5.1:
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
cssstyle@4.0.1:
resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
engines: {node: '>=18'}
@@ -2212,12 +1057,6 @@ packages:
resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
engines: {node: '>=18'}
- date-fns@3.6.0:
- resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
-
- dayjs@1.11.11:
- resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==}
-
debug@4.3.5:
resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
@@ -2249,19 +1088,10 @@ packages:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
- detect-node-es@1.1.0:
- resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
-
- didyoumean@1.2.2:
- resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
-
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- dlv@1.1.3:
- resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
-
doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -2272,9 +1102,6 @@ packages:
dom-accessibility-api@0.6.3:
resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
- dom-helpers@5.2.1:
- resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
-
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -2291,9 +1118,6 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
-
esbuild@0.21.5:
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
@@ -2389,9 +1213,6 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
- find-root@1.1.0:
- resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
-
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
@@ -2411,9 +1232,6 @@ packages:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
- fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
-
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -2422,9 +1240,6 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -2436,10 +1251,6 @@ packages:
get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
- get-nonce@1.0.1:
- resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
- engines: {node: '>=6'}
-
get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
@@ -2483,13 +1294,6 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- hoist-non-react-statics@3.3.2:
- resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
-
html-encoding-sniffer@4.0.0:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
@@ -2536,20 +1340,6 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- invariant@2.2.4:
- resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
- is-core-module@2.14.0:
- resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
- engines: {node: '>= 0.4'}
-
is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
@@ -2613,10 +1403,6 @@ packages:
resolution: {integrity: sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==}
engines: {node: 14 >=14.21 || 16 >=16.20 || >=18}
- jiti@1.21.6:
- resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
- hasBin: true
-
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -2641,9 +1427,6 @@ packages:
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -2656,9 +1439,6 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- json2mq@0.2.0:
- resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==}
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -2671,24 +1451,10 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
- lilconfig@2.1.0:
- resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
- engines: {node: '>=10'}
-
- lilconfig@3.1.2:
- resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- lodash-es@4.17.21:
- resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
-
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
@@ -2709,11 +1475,6 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- lucide-react@0.396.0:
- resolution: {integrity: sha512-N/zP+9vEfEYHiMWMpjwH/M5diaV0e4UFe07BpgdzaRYce5QvXi87hixf7F0Xqdr3zuX/9u7H/2D4MVXIK22O0A==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0
-
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -2755,10 +1516,6 @@ packages:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
- mini-svg-data-uri@1.4.4:
- resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
- hasBin: true
-
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -2773,9 +1530,6 @@ packages:
ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
-
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -2792,14 +1546,6 @@ packages:
node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
-
npm-run-path@5.3.0:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -2807,14 +1553,6 @@ packages:
nwsapi@2.2.12:
resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==}
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-hash@3.0.0:
- resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
- engines: {node: '>= 6'}
-
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -2845,10 +1583,6 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
parse5@7.1.2:
resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
@@ -2868,9 +1602,6 @@ packages:
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
engines: {node: '>=12'}
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
@@ -2893,56 +1624,6 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- pify@2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
-
- pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
- engines: {node: '>= 6'}
-
- pnpm@9.5.0:
- resolution: {integrity: sha512-FAA2gwEkYY1iSiGHtQ0EKJ1aCH8ybJ7fwMzXM9dsT1LDoxPU/BSHlKKp2BVTAWAE5nQujPhQZwJopzh/wiDJAw==}
- engines: {node: '>=18.12'}
- hasBin: true
-
- postcss-import@15.1.0:
- resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- postcss: ^8.0.0
-
- postcss-js@4.0.1:
- resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
- engines: {node: ^12 || ^14 || >= 16}
- peerDependencies:
- postcss: ^8.4.21
-
- postcss-load-config@4.0.2:
- resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
- engines: {node: '>= 14'}
- peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- postcss:
- optional: true
- ts-node:
- optional: true
-
- postcss-nested@6.0.1:
- resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.2.14
-
- postcss-selector-parser@6.1.0:
- resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==}
- engines: {node: '>=4'}
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
@@ -2960,9 +1641,6 @@ packages:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
property-expr@2.0.6:
resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==}
@@ -2979,296 +1657,18 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- rc-cascader@3.27.0:
- resolution: {integrity: sha512-z5uq8VvQadFUBiuZJ7YF5UAUGNkZtdEtcEYiIA94N/Kc2MIKr6lEbN5HyVddvYSgwWlKqnL6pH5bFXFuIK3MNg==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-checkbox@3.3.0:
- resolution: {integrity: sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-collapse@3.7.3:
- resolution: {integrity: sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-dialog@9.5.2:
- resolution: {integrity: sha512-qVUjc8JukG+j/pNaHVSRa2GO2/KbV2thm7yO4hepQ902eGdYK913sGkwg/fh9yhKYV1ql3BKIN2xnud3rEXAPw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-drawer@7.2.0:
- resolution: {integrity: sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-dropdown@4.2.0:
- resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==}
- peerDependencies:
- react: '>=16.11.0'
- react-dom: '>=16.11.0'
-
- rc-field-form@2.2.1:
- resolution: {integrity: sha512-uoNqDoR7A4tn4QTSqoWPAzrR7ZwOK5I+vuZ/qdcHtbKx+ZjEsTg7QXm2wk/jalDiSksAQmATxL0T5LJkRREdIA==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-image@7.9.0:
- resolution: {integrity: sha512-l4zqO5E0quuLMCtdKfBgj4Suv8tIS011F5k1zBBlK25iMjjiNHxA0VeTzGFtUZERSA45gvpXDg8/P6qNLjR25g==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-input-number@9.1.0:
- resolution: {integrity: sha512-NqJ6i25Xn/AgYfVxynlevIhX3FuKlMwIFpucGG1h98SlK32wQwDK0zhN9VY32McOmuaqzftduNYWWooWz8pXQA==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-input@1.5.1:
- resolution: {integrity: sha512-+nOzQJDeIfIpNP/SgY45LXSKbuMlp4Yap2y8c+ZpU7XbLmNzUd6+d5/S75sA/52jsVE6S/AkhkkDEAOjIu7i6g==}
- peerDependencies:
- react: '>=16.0.0'
- react-dom: '>=16.0.0'
-
- rc-mentions@2.14.0:
- resolution: {integrity: sha512-qKR59FMuF8PK4ZqsbWX3UuA5P1M/snzyqV6Yt3y1DCFbCEdqUGIBgQp6vEfLCO6Z0RoRFlzXtCeSlBTcDDpg1A==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-menu@9.14.1:
- resolution: {integrity: sha512-5wlRb3M8S4yGlWhSoEYJ7ZVRElyScdcpUHxgiLxkeig1tEdyKrnED3B2fhpN0Rrpdp9jyhnmZR/Lwq2fH5VvDQ==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-motion@2.9.2:
- resolution: {integrity: sha512-fUAhHKLDdkAXIDLH0GYwof3raS58dtNUmzLF2MeiR8o6n4thNpSDQhOqQzWE4WfFZDCi9VEN8n7tiB7czREcyw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-notification@5.6.0:
- resolution: {integrity: sha512-TGQW5T7waOxLwgJG7fXcw8l7AQiFOjaZ7ISF5PrU526nunHRNcTMuzKihQHaF4E/h/KfOCDk3Mv8eqzbu2e28w==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-overflow@1.3.2:
- resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-pagination@4.2.0:
- resolution: {integrity: sha512-V6qeANJsT6tmOcZ4XiUmj8JXjRLbkusuufpuoBw2GiAn94fIixYjFLmbruD1Sbhn8fPLDnWawPp4CN37zQorvw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-picker@4.6.8:
- resolution: {integrity: sha512-Lq2m68YGcmWXhzAmxTcL3vOjik7NQjcZ6fmZqBlgdrMCg3VnuKHmtk5CHGWd3wCiy2qNxSYIqWAidB1EQViPpQ==}
- engines: {node: '>=8.x'}
- peerDependencies:
- date-fns: '>= 2.x'
- dayjs: '>= 1.x'
- luxon: '>= 3.x'
- moment: '>= 2.x'
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
- peerDependenciesMeta:
- date-fns:
- optional: true
- dayjs:
- optional: true
- luxon:
- optional: true
- moment:
- optional: true
-
- rc-progress@4.0.0:
- resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-rate@2.13.0:
- resolution: {integrity: sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-resize-observer@1.4.0:
- resolution: {integrity: sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-segmented@2.3.0:
- resolution: {integrity: sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg==}
- peerDependencies:
- react: '>=16.0.0'
- react-dom: '>=16.0.0'
-
- rc-select@14.15.0:
- resolution: {integrity: sha512-BDqnDLhhm/8VyyyDlX7ju06S75k6ObJvbsN86zqZ4SY1Fu2ANQxeSWPo7pnwx5nwA5JgG+HcQevtddAgsdeBVQ==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '*'
- react-dom: '*'
-
- rc-slider@10.6.2:
- resolution: {integrity: sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-steps@6.0.1:
- resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-switch@4.1.0:
- resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-table@7.45.7:
- resolution: {integrity: sha512-wi9LetBL1t1csxyGkMB2p3mCiMt+NDexMlPbXHvQFmBBAsMxrgNSAPwUci2zDLUq9m8QdWc1Nh8suvrpy9mXrg==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-tabs@15.1.1:
- resolution: {integrity: sha512-Tc7bJvpEdkWIVCUL7yQrMNBJY3j44NcyWS48jF/UKMXuUlzaXK+Z/pEL5LjGcTadtPvVmNqA40yv7hmr+tCOAw==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-textarea@1.7.0:
- resolution: {integrity: sha512-UxizYJkWkmxP3zofXgc487QiGyDmhhheDLLjIWbFtDmiru1ls30KpO8odDaPyqNUIy9ugj5djxTEuezIn6t3Jg==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-tooltip@6.2.0:
- resolution: {integrity: sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-tree-select@5.22.1:
- resolution: {integrity: sha512-b8mAK52xEpRgS+b2PTapCt29GoIrO5cO8jB7AfHttFsIJfcnynY9FCtnYzURsKXJkGHbFY6UzSEB2I3TETtdWg==}
- peerDependencies:
- react: '*'
- react-dom: '*'
-
- rc-tree@5.8.8:
- resolution: {integrity: sha512-S+mCMWo91m5AJqjz3PdzKilGgbFm7fFJRFiTDOcoRbD7UfMOPnerXwMworiga0O2XIo383UoWuEfeHs1WOltag==}
- engines: {node: '>=10.x'}
- peerDependencies:
- react: '*'
- react-dom: '*'
-
- rc-upload@4.5.2:
- resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-util@5.43.0:
- resolution: {integrity: sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- rc-virtual-list@3.14.5:
- resolution: {integrity: sha512-ZMOnkCLv2wUN8Jz7yI4XiSLa9THlYvf00LuMhb1JlsQCewuU7ydPuHw1rGVPhe9VZYl/5UqODtNd7QKJ2DMGfg==}
- engines: {node: '>=8.x'}
- peerDependencies:
- react: '>=16.9.0'
- react-dom: '>=16.9.0'
-
- react-day-picker@8.10.1:
- resolution: {integrity: sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==}
- peerDependencies:
- date-fns: ^2.28.0 || ^3.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
-
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies:
react: ^18.3.1
- react-hook-form@7.52.1:
- resolution: {integrity: sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg==}
- engines: {node: '>=12.22.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18 || ^19
-
- react-icons@5.2.1:
- resolution: {integrity: sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==}
- peerDependencies:
- react: '*'
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
-
react-refresh@0.14.2:
resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
engines: {node: '>=0.10.0'}
- react-remove-scroll-bar@2.3.6:
- resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-remove-scroll@2.5.7:
- resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-router-dom@6.24.1:
- resolution: {integrity: sha512-U19KtXqooqw967Vw0Qcn5cOvrX5Ejo9ORmOtJMzYWtCT4/WOfFLIZGGsVLxcd9UkBO0mSTZtXqhZBsWlHr7+Sg==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
- react-dom: '>=16.8'
-
react-router-dom@6.26.1:
resolution: {integrity: sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==}
engines: {node: '>=14.0.0'}
@@ -3276,45 +1676,16 @@ packages:
react: '>=16.8'
react-dom: '>=16.8'
- react-router@6.24.1:
- resolution: {integrity: sha512-PTXFXGK2pyXpHzVo3rR9H7ip4lSPZZc0bHG5CARmj65fTT6qG7sTngmb6lcYu1gf3y/8KxORoy9yn59pGpCnpg==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- react: '>=16.8'
-
react-router@6.26.1:
resolution: {integrity: sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
- react-style-singleton@2.2.1:
- resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-transition-group@4.4.5:
- resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
- peerDependencies:
- react: '>=16.6.0'
- react-dom: '>=16.6.0'
-
react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
- read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
-
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
-
redent@3.0.0:
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
engines: {node: '>=8'}
@@ -3333,17 +1704,10 @@ packages:
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
- resize-observer-polyfill@1.5.1:
- resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
-
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -3387,9 +1751,6 @@ packages:
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
- scroll-into-view-if-needed@3.1.0:
- resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
-
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -3422,10 +1783,6 @@ packages:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
- source-map@0.5.7:
- resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
- engines: {node: '>=0.10.0'}
-
source-map@0.7.4:
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
engines: {node: '>= 8'}
@@ -3436,9 +1793,6 @@ packages:
std-env@3.7.0:
resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
- string-convert@0.2.1:
- resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -3467,17 +1821,6 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- stylis@4.2.0:
- resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
-
- stylis@4.3.2:
- resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==}
-
- sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
-
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -3486,26 +1829,9 @@ packages:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
- tailwind-merge@2.4.0:
- resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==}
-
- tailwindcss-animate@1.0.7:
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
-
- tailwindcss@3.4.4:
- resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
test-exclude@7.0.1:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
@@ -3513,17 +1839,6 @@ packages:
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
-
- thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
-
- throttle-debounce@5.0.2:
- resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==}
- engines: {node: '>=12.22'}
-
tiny-case@1.0.3:
resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==}
@@ -3550,9 +1865,6 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- toggle-selection@1.0.6:
- resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
-
toposort@2.0.2:
resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
@@ -3570,12 +1882,6 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
- ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
-
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
-
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -3612,34 +1918,11 @@ packages:
url-parse@1.5.10:
resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
- use-callback-ref@1.3.2:
- resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sidecar@1.1.2:
- resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
- react: ^16.8.0 || ^17.0.0 || ^18.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
use-sync-external-store@1.2.0:
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
uuid@10.0.0:
resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
@@ -3649,13 +1932,6 @@ packages:
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
- vite-plugin-singlefile@2.0.2:
- resolution: {integrity: sha512-Z2ou6HcvED5CF0hM+vcFSaFa+klyS8RyyLxW0PbMRLnMbvzTI6ueWyxdYNFhpuXZgz/aj6+E/dHFTdEcw6gb9w==}
- engines: {node: '>18.0.0'}
- peerDependencies:
- rollup: ^4.18.0
- vite: ^5.3.1
-
vite@5.3.1:
resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -3780,15 +2056,6 @@ packages:
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- yaml@1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
-
- yaml@2.4.5:
- resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
- engines: {node: '>= 14'}
- hasBin: true
-
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
@@ -3826,50 +2093,11 @@ snapshots:
'@adobe/css-tools@4.4.0': {}
- '@alloc/quick-lru@5.2.0': {}
-
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- '@ant-design/colors@7.1.0':
- dependencies:
- '@ctrl/tinycolor': 3.6.1
-
- '@ant-design/cssinjs@1.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@emotion/hash': 0.8.0
- '@emotion/unitless': 0.7.5
- classnames: 2.5.1
- csstype: 3.1.3
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- stylis: 4.3.2
-
- '@ant-design/icons-svg@4.4.2': {}
-
- '@ant-design/icons@5.3.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@ant-design/colors': 7.1.0
- '@ant-design/icons-svg': 4.4.2
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@ant-design/react-slick@1.1.2(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- json2mq: 0.2.0
- react: 18.3.1
- resize-observer-polyfill: 1.5.1
- throttle-debounce: 5.0.2
-
'@babel/code-frame@7.24.7':
dependencies:
'@babel/highlight': 7.24.7
@@ -4021,97 +2249,8 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
- '@ctrl/tinycolor@3.6.1': {}
-
- '@emotion/babel-plugin@11.11.0':
- dependencies:
- '@babel/helper-module-imports': 7.24.7
- '@babel/runtime': 7.24.7
- '@emotion/hash': 0.9.1
- '@emotion/memoize': 0.8.1
- '@emotion/serialize': 1.1.4
- babel-plugin-macros: 3.1.0
- convert-source-map: 1.9.0
- escape-string-regexp: 4.0.0
- find-root: 1.1.0
- source-map: 0.5.7
- stylis: 4.2.0
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/cache@11.11.0':
- dependencies:
- '@emotion/memoize': 0.8.1
- '@emotion/sheet': 1.2.2
- '@emotion/utils': 1.2.1
- '@emotion/weak-memoize': 0.3.1
- stylis: 4.2.0
-
- '@emotion/hash@0.8.0': {}
-
- '@emotion/hash@0.9.1': {}
-
- '@emotion/is-prop-valid@1.2.2':
- dependencies:
- '@emotion/memoize': 0.8.1
-
- '@emotion/memoize@0.8.1': {}
-
- '@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@emotion/babel-plugin': 11.11.0
- '@emotion/cache': 11.11.0
- '@emotion/serialize': 1.1.4
- '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
- '@emotion/utils': 1.2.1
- '@emotion/weak-memoize': 0.3.1
- hoist-non-react-statics: 3.3.2
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/serialize@1.1.4':
- dependencies:
- '@emotion/hash': 0.9.1
- '@emotion/memoize': 0.8.1
- '@emotion/unitless': 0.8.1
- '@emotion/utils': 1.2.1
- csstype: 3.1.3
-
- '@emotion/sheet@1.2.2': {}
-
- '@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@emotion/babel-plugin': 11.11.0
- '@emotion/is-prop-valid': 1.2.2
- '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/serialize': 1.1.4
- '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
- '@emotion/utils': 1.2.1
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
- transitivePeerDependencies:
- - supports-color
-
- '@emotion/unitless@0.7.5': {}
-
- '@emotion/unitless@0.8.1': {}
-
- '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.3.1)':
- dependencies:
- react: 18.3.1
-
- '@emotion/utils@1.2.1': {}
-
- '@emotion/weak-memoize@0.3.1': {}
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
'@esbuild/android-arm64@0.21.5':
optional: true
@@ -4125,665 +2264,137 @@ snapshots:
'@esbuild/darwin-arm64@0.21.5':
optional: true
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
- dependencies:
- eslint: 8.57.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.10.1': {}
-
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.12.6
- debug: 4.3.5
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.1
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@8.57.0': {}
-
- '@floating-ui/core@1.6.4':
- dependencies:
- '@floating-ui/utils': 0.2.4
-
- '@floating-ui/dom@1.6.7':
- dependencies:
- '@floating-ui/core': 1.6.4
- '@floating-ui/utils': 0.2.4
-
- '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@floating-ui/dom': 1.6.7
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- '@floating-ui/utils@0.2.4': {}
-
- '@hookform/resolvers@3.9.0(react-hook-form@7.52.1(react@18.3.1))':
- dependencies:
- react-hook-form: 7.52.1(react@18.3.1)
-
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.5
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/object-schema@2.0.3': {}
-
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
-
- '@istanbuljs/schema@0.1.3': {}
-
- '@jridgewell/gen-mapping@0.3.5':
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.25
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/set-array@1.2.1': {}
-
- '@jridgewell/sourcemap-codec@1.4.15': {}
-
- '@jridgewell/trace-mapping@0.3.25':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.4.15
-
- '@mui/base@5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.14(@types/react@18.3.3)
- '@mui/utils': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- '@popperjs/core': 2.11.8
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@mui/core-downloads-tracker@5.16.0': {}
-
- '@mui/icons-material@5.16.0(@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@mui/material': 5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/core-downloads-tracker': 5.16.0
- '@mui/system': 5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@mui/types': 7.2.14(@types/react@18.3.3)
- '@mui/utils': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- '@types/react-transition-group': 4.4.10
- clsx: 2.1.1
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-is: 18.3.1
- react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- optionalDependencies:
- '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
-
- '@mui/private-theming@5.16.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@mui/utils': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- prop-types: 15.8.1
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@mui/styled-engine@5.15.14(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@emotion/cache': 11.11.0
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 18.3.1
- optionalDependencies:
- '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
-
- '@mui/system@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@mui/private-theming': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.14(@types/react@18.3.3)
- '@mui/utils': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- clsx: 2.1.1
- csstype: 3.1.3
- prop-types: 15.8.1
- react: 18.3.1
- optionalDependencies:
- '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@types/react': 18.3.3
-
- '@mui/types@7.2.14(@types/react@18.3.3)':
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@mui/utils@5.16.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@types/prop-types': 15.7.12
- prop-types: 15.8.1
- react: 18.3.1
- react-is: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@mui/x-date-pickers@7.9.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(date-fns@3.6.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- '@mui/base': 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/material': 5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/system': 5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- '@mui/utils': 5.16.0(@types/react@18.3.3)(react@18.3.1)
- '@types/react-transition-group': 4.4.10
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- optionalDependencies:
- '@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- date-fns: 3.6.0
- dayjs: 1.11.11
- transitivePeerDependencies:
- - '@types/react'
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
-
- '@pkgjs/parseargs@0.11.0':
- optional: true
-
- '@popperjs/core@2.11.8': {}
-
- '@radix-ui/number@1.1.0': {}
-
- '@radix-ui/primitive@1.1.0': {}
-
- '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
-
- '@radix-ui/react-checkbox@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
-
- '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
-
- '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
-
- '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
-
- '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
- '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
- '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
- '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
- '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- aria-hidden: 1.2.4
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
- '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/rect': 1.1.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
- '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
- '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
- '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
- '@radix-ui/react-radio-group@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
- '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
- '@radix-ui/react-select@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/number': 1.1.0
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- aria-hidden: 1.2.4
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
- '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
- '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
- '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
- '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
- '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
- '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
- '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.3)(react@18.3.1)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
dependencies:
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ eslint: 8.57.0
+ eslint-visitor-keys: 3.4.3
- '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)':
- dependencies:
- '@radix-ui/rect': 1.1.0
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ '@eslint-community/regexpp@4.10.1': {}
- '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)':
+ '@eslint/eslintrc@2.1.4':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
- react: 18.3.1
- optionalDependencies:
- '@types/react': 18.3.3
+ ajv: 6.12.6
+ debug: 4.3.5
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.1
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.0': {}
- '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@humanwhocodes/config-array@0.11.14':
dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
- '@types/react-dom': 18.3.0
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.5
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
- '@radix-ui/rect@1.1.0': {}
+ '@humanwhocodes/module-importer@1.0.1': {}
- '@rc-component/async-validator@5.0.4':
- dependencies:
- '@babel/runtime': 7.24.7
+ '@humanwhocodes/object-schema@2.0.3': {}
- '@rc-component/color-picker@1.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@isaacs/cliui@8.0.2':
dependencies:
- '@babel/runtime': 7.24.7
- '@ctrl/tinycolor': 3.6.1
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
- '@rc-component/context@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@istanbuljs/schema@0.1.3': {}
- '@rc-component/mini-decimal@1.1.0':
+ '@jridgewell/gen-mapping@0.3.5':
dependencies:
- '@babel/runtime': 7.24.7
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
- '@rc-component/mutate-observer@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@jridgewell/resolve-uri@3.1.2': {}
- '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.4.15': {}
- '@rc-component/qrcode@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@jridgewell/trace-mapping@0.3.25':
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
- '@rc-component/tour@1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@nodelib/fs.scandir@2.1.5':
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
- '@rc-component/trigger@2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
- '@remix-run/router@1.17.1': {}
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
'@remix-run/router@1.19.1': {}
@@ -4835,11 +2446,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.18.0':
optional: true
- '@tailwindcss/forms@0.5.7(tailwindcss@3.4.4)':
- dependencies:
- mini-svg-data-uri: 1.4.4
- tailwindcss: 3.4.4
-
'@testing-library/dom@10.4.0':
dependencies:
'@babel/code-frame': 7.24.7
@@ -4899,28 +2505,16 @@ snapshots:
'@types/json-schema@7.0.15': {}
- '@types/lodash-es@4.17.12':
- dependencies:
- '@types/lodash': 4.17.6
-
- '@types/lodash@4.17.6': {}
-
'@types/node@20.14.8':
dependencies:
undici-types: 5.26.5
- '@types/parse-json@4.0.2': {}
-
'@types/prop-types@15.7.12': {}
'@types/react-dom@18.3.0':
dependencies:
'@types/react': 18.3.3
- '@types/react-transition-group@4.4.10':
- dependencies:
- '@types/react': 18.3.3
-
'@types/react@18.3.3':
dependencies:
'@types/prop-types': 15.7.12
@@ -5146,110 +2740,20 @@ snapshots:
ansi-styles@6.2.1: {}
- antd@5.19.1(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@ant-design/colors': 7.1.0
- '@ant-design/cssinjs': 1.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@ant-design/icons': 5.3.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@ant-design/react-slick': 1.1.2(react@18.3.1)
- '@babel/runtime': 7.24.7
- '@ctrl/tinycolor': 3.6.1
- '@rc-component/color-picker': 1.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@rc-component/qrcode': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@rc-component/tour': 1.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- copy-to-clipboard: 3.3.3
- dayjs: 1.11.11
- rc-cascader: 3.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-checkbox: 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-collapse: 3.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-dialog: 9.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-drawer: 7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-dropdown: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-field-form: 2.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-image: 7.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-input: 1.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-input-number: 9.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-mentions: 2.14.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-menu: 9.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-notification: 5.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-pagination: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-picker: 4.6.8(date-fns@3.6.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-rate: 2.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-segmented: 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-select: 14.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-slider: 10.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-steps: 6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-switch: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-table: 7.45.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tabs: 15.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-textarea: 1.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tooltip: 6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tree: 5.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tree-select: 5.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-upload: 4.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- scroll-into-view-if-needed: 3.1.0
- throttle-debounce: 5.0.2
- transitivePeerDependencies:
- - date-fns
- - luxon
- - moment
-
- any-promise@1.3.0: {}
-
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
-
- arg@5.0.2: {}
-
argparse@2.0.1: {}
- aria-hidden@1.2.4:
- dependencies:
- tslib: 2.6.3
-
aria-query@5.3.0:
dependencies:
dequal: 2.0.3
- array-tree-filter@2.1.0: {}
-
array-union@2.1.0: {}
assertion-error@2.0.1: {}
asynckit@0.4.0: {}
- autoprefixer@10.4.19(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.1
- caniuse-lite: 1.0.30001636
- fraction.js: 4.3.7
- normalize-range: 0.1.2
- picocolors: 1.0.1
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- babel-plugin-macros@3.1.0:
- dependencies:
- '@babel/runtime': 7.24.7
- cosmiconfig: 7.1.0
- resolve: 1.22.8
-
balanced-match@1.0.2: {}
- binary-extensions@2.3.0: {}
-
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -5274,8 +2778,6 @@ snapshots:
callsites@3.1.0: {}
- camelcase-css@2.0.1: {}
-
caniuse-lite@1.0.30001636: {}
chai@5.1.1:
@@ -5304,34 +2806,12 @@ snapshots:
check-error@2.1.1: {}
- chokidar@3.6.0:
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.3
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.3
-
- class-variance-authority@0.7.0:
- dependencies:
- clsx: 2.0.0
-
- classnames@2.5.1: {}
-
cliui@8.0.1:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
- clsx@2.0.0: {}
-
- clsx@2.1.1: {}
-
color-convert@1.9.3:
dependencies:
color-name: 1.1.3
@@ -5348,28 +2828,10 @@ snapshots:
dependencies:
delayed-stream: 1.0.0
- commander@4.1.1: {}
-
- compute-scroll-into-view@3.1.0: {}
-
concat-map@0.0.1: {}
- convert-source-map@1.9.0: {}
-
convert-source-map@2.0.0: {}
- copy-to-clipboard@3.3.3:
- dependencies:
- toggle-selection: 1.0.6
-
- cosmiconfig@7.1.0:
- dependencies:
- '@types/parse-json': 4.0.2
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
-
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
@@ -5378,8 +2840,6 @@ snapshots:
css.escape@1.5.1: {}
- cssesc@3.0.0: {}
-
cssstyle@4.0.1:
dependencies:
rrweb-cssom: 0.6.0
@@ -5391,10 +2851,6 @@ snapshots:
whatwg-mimetype: 4.0.0
whatwg-url: 14.0.0
- date-fns@3.6.0: {}
-
- dayjs@1.11.11: {}
-
debug@4.3.5:
dependencies:
ms: 2.1.2
@@ -5411,16 +2867,10 @@ snapshots:
dequal@2.0.3: {}
- detect-node-es@1.1.0: {}
-
- didyoumean@1.2.2: {}
-
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
- dlv@1.1.3: {}
-
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
@@ -5429,11 +2879,6 @@ snapshots:
dom-accessibility-api@0.6.3: {}
- dom-helpers@5.2.1:
- dependencies:
- '@babel/runtime': 7.24.7
- csstype: 3.1.3
-
eastasianwidth@0.2.0: {}
electron-to-chromium@1.4.810: {}
@@ -5444,10 +2889,6 @@ snapshots:
entities@4.5.0: {}
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
esbuild@0.21.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.21.5
@@ -5600,8 +3041,6 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
- find-root@1.1.0: {}
-
find-up@5.0.0:
dependencies:
locate-path: 6.0.0
@@ -5626,23 +3065,17 @@ snapshots:
combined-stream: 1.0.8
mime-types: 2.1.35
- fraction.js@4.3.7: {}
-
fs.realpath@1.0.0: {}
fsevents@2.3.3:
optional: true
- function-bind@1.1.2: {}
-
gensync@1.0.0-beta.2: {}
get-caller-file@2.0.5: {}
get-func-name@2.0.2: {}
- get-nonce@1.0.1: {}
-
get-stream@8.0.1: {}
glob-parent@5.1.2:
@@ -5692,14 +3125,6 @@ snapshots:
has-flag@4.0.0: {}
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- hoist-non-react-statics@3.3.2:
- dependencies:
- react-is: 16.13.1
-
html-encoding-sniffer@4.0.0:
dependencies:
whatwg-encoding: 3.1.1
@@ -5744,20 +3169,6 @@ snapshots:
inherits@2.0.4: {}
- invariant@2.2.4:
- dependencies:
- loose-envify: 1.4.0
-
- is-arrayish@0.2.1: {}
-
- is-binary-path@2.1.0:
- dependencies:
- binary-extensions: 2.3.0
-
- is-core-module@2.14.0:
- dependencies:
- hasown: 2.0.2
-
is-docker@2.2.1: {}
is-extglob@2.1.1: {}
@@ -5819,8 +3230,6 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- jiti@1.21.6: {}
-
js-tokens@4.0.0: {}
js-yaml@4.1.0:
@@ -5859,8 +3268,6 @@ snapshots:
json-buffer@3.0.1: {}
- json-parse-even-better-errors@2.3.1: {}
-
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -5869,10 +3276,6 @@ snapshots:
json-stable-stringify-without-jsonify@1.0.1: {}
- json2mq@0.2.0:
- dependencies:
- string-convert: 0.2.1
-
json5@2.2.3: {}
keyv@4.5.4:
@@ -5884,18 +3287,10 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
- lilconfig@2.1.0: {}
-
- lilconfig@3.1.2: {}
-
- lines-and-columns@1.2.4: {}
-
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
- lodash-es@4.17.21: {}
-
lodash.merge@4.6.2: {}
lodash@4.17.21: {}
@@ -5914,10 +3309,6 @@ snapshots:
dependencies:
yallist: 3.1.1
- lucide-react@0.396.0(react@18.3.1):
- dependencies:
- react: 18.3.1
-
lz-string@1.5.0: {}
magic-string@0.30.10:
@@ -5951,564 +3342,133 @@ snapshots:
mimic-fn@4.0.0: {}
- min-indent@1.0.1: {}
-
- mini-svg-data-uri@1.4.4: {}
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.11
-
- minimatch@9.0.4:
- dependencies:
- brace-expansion: 2.0.1
-
- minipass@7.1.2: {}
-
- ms@2.1.2: {}
-
- mz@2.7.0:
- dependencies:
- any-promise: 1.3.0
- object-assign: 4.1.1
- thenify-all: 1.6.0
-
- nanoid@3.3.7: {}
-
- nanoid@5.0.7: {}
-
- natural-compare@1.4.0: {}
-
- node-releases@2.0.14: {}
-
- normalize-path@3.0.0: {}
-
- normalize-range@0.1.2: {}
-
- npm-run-path@5.3.0:
- dependencies:
- path-key: 4.0.0
-
- nwsapi@2.2.12: {}
-
- object-assign@4.1.1: {}
-
- object-hash@3.0.0: {}
-
- once@1.4.0:
- dependencies:
- wrappy: 1.0.2
-
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
- open@8.4.2:
- dependencies:
- define-lazy-prop: 2.0.0
- is-docker: 2.2.1
- is-wsl: 2.2.0
-
- optionator@0.9.4:
- dependencies:
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.5
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- package-json-from-dist@1.0.0: {}
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.24.7
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
-
- parse5@7.1.2:
- dependencies:
- entities: 4.5.0
-
- path-exists@4.0.0: {}
-
- path-is-absolute@1.0.1: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- path-parse@1.0.7: {}
-
- path-scurry@1.11.1:
- dependencies:
- lru-cache: 10.4.2
- minipass: 7.1.2
-
- path-type@4.0.0: {}
-
- pathe@1.1.2: {}
-
- pathval@2.0.0: {}
-
- picocolors@1.0.1: {}
-
- picomatch@2.3.1: {}
-
- pify@2.3.0: {}
-
- pirates@4.0.6: {}
-
- pnpm@9.5.0: {}
-
- postcss-import@15.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
- read-cache: 1.0.0
- resolve: 1.22.8
-
- postcss-js@4.0.1(postcss@8.4.38):
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.4.38
-
- postcss-load-config@4.0.2(postcss@8.4.38):
- dependencies:
- lilconfig: 3.1.2
- yaml: 2.4.5
- optionalDependencies:
- postcss: 8.4.38
-
- postcss-nested@6.0.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-selector-parser: 6.1.0
-
- postcss-selector-parser@6.1.0:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-value-parser@4.2.0: {}
-
- postcss@8.4.38:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
-
- prelude-ls@1.2.1: {}
-
- prettier@3.3.2: {}
-
- pretty-format@27.5.1:
- dependencies:
- ansi-regex: 5.0.1
- ansi-styles: 5.2.0
- react-is: 17.0.2
-
- prop-types@15.8.1:
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
-
- property-expr@2.0.6: {}
-
- psl@1.9.0: {}
-
- punycode@2.3.1: {}
-
- querystringify@2.2.0: {}
-
- queue-microtask@1.2.3: {}
-
- rc-cascader@3.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- array-tree-filter: 2.1.0
- classnames: 2.5.1
- rc-select: 14.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tree: 5.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-checkbox@3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-collapse@3.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-dialog@9.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-drawer@7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-dropdown@4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-field-form@2.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/async-validator': 5.0.4
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-image@7.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-dialog: 9.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-input-number@9.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/mini-decimal': 1.1.0
- classnames: 2.5.1
- rc-input: 1.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
- rc-input@1.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ min-indent@1.0.1: {}
- rc-mentions@2.14.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ minimatch@3.1.2:
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-input: 1.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-menu: 9.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-textarea: 1.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ brace-expansion: 1.1.11
- rc-menu@9.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ minimatch@9.0.4:
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ brace-expansion: 2.0.1
- rc-motion@2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ minipass@7.1.2: {}
- rc-notification@5.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ ms@2.1.2: {}
- rc-overflow@1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ nanoid@3.3.7: {}
- rc-pagination@4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ nanoid@5.0.7: {}
- rc-picker@4.6.8(date-fns@3.6.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- optionalDependencies:
- date-fns: 3.6.0
- dayjs: 1.11.11
+ natural-compare@1.4.0: {}
- rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ node-releases@2.0.14: {}
- rc-rate@2.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ npm-run-path@5.3.0:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ path-key: 4.0.0
- rc-resize-observer@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- resize-observer-polyfill: 1.5.1
+ nwsapi@2.2.12: {}
- rc-segmented@2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ once@1.4.0:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ wrappy: 1.0.2
- rc-select@14.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ onetime@6.0.0:
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-virtual-list: 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ mimic-fn: 4.0.0
- rc-slider@10.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ open@8.4.2:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
- rc-steps@6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ optionator@0.9.4:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
- rc-switch@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ p-limit@3.1.0:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ yocto-queue: 0.1.0
- rc-table@7.45.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ p-locate@5.0.0:
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/context': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-virtual-list: 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ p-limit: 3.1.0
- rc-tabs@15.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-dropdown: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-menu: 9.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ package-json-from-dist@1.0.0: {}
- rc-textarea@1.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ parent-module@1.0.1:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-input: 1.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ callsites: 3.1.0
- rc-tooltip@6.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ parse5@7.1.2:
dependencies:
- '@babel/runtime': 7.24.7
- '@rc-component/trigger': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- classnames: 2.5.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ entities: 4.5.0
- rc-tree-select@5.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-select: 14.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-tree: 5.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ path-exists@4.0.0: {}
- rc-tree@5.8.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-motion: 2.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-virtual-list: 3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ path-is-absolute@1.0.1: {}
- rc-upload@4.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ path-key@3.1.1: {}
- rc-util@5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-is: 18.3.1
+ path-key@4.0.0: {}
- rc-virtual-list@3.14.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ path-scurry@1.11.1:
dependencies:
- '@babel/runtime': 7.24.7
- classnames: 2.5.1
- rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- rc-util: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
+ lru-cache: 10.4.2
+ minipass: 7.1.2
- react-day-picker@8.10.1(date-fns@3.6.0)(react@18.3.1):
- dependencies:
- date-fns: 3.6.0
- react: 18.3.1
+ path-type@4.0.0: {}
- react-dom@18.3.1(react@18.3.1):
- dependencies:
- loose-envify: 1.4.0
- react: 18.3.1
- scheduler: 0.23.2
+ pathe@1.1.2: {}
+
+ pathval@2.0.0: {}
+
+ picocolors@1.0.1: {}
+
+ picomatch@2.3.1: {}
- react-hook-form@7.52.1(react@18.3.1):
+ postcss@8.4.38:
dependencies:
- react: 18.3.1
+ nanoid: 3.3.7
+ picocolors: 1.0.1
+ source-map-js: 1.2.0
+
+ prelude-ls@1.2.1: {}
- react-icons@5.2.1(react@18.3.1):
+ prettier@3.3.2: {}
+
+ pretty-format@27.5.1:
dependencies:
- react: 18.3.1
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
- react-is@16.13.1: {}
+ property-expr@2.0.6: {}
- react-is@17.0.2: {}
+ psl@1.9.0: {}
- react-is@18.3.1: {}
+ punycode@2.3.1: {}
- react-refresh@0.14.2: {}
+ querystringify@2.2.0: {}
- react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
+ queue-microtask@1.2.3: {}
- react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1):
+ react-dom@18.3.1(react@18.3.1):
dependencies:
+ loose-envify: 1.4.0
react: 18.3.1
- react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1)
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
- tslib: 2.6.3
- use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1)
- use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
- optionalDependencies:
- '@types/react': 18.3.3
+ scheduler: 0.23.2
- react-router-dom@6.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@remix-run/router': 1.17.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- react-router: 6.24.1(react@18.3.1)
+ react-is@17.0.2: {}
+
+ react-refresh@0.14.2: {}
react-router-dom@6.26.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
@@ -6517,46 +3477,15 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
react-router: 6.26.1(react@18.3.1)
- react-router@6.24.1(react@18.3.1):
- dependencies:
- '@remix-run/router': 1.17.1
- react: 18.3.1
-
react-router@6.26.1(react@18.3.1):
dependencies:
'@remix-run/router': 1.19.1
react: 18.3.1
- react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- get-nonce: 1.0.1
- invariant: 2.2.4
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
- dependencies:
- '@babel/runtime': 7.24.7
- dom-helpers: 5.2.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
-
react@18.3.1:
dependencies:
loose-envify: 1.4.0
- read-cache@1.0.0:
- dependencies:
- pify: 2.3.0
-
- readdirp@3.6.0:
- dependencies:
- picomatch: 2.3.1
-
redent@3.0.0:
dependencies:
indent-string: 4.0.0
@@ -6570,16 +3499,8 @@ snapshots:
requires-port@1.0.0: {}
- resize-observer-polyfill@1.5.1: {}
-
resolve-from@4.0.0: {}
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.14.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
reusify@1.0.4: {}
rimraf@3.0.2:
@@ -6635,10 +3556,6 @@ snapshots:
dependencies:
loose-envify: 1.4.0
- scroll-into-view-if-needed@3.1.0:
- dependencies:
- compute-scroll-into-view: 3.1.0
-
semver@6.3.1: {}
semver@7.6.2: {}
@@ -6657,16 +3574,12 @@ snapshots:
source-map-js@1.2.0: {}
- source-map@0.5.7: {}
-
source-map@0.7.4: {}
stackback@0.0.2: {}
std-env@3.7.0: {}
- string-convert@0.2.1: {}
-
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -6695,20 +3608,6 @@ snapshots:
strip-json-comments@3.1.1: {}
- stylis@4.2.0: {}
-
- stylis@4.3.2: {}
-
- sucrase@3.35.0:
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- commander: 4.1.1
- glob: 10.4.5
- lines-and-columns: 1.2.4
- mz: 2.7.0
- pirates: 4.0.6
- ts-interface-checker: 0.1.13
-
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -6717,43 +3616,8 @@ snapshots:
dependencies:
has-flag: 4.0.0
- supports-preserve-symlinks-flag@1.0.0: {}
-
symbol-tree@3.2.4: {}
- tailwind-merge@2.4.0: {}
-
- tailwindcss-animate@1.0.7(tailwindcss@3.4.4):
- dependencies:
- tailwindcss: 3.4.4
-
- tailwindcss@3.4.4:
- dependencies:
- '@alloc/quick-lru': 5.2.0
- arg: 5.0.2
- chokidar: 3.6.0
- didyoumean: 1.2.2
- dlv: 1.1.3
- fast-glob: 3.3.2
- glob-parent: 6.0.2
- is-glob: 4.0.3
- jiti: 1.21.6
- lilconfig: 2.1.0
- micromatch: 4.0.7
- normalize-path: 3.0.0
- object-hash: 3.0.0
- picocolors: 1.0.1
- postcss: 8.4.38
- postcss-import: 15.1.0(postcss@8.4.38)
- postcss-js: 4.0.1(postcss@8.4.38)
- postcss-load-config: 4.0.2(postcss@8.4.38)
- postcss-nested: 6.0.1(postcss@8.4.38)
- postcss-selector-parser: 6.1.0
- resolve: 1.22.8
- sucrase: 3.35.0
- transitivePeerDependencies:
- - ts-node
-
test-exclude@7.0.1:
dependencies:
'@istanbuljs/schema': 0.1.3
@@ -6762,16 +3626,6 @@ snapshots:
text-table@0.2.0: {}
- thenify-all@1.6.0:
- dependencies:
- thenify: 3.3.1
-
- thenify@3.3.1:
- dependencies:
- any-promise: 1.3.0
-
- throttle-debounce@5.0.2: {}
-
tiny-case@1.0.3: {}
tinybench@2.8.0: {}
@@ -6788,8 +3642,6 @@ snapshots:
dependencies:
is-number: 7.0.0
- toggle-selection@1.0.6: {}
-
toposort@2.0.2: {}
tough-cookie@4.1.4:
@@ -6807,10 +3659,6 @@ snapshots:
dependencies:
typescript: 5.5.2
- ts-interface-checker@0.1.13: {}
-
- tslib@2.6.3: {}
-
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -6840,27 +3688,10 @@ snapshots:
querystringify: 2.2.0
requires-port: 1.0.0
- use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
- use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
- dependencies:
- detect-node-es: 1.1.0
- react: 18.3.1
- tslib: 2.6.3
- optionalDependencies:
- '@types/react': 18.3.3
-
use-sync-external-store@1.2.0(react@18.3.1):
dependencies:
react: 18.3.1
- util-deprecate@1.0.2: {}
-
uuid@10.0.0: {}
vite-node@2.0.4(@types/node@20.14.8):
@@ -6880,12 +3711,6 @@ snapshots:
- supports-color
- terser
- vite-plugin-singlefile@2.0.2(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)):
- dependencies:
- micromatch: 4.0.7
- rollup: 4.18.0
- vite: 5.3.1(@types/node@20.14.8)
-
vite@5.3.1(@types/node@20.14.8):
dependencies:
esbuild: 0.21.5
@@ -6980,10 +3805,6 @@ snapshots:
yallist@3.1.1: {}
- yaml@1.10.2: {}
-
- yaml@2.4.5: {}
-
yargs-parser@21.1.1: {}
yargs@17.7.2:
diff --git a/website/package.json b/website/package.json
index 0748cf5..b681dcc 100644
--- a/website/package.json
+++ b/website/package.json
@@ -10,9 +10,9 @@
"preview": "vite preview"
},
"dependencies": {
- "@react-formgen/json-schema": "0.0.0-alpha.23",
- "@react-formgen/yup": "0.0.0-alpha.23",
- "@react-formgen/zod": "0.0.0-alpha.23",
+ "@react-formgen/json-schema": "0.0.0-alpha.24",
+ "@react-formgen/yup": "0.0.0-alpha.24",
+ "@react-formgen/zod": "0.0.0-alpha.24",
"ajv": "^8.16.0",
"ajv-formats": "^3.0.1",
"json-schema": "^0.4.0",
diff --git a/website/src/components/templates/json-schema/BaseFormRoot.tsx b/website/src/components/templates/json-schema/BaseFormRoot.tsx
new file mode 100644
index 0000000..a1c6d9f
--- /dev/null
+++ b/website/src/components/templates/json-schema/BaseFormRoot.tsx
@@ -0,0 +1,86 @@
+import React from "react";
+import {
+ FormRootProps,
+ FormgenJSONSchema7,
+ useFormContext,
+ FormState,
+ useRenderTemplate,
+} from "@react-formgen/json-schema";
+import { ComplexWrapperStyle } from "./common/ComplexWrapperStyle";
+import { AjvInstance } from "./common/AjvInstance";
+
+/**
+ * BaseFormRoot
+ * The root form component that renders the form based on the schema and handles submission.
+ * @param {FormRootProps} props - The props for the BaseFormRoot.
+ * @param {Function} props.onSubmit - Callback function when form is submitted successfully.
+ * @param {Function} props.onError - Callback function when form submission has errors.
+ * @returns {JSX.Element} - The form component.
+ */
+export const BaseFormRoot: React.FC = ({
+ onSubmit,
+ onError,
+}) => {
+ const readonly = useFormContext((state: FormState) => state.readonly);
+ const schema = useFormContext((state: FormState) => state.schema);
+ const formData = useFormContext((state: FormState) => state.formData);
+ const setErrors = useFormContext((state: FormState) => state.setErrors);
+ const RenderTemplate = useRenderTemplate();
+ const [formBorder, setFormBorder] = React.useState("none");
+
+ if (readonly) {
+ return (
+
+ {Object.keys(schema.properties || {}).map((key) => (
+
+ ))}
+
+ );
+ }
+
+ const handleSubmit = (event: React.FormEvent) => {
+ event.preventDefault();
+ const validate = AjvInstance.compile(schema);
+ const valid = validate(formData);
+ if (valid) {
+ setFormBorder("1px solid green");
+ setErrors(null);
+ onSubmit(formData);
+ } else {
+ setFormBorder("1px solid red");
+ setErrors(validate.errors ?? null);
+ onError(validate.errors ?? [], formData);
+ }
+ };
+
+ return (
+
+ );
+};
diff --git a/website/src/components/templates/json-schema/common/AjvInstance.tsx b/website/src/components/templates/json-schema/common/AjvInstance.tsx
new file mode 100644
index 0000000..064bafe
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/AjvInstance.tsx
@@ -0,0 +1,9 @@
+import Ajv from 'ajv'
+import addFormats from 'ajv-formats'
+
+// Single shared Ajv instance with formats
+export const AjvInstance = new Ajv({
+ allErrors: true,
+ verbose: true,
+}).addKeyword('uiSchema')
+addFormats(AjvInstance)
diff --git a/website/src/components/templates/json-schema/common/ComplexWrapperStyle.tsx b/website/src/components/templates/json-schema/common/ComplexWrapperStyle.tsx
new file mode 100644
index 0000000..17794e0
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/ComplexWrapperStyle.tsx
@@ -0,0 +1,7 @@
+import React from 'react'
+
+export const ComplexWrapperStyle: React.CSSProperties = {
+ display: 'flex',
+ flexWrap: 'wrap',
+ gap: '1rem',
+}
diff --git a/website/src/components/templates/json-schema/common/ErrorsList.tsx b/website/src/components/templates/json-schema/common/ErrorsList.tsx
new file mode 100644
index 0000000..8f1c69c
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/ErrorsList.tsx
@@ -0,0 +1,19 @@
+import React from 'react'
+import { ErrorObject } from 'ajv'
+
+/**
+ * ErrorsList
+ * Displays a list of validation errors for a given path.
+ * @param {Object} props - The props for the component.
+ * @param {ErrorObject[]} props.errorsAtPath - The list of error objects at the path.
+ * @returns {JSX.Element} - The errors list component.
+ */
+export const ErrorsList: React.FC<{ errorsAtPath: ErrorObject[] }> = ({
+ errorsAtPath,
+}) => {
+ return errorsAtPath.map((error, index) => (
+
+ {error.message}
+
+ ))
+}
diff --git a/website/src/components/templates/json-schema/common/ReadonlyComplexTemplate.tsx b/website/src/components/templates/json-schema/common/ReadonlyComplexTemplate.tsx
new file mode 100644
index 0000000..d0e5140
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/ReadonlyComplexTemplate.tsx
@@ -0,0 +1,33 @@
+import React from 'react'
+
+/**
+ * ReadonlyComplexTemplate
+ * Renders a readonly view of complex data (objects or arrays) with a title and description.
+ * @param {Object} props - The props for the component.
+ * @param {string} [props.title] - The title of the field.
+ * @param {string} [props.description] - The description of the field.
+ * @param {React.ReactNode} props.children - The child components to render.
+ * @returns {JSX.Element} - The readonly complex component.
+ */
+export const ReadonlyComplexTemplate: React.FC<{
+ title?: string
+ description?: string
+ children: React.ReactNode
+}> = ({ title, description, children }) => {
+ return (
+
+ {title &&
{title} }
+ {description && (
+
{description}
+ )}
+
{children}
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/common/ReadonlyPrimitiveTemplate.tsx b/website/src/components/templates/json-schema/common/ReadonlyPrimitiveTemplate.tsx
new file mode 100644
index 0000000..f9a1da0
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/ReadonlyPrimitiveTemplate.tsx
@@ -0,0 +1,21 @@
+import React from 'react'
+import { WrapperStyle } from './WrapperStyle'
+
+export const ReadonlyPrimitiveTemplate: React.FC<{
+ title?: string
+ value?: string | number | boolean
+ description?: string
+}> = ({ title, value, description }) => {
+ return (
+
+ {title &&
{title} }
+
{value ?? 'N/A'}
+ {description &&
{description} }
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/common/WrapperStyle.ts b/website/src/components/templates/json-schema/common/WrapperStyle.ts
new file mode 100644
index 0000000..04b44de
--- /dev/null
+++ b/website/src/components/templates/json-schema/common/WrapperStyle.ts
@@ -0,0 +1,6 @@
+import React from 'react'
+
+export const WrapperStyle: React.CSSProperties = {
+ display: 'flex',
+ flexDirection: 'column',
+}
diff --git a/website/src/components/templates/json-schema/hooks/useWindowSize.ts b/website/src/components/templates/json-schema/hooks/useWindowSize.ts
new file mode 100644
index 0000000..4d75921
--- /dev/null
+++ b/website/src/components/templates/json-schema/hooks/useWindowSize.ts
@@ -0,0 +1,32 @@
+import React from 'react'
+
+export function useWindowSize(): {
+ width: number | null
+ height: number | null
+} {
+ const [size, setSize] = React.useState<{
+ width: number | null
+ height: number | null
+ }>({
+ width: null,
+ height: null,
+ })
+
+ React.useLayoutEffect(() => {
+ const handleResize = () => {
+ setSize({
+ width: window.innerWidth,
+ height: window.innerHeight,
+ })
+ }
+
+ handleResize()
+ window.addEventListener('resize', handleResize)
+
+ return () => {
+ window.removeEventListener('resize', handleResize)
+ }
+ }, [])
+
+ return size
+}
diff --git a/website/src/components/templates/json-schema/templates/array/MultiSelectCheckboxTemplate.tsx b/website/src/components/templates/json-schema/templates/array/MultiSelectCheckboxTemplate.tsx
new file mode 100644
index 0000000..a9aa95f
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/array/MultiSelectCheckboxTemplate.tsx
@@ -0,0 +1,101 @@
+import React from 'react'
+import {
+ ArraySchema,
+ FormgenJSONSchema7,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * MultiSelectCheckboxTemplate
+ * Renders a set of checkboxes for multi-select arrays with unique items.
+ * @param {Object} props - The props for the component.
+ * @param {ArraySchema} props.schema - The schema for the array property.
+ * @param {string[]} props.path - The path to the array property in the form data.
+ * @returns {JSX.Element} - The multi-select checkbox component.
+ */
+export const MultiSelectCheckboxTemplate: React.FC<{
+ schema: ArraySchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, [])
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ const options = React.useMemo(() => {
+ if (typeof schema.items === 'object' && !Array.isArray(schema.items)) {
+ if ('enum' in schema.items && schema.items.enum) {
+ return schema.items.enum.map((option) => ({
+ value: option,
+ label: option,
+ }))
+ } else if ('oneOf' in schema.items && schema.items.oneOf) {
+ return schema.items.oneOf
+ .filter(
+ (item): item is FormgenJSONSchema7 =>
+ typeof item === 'object' && !Array.isArray(item),
+ )
+ .map((option) => ({
+ value: option.const,
+ label: option.title,
+ }))
+ }
+ }
+ return []
+ }, [schema])
+
+ const handleChange = (event: React.ChangeEvent) => {
+ const selectedValue = event.target.value
+ const updatedValues = valueAtPath.includes(selectedValue)
+ ? valueAtPath.filter((item: string) => item !== selectedValue)
+ : [...valueAtPath, selectedValue]
+ setValueAtPath(updatedValues)
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.description &&
{schema.description} }
+
+ {options
+ .filter(
+ (option) =>
+ option.value !== undefined && option.label !== undefined,
+ )
+ .map((option) => (
+
+
+ {String(option.label)}
+
+ ))}
+
+ {errorsAtPath &&
}
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/array/MultiSelectTemplate.tsx b/website/src/components/templates/json-schema/templates/array/MultiSelectTemplate.tsx
new file mode 100644
index 0000000..cd60ca9
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/array/MultiSelectTemplate.tsx
@@ -0,0 +1,92 @@
+import React from 'react'
+import {
+ ArraySchema,
+ FormgenJSONSchema7,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * MultiSelectTemplate
+ * Renders a multi-select dropdown for arrays with unique items.
+ * @param {Object} props - The props for the component.
+ * @param {ArraySchema} props.schema - The schema for the array property.
+ * @param {string[]} props.path - The path to the array property in the form data.
+ * @returns {JSX.Element} - The multi-select field component.
+ */
+export const MultiSelectTemplate: React.FC<{
+ schema: ArraySchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, [])
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ const options = React.useMemo(() => {
+ if (typeof schema.items === 'object' && !Array.isArray(schema.items)) {
+ if ('enum' in schema.items && schema.items.enum) {
+ return schema.items.enum.map((option) => ({
+ value: option,
+ label: option,
+ }))
+ } else if ('oneOf' in schema.items && schema.items.oneOf) {
+ return schema.items.oneOf
+ .filter(
+ (item): item is FormgenJSONSchema7 =>
+ typeof item === 'object' && !Array.isArray(item),
+ )
+ .map((option) => ({
+ value: option.const,
+ label: option.title,
+ }))
+ }
+ }
+ return []
+ }, [schema])
+
+ const handleChange = (event: React.ChangeEvent) => {
+ const selectedOptions = Array.from(
+ event.target.selectedOptions,
+ (option) => option.value,
+ )
+ setValueAtPath(selectedOptions)
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.description && {schema.description} }
+
+ {options.map((option) => (
+
+ {String(option.label)}
+
+ ))}
+
+ {errorsAtPath && }
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/array/SimpleArrayTemplate.tsx b/website/src/components/templates/json-schema/templates/array/SimpleArrayTemplate.tsx
new file mode 100644
index 0000000..e6641f1
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/array/SimpleArrayTemplate.tsx
@@ -0,0 +1,142 @@
+import React from 'react'
+import {
+ ArraySchema,
+ FormgenJSONSchema7,
+ useFormContext,
+ useArrayTemplate,
+ FormState,
+ useRenderTemplate,
+ generateInitialData,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyComplexTemplate } from '../../common/ReadonlyComplexTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { ComplexWrapperStyle } from '../../common/ComplexWrapperStyle'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * SimpleArrayTemplate
+ * Renders an array schema where items are of the same type.
+ * @param {Object} props - The props for the component.
+ * @param {ArraySchema} props.schema - The schema of the array.
+ * @param {string[]} props.path - The path to the array in the form data.
+ * @returns {JSX.Element} - The simple array template component.
+ */
+export const SimpleArrayTemplate: React.FC<{
+ schema: ArraySchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const definitions = useFormContext(
+ (state: FormState) => state.schema.definitions || {},
+ )
+ const RenderTemplate = useRenderTemplate()
+
+ const { valueAtPath, errorsAtPath, moveItem, removeItem, addItem } =
+ useArrayTemplate(path, () =>
+ generateInitialData(schema.items as FormgenJSONSchema7, definitions),
+ )
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ {Array.isArray(valueAtPath) && valueAtPath.length > 0 ? (
+ valueAtPath.map((_, index: number) => (
+
+
+
+ ))
+ ) : (
+ No items available
+ )}
+
+ )
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.description &&
{schema.description} }
+ {errorsAtPath &&
}
+
+ {schema.items &&
+ Array.isArray(valueAtPath) &&
+ valueAtPath.map((_, index: number) => (
+
+
+
+ moveItem(index, 'up')}
+ disabled={index === 0}
+ >
+ Move Up
+
+ moveItem(index, 'down')}
+ disabled={index === valueAtPath.length - 1}
+ >
+ Move Down
+
+ removeItem(index)}>
+ Remove
+
+
+
+ ))}
+
+ Add Item
+
+
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/array/TupleArrayTemplate.tsx b/website/src/components/templates/json-schema/templates/array/TupleArrayTemplate.tsx
new file mode 100644
index 0000000..3a2e4c4
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/array/TupleArrayTemplate.tsx
@@ -0,0 +1,126 @@
+import React from 'react'
+import {
+ ArraySchema,
+ FormgenJSONSchema7,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useRenderTemplate,
+ resolveSchema,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ErrorsList } from '../../common/ErrorsList'
+import { ComplexWrapperStyle } from '../../common/ComplexWrapperStyle'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * TupleArrayTemplate
+ * Renders a tuple array where each item has a different schema.
+ * @param {Object} props - The props for the component.
+ * @param {ArraySchema} props.schema - The schema for the array property.
+ * @param {string[]} props.path - The path to the array property in the form data.
+ * @returns {JSX.Element} - The tuple array template component.
+ */
+export const TupleArrayTemplate: React.FC<{
+ schema: ArraySchema
+ path: string[]
+}> = ({ schema, path }) => {
+ // To account for the elements of the tuple array having their respective data generated at form creation and the effect this has on validation, we need to first check if this tuple is a required property. If it's not, then we should reset the tuple's initial data to an empty array.
+ const rootSchema = useFormContext((state: FormState) => state.schema)
+ // We can use the current path and cross reference it with the root schema to determine if this tuple instance is a required property of its parent object.
+ const parentPath = path.slice(0, -1)
+ // We'll get the parent schema by iterating through the root schema using the parent path, resolving any $ref schemas along the way.
+ let parentSchema = rootSchema
+ for (const key of parentPath) {
+ const newSchema =
+ parentSchema.type === 'object'
+ ? (resolveSchema(
+ parentSchema.properties?.[key] as FormgenJSONSchema7,
+ rootSchema.definitions,
+ ) as FormgenJSONSchema7)
+ : (resolveSchema(
+ parentSchema.items as FormgenJSONSchema7,
+ rootSchema.definitions,
+ ) as FormgenJSONSchema7)
+
+ parentSchema = newSchema
+ }
+
+ const isRequired = parentSchema?.required?.includes(path[path.length - 1])
+
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const [parentValue, setParentValue] = useFormDataAtPath(parentPath)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const RenderTemplate = useRenderTemplate()
+ const required = useIsRequired(path)
+
+ return (
+
+ {valueAtPath ? (
+ <>
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.description &&
{schema.description} }
+
+ {errorsAtPath && }
+ {Array.isArray(schema.items) &&
+ schema.items.map((itemSchema, index) => (
+
+ ))}
+
+ {/* If the tuple is not required, render a button to remove it */}
+ {!readonly && !isRequired && valueAtPath && (
+
+ setParentValue({
+ ...parentValue,
+ [path[path.length - 1]]: undefined,
+ })
+ }
+ type="button"
+ style={{
+ width: '100%',
+ }}
+ >
+ Remove {schema.title ?? path[path.length - 1]}
+
+ )}
+ >
+ ) : (
+ !readonly && (
+
setValueAtPath([])}
+ type="button"
+ style={{
+ width: '100%',
+ }}
+ >
+ Add {schema.title ?? path[path.length - 1]}
+
+ )
+ )}
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/boolean/CheckboxTemplate.tsx b/website/src/components/templates/json-schema/templates/boolean/CheckboxTemplate.tsx
new file mode 100644
index 0000000..2ded878
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/boolean/CheckboxTemplate.tsx
@@ -0,0 +1,63 @@
+import React from 'react'
+import {
+ BooleanSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * CheckboxTemplate
+ * Renders a checkbox for boolean schemas without oneOf options.
+ * @param {Object} props - The props for the component.
+ * @param {BooleanSchema} props.schema - The schema for the checkbox boolean field.
+ * @param {string[]} props.path - The path to the checkbox boolean field in the form data.
+ * @returns {JSX.Element} - The checkbox boolean field component.
+ */
+export const CheckboxTemplate: React.FC<{
+ schema: BooleanSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ )
+ }
+
+ return (
+
+
+ setValueAtPath(event.target.checked)}
+ style={{ marginRight: '8px' }}
+ />
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+
+ {schema.description &&
{schema.description} }
+ {errorsAtPath &&
}
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/boolean/RadioTemplate.tsx b/website/src/components/templates/json-schema/templates/boolean/RadioTemplate.tsx
new file mode 100644
index 0000000..760198b
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/boolean/RadioTemplate.tsx
@@ -0,0 +1,73 @@
+import React from 'react'
+import {
+ BooleanSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * RadioTemplate
+ * Renders radio buttons for boolean schemas with oneOf options.
+ * @param {Object} props - The props for the component.
+ * @param {BooleanSchema} props.schema - The schema for the radio boolean field.
+ * @param {string[]} props.path - The path to the radio boolean field in the form data.
+ * @returns {JSX.Element} - The radio boolean field component.
+ */
+export const RadioTemplate: React.FC<{
+ schema: BooleanSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ )
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.oneOf?.map((option) => (
+
+ setValueAtPath(option.const)}
+ style={{
+ height: '16px',
+ width: '16px',
+ marginRight: '8px',
+ }}
+ />
+ {option.title}
+
+ ))}
+ {schema.description && {schema.description} }
+ {errorsAtPath && }
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/index.tsx b/website/src/components/templates/json-schema/templates/index.tsx
new file mode 100644
index 0000000..d713581
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/index.tsx
@@ -0,0 +1,211 @@
+import React from "react";
+import {
+ StringSchema,
+ ArraySchema,
+ NumberSchema,
+ BooleanSchema,
+ ObjectSchema,
+ FormgenJSONSchema7,
+ Templates,
+} from "@react-formgen/json-schema";
+
+import { MultiSelectCheckboxTemplate } from "./array/MultiSelectCheckboxTemplate";
+// import { MultiSelectTemplate } from './array/MultiSelectTemplate' // Not in use, just for reference
+import { SimpleArrayTemplate } from "./array/SimpleArrayTemplate";
+import { TupleArrayTemplate } from "./array/TupleArrayTemplate";
+import { CheckboxTemplate } from "./boolean/CheckboxTemplate";
+import { RadioTemplate } from "./boolean/RadioTemplate";
+import { SimpleObjectTemplate } from "./object/SimpleObjectTemplate";
+// import { TextareaTemplate } from './string/TextareaTemplate' // Not in use, just for reference
+import { InputTemplate } from "./union/InputTemplate";
+// import { MultipleChoiceTemplate } from './union/MultipleChoiceTemplate' // Not in use, just for reference
+import { SelectTemplate } from "./union/SelectTemplate";
+
+/**
+ * BaseStringTemplate
+ * Handles switching between input, select, and date fields based on schema metadata.
+ * @param {Object} props - The props for the component.
+ * @param {StringSchema} props.schema - The schema for the string property.
+ * @param {string[]} props.path - The path to the string property in the form data.
+ * @returns {JSX.Element} - The string template component.
+ */
+export const BaseStringTemplate: React.FC<{
+ schema: StringSchema;
+ path: string[];
+}> = ({ schema, path }) => {
+ const stringMatchers = [
+ {
+ matcher: (schema: StringSchema) => schema.enum || schema.oneOf,
+ render: () => ,
+ // Alternative render method
+ // render: () => (
+ //
+ // ),
+ },
+ {
+ matcher: (schema: StringSchema) =>
+ schema.format && ["date", "date-time"].includes(schema.format),
+ render: () => (
+
+ ),
+ },
+ {
+ matcher: (schema: StringSchema) => schema.format === "email",
+ render: () => (
+
+ ),
+ },
+ {
+ matcher: (schema: StringSchema) => schema.format === "uri",
+ render: () => (
+
+ ),
+ },
+ {
+ matcher: () => true,
+ render: () => ,
+ },
+ ];
+
+ for (const { matcher, render } of stringMatchers) {
+ if (matcher(schema)) {
+ return render();
+ }
+ }
+ return ;
+};
+
+/**
+ * BaseNumberTemplate
+ * Renders a number input or select field based on the number schema.
+ * @param {Object} props - The props for the component.
+ * @param {NumberSchema} props.schema - The schema for the number property.
+ * @param {string[]} props.path - The path to the number property in the form data.
+ * @returns {JSX.Element} - The number template component.
+ */
+export const BaseNumberTemplate: React.FC<{
+ schema: NumberSchema;
+ path: string[];
+}> = ({ schema, path }) => {
+ const numberMatchers = [
+ {
+ matcher: (schema: NumberSchema) => schema.enum || schema.oneOf,
+ render: () => ,
+ },
+ {
+ matcher: () => true,
+ render: () => (
+
+ ),
+ },
+ ];
+
+ for (const { matcher, render } of numberMatchers) {
+ if (matcher(schema)) {
+ return render();
+ }
+ }
+ return ;
+};
+
+/**
+ * BaseBooleanTemplate
+ * Renders a checkbox or radio buttons for boolean schemas.
+ * @param {Object} props - The props for the component.
+ * @param {BooleanSchema} props.schema - The schema for the boolean property.
+ * @param {string[]} props.path - The path to the boolean property in the form data.
+ * @returns {JSX.Element} - The boolean template component.
+ */
+export const BaseBooleanTemplate: React.FC<{
+ schema: BooleanSchema;
+ path: string[];
+}> = ({ schema, path }) => {
+ const booleanMatchers = [
+ {
+ matcher: (schema: BooleanSchema) => !schema.oneOf,
+ render: () => ,
+ },
+ {
+ matcher: () => true,
+ render: () => ,
+ },
+ ];
+
+ for (const { matcher, render } of booleanMatchers) {
+ if (matcher(schema)) {
+ return render();
+ }
+ }
+ return ;
+};
+
+/**
+ * BaseObjectTemplate
+ * Renders an object schema by delegating to the appropriate template.
+ * @param {Object} props - The props for the component.
+ * @param {ObjectSchema} props.schema - The schema of the object.
+ * @param {string[]} props.path - The path to the object in the form data.
+ * @returns {JSX.Element} - The object template component.
+ */
+export const BaseObjectTemplate: React.FC<{
+ schema: ObjectSchema;
+ path: string[];
+}> = ({ schema, path }) => {
+ return ;
+};
+
+/**
+ * BaseArrayTemplate
+ * Renders an array field, choosing the appropriate template based on the schema.
+ * @param {Object} props - The props for the component.
+ * @param {ArraySchema} props.schema - The schema for the array property.
+ * @param {string[]} props.path - The path to the array property in the form data.
+ * @returns {JSX.Element} - The array template component.
+ */
+export const BaseArrayTemplate: React.FC<{
+ schema: ArraySchema;
+ path: string[];
+}> = ({ schema, path }) => {
+ const arrayMatchers = [
+ {
+ matcher: (schema: ArraySchema) => Array.isArray(schema.items),
+ render: () => ,
+ },
+ {
+ matcher: (schema: ArraySchema) =>
+ schema.uniqueItems &&
+ schema.items &&
+ !Array.isArray(schema.items) &&
+ typeof schema.items === "object" &&
+ ((schema.items as FormgenJSONSchema7).enum ||
+ (schema.items as FormgenJSONSchema7).oneOf),
+ render: () => ,
+ },
+ {
+ matcher: () => true,
+ render: () => ,
+ },
+ ];
+
+ for (const { matcher, render } of arrayMatchers) {
+ if (matcher(schema)) {
+ return render();
+ }
+ }
+
+ return ;
+};
+
+export const BaseTemplates: Templates = {
+ StringTemplate: BaseStringTemplate,
+ NumberTemplate: BaseNumberTemplate,
+ BooleanTemplate: BaseBooleanTemplate,
+ ObjectTemplate: BaseObjectTemplate,
+ ArrayTemplate: BaseArrayTemplate,
+};
diff --git a/website/src/components/templates/json-schema/templates/object/SimpleObjectTemplate.tsx b/website/src/components/templates/json-schema/templates/object/SimpleObjectTemplate.tsx
new file mode 100644
index 0000000..4f8f2c0
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/object/SimpleObjectTemplate.tsx
@@ -0,0 +1,88 @@
+import React from 'react'
+import {
+ ObjectSchema,
+ FormgenJSONSchema7,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useRenderTemplate,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyComplexTemplate } from '../../common/ReadonlyComplexTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { ComplexWrapperStyle } from '../../common/ComplexWrapperStyle'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * SimpleObjectTemplate
+ * Renders a simple object schema by rendering each property.
+ * @param {Object} props - The props for the component.
+ * @param {ObjectSchema} props.schema - The schema of the object.
+ * @param {string[]} props.path - The path to the object in the form data.
+ * @returns {JSX.Element} - The simple object template component.
+ */
+export const SimpleObjectTemplate: React.FC<{
+ schema: ObjectSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const RenderTemplate = useRenderTemplate()
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ {schema.properties && Object.keys(schema.properties).length > 0 ? (
+ Object.keys(schema.properties).map((key) => (
+
+ ))
+ ) : (
+ No data available
+ )}
+
+ )
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ {schema.description &&
{schema.description} }
+ {errorsAtPath &&
}
+
+ {schema.properties &&
+ Object.keys(schema.properties).map((key) => (
+
+ ))}
+
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/string/TextareaTemplate.tsx b/website/src/components/templates/json-schema/templates/string/TextareaTemplate.tsx
new file mode 100644
index 0000000..23f76d7
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/string/TextareaTemplate.tsx
@@ -0,0 +1,69 @@
+import React from 'react'
+import {
+ StringSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+/**
+ * TextareaTemplate
+ * Renders a textarea input for multi-line string input.
+ * @param {Object} props - The props for the component.
+ * @param {StringSchema} props.schema - The schema for the textarea field.
+ * @param {string[]} props.path - The path to the textarea field in the form data.
+ * @returns {JSX.Element} - The textarea field component.
+ */
+export const TextareaTemplate: React.FC<{
+ schema: StringSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ )
+ }
+
+ const handleChange = (event: React.ChangeEvent) => {
+ setValueAtPath(event.target.value)
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+
+ {schema.description && {schema.description} }
+ {errorsAtPath && }
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/union/InputTemplate.tsx b/website/src/components/templates/json-schema/templates/union/InputTemplate.tsx
new file mode 100644
index 0000000..07ee979
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/union/InputTemplate.tsx
@@ -0,0 +1,78 @@
+import React from 'react'
+import {
+ StringSchema,
+ NumberSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+import { useWindowSize } from '../../hooks/useWindowSize'
+
+/**
+ * InputTemplate
+ * Renders a text input field for string and number schemas.
+ * @param {Object} props - The props for the component.
+ * @param {StringSchema | NumberSchema} props.schema - The schema for the input field.
+ * @param {string[]} props.path - The path to the input field in the form data.
+ * @param {string} [props.htmlType] - The HTML input type (default: "text").
+ * @returns {JSX.Element} - The input field component.
+ */
+export const InputTemplate: React.FC<{
+ schema: StringSchema | NumberSchema
+ path: string[]
+ htmlType?: string
+}> = ({ schema, path, htmlType = 'text' }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const size = useWindowSize()
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ return (
+
+ )
+ }
+
+ return (
+ 640 ? 'min-content' : '100%',
+ ...WrapperStyle,
+ }}
+ >
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ setValueAtPath(e.target.value ? e.target.value : null)}
+ placeholder={schema.title || ''}
+ style={{
+ width: size.width && size.width > 640 ? '12rem' : '100%',
+ padding: '8px',
+ border: '1px solid #d1d5db',
+ borderRadius: '0.375rem',
+ boxSizing: 'border-box',
+ }}
+ />
+ {schema.description && {schema.description} }
+ {errorsAtPath && }
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/union/MultipleChoiceTemplate.tsx b/website/src/components/templates/json-schema/templates/union/MultipleChoiceTemplate.tsx
new file mode 100644
index 0000000..ab44cf6
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/union/MultipleChoiceTemplate.tsx
@@ -0,0 +1,123 @@
+import React from 'react'
+import {
+ StringSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+
+// Memoized MultipleChoiceOptionTemplate to prevent re-renders unless its props change
+const MultipleChoiceOptionTemplate: React.FC<{
+ value: string
+ title: string
+ checked: boolean
+ onChange: (event: React.ChangeEvent) => void
+ disabled?: boolean
+}> = React.memo(({ value, title, checked, onChange, disabled }) => {
+ return (
+
+
+ {title}
+
+ )
+})
+
+/**
+ * MultipleChoiceTemplate
+ * Renders a multiple-choice field as radio buttons for string schemas with enum or oneOf options.
+ * @param {Object} props - The props for the component.
+ * @param {StringSchema} props.schema - The schema for the multiple-choice field.
+ * @param {string[]} props.path - The path to the field in the form data.
+ * @returns {JSX.Element} - The multiple-choice field component.
+ */
+export const MultipleChoiceTemplate: React.FC<{
+ schema: StringSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path)
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const required = useIsRequired(path)
+
+ const handleChange = React.useCallback(
+ (event: React.ChangeEvent) => {
+ setValueAtPath(event.target.value)
+ },
+ [setValueAtPath],
+ )
+
+ // Memoize the options to prevent unnecessary recalculations
+ const opts: { value: string; title: string }[] = React.useMemo(() => {
+ const options: { value: string; title: string }[] = []
+ if (schema.enum) {
+ schema.enum.forEach((opt) => options.push({ value: opt, title: opt }))
+ } else if (schema.oneOf) {
+ schema.oneOf.forEach((opt) =>
+ options.push({ value: opt.const, title: opt.title ?? opt.const }),
+ )
+ }
+ return options
+ }, [schema.enum, schema.oneOf])
+
+ // Memoize the option rendering to avoid recreating the function on every render
+ const renderOption = React.useCallback(
+ (option: { value: string; title: string }, index: number) => {
+ return (
+
+ )
+ },
+ [valueAtPath, handleChange, schema.readOnly],
+ )
+
+ if (readonly) {
+ const selectedOption =
+ schema.enum?.find((opt) => opt === valueAtPath) ||
+ schema.oneOf?.find((opt) => opt.const === valueAtPath)?.title ||
+ valueAtPath
+ return (
+
+ )
+ }
+
+ return (
+
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+
{opts.map((option, index) => renderOption(option, index))}
+ {schema.description &&
{schema.description} }
+ {errorsAtPath &&
}
+
+ )
+}
diff --git a/website/src/components/templates/json-schema/templates/union/SelectTemplate.tsx b/website/src/components/templates/json-schema/templates/union/SelectTemplate.tsx
new file mode 100644
index 0000000..75dd243
--- /dev/null
+++ b/website/src/components/templates/json-schema/templates/union/SelectTemplate.tsx
@@ -0,0 +1,95 @@
+import React from 'react'
+import {
+ StringSchema,
+ NumberSchema,
+ useFormDataAtPath,
+ useErrorsAtPath,
+ useFormContext,
+ FormState,
+ useIsRequired,
+} from '@react-formgen/json-schema'
+
+import { ReadonlyPrimitiveTemplate } from '../../common/ReadonlyPrimitiveTemplate'
+import { ErrorsList } from '../../common/ErrorsList'
+import { WrapperStyle } from '../../common/WrapperStyle'
+import { useWindowSize } from '../../hooks/useWindowSize'
+
+/**
+ * SelectTemplate
+ * Renders a select dropdown field for string or number schemas with enum or oneOf options.
+ * @param {StringSchema|NumberSchema} props.schema - The schema for the select field.
+ * @param {string[]} props.path - The path to the select field in the form data.
+ * @returns {JSX.Element} - The select field component.
+ */
+export const SelectTemplate: React.FC<{
+ schema: StringSchema | NumberSchema
+ path: string[]
+}> = ({ schema, path }) => {
+ const [valueAtPath, setValueAtPath] = useFormDataAtPath(path, '')
+ const errorsAtPath = useErrorsAtPath(path)
+ const readonly = useFormContext((state: FormState) => state.readonly)
+ const size = useWindowSize()
+ const required = useIsRequired(path)
+
+ if (readonly) {
+ const selectedOption =
+ schema.enum?.find((opt) => opt === valueAtPath) ||
+ schema.oneOf?.find((opt) => opt.const === valueAtPath)?.title ||
+ valueAtPath
+
+ return (
+
+ )
+ }
+
+ const handleChange = (event: React.ChangeEvent) => {
+ setValueAtPath(event.target.value)
+ }
+
+ return (
+ 640 ? 'min-content' : '100%',
+ ...WrapperStyle,
+ }}
+ >
+ {schema.title && (
+
+ {schema.title}
+ {required && * }
+
+ )}
+ 640 ? '12rem' : '100%',
+ padding: '8px',
+ border: '1px solid #d1d5db',
+ borderRadius: '0.375rem',
+ boxSizing: 'border-box',
+ }}
+ >
+
+ {schema.enum
+ ? schema.enum.map((option, index) => (
+
+ {option}
+
+ ))
+ : schema.oneOf?.map((option) => (
+
+ {option.title}
+
+ ))}
+
+ {schema.description && {schema.description} }
+ {errorsAtPath && }
+
+ )
+}
diff --git a/website/src/examples/JsonSchema.tsx b/website/src/examples/JsonSchema.tsx
index fa61a23..406b551 100644
--- a/website/src/examples/JsonSchema.tsx
+++ b/website/src/examples/JsonSchema.tsx
@@ -1,9 +1,4 @@
-import {
- Form,
- FormProvider,
- BaseFormRoot,
- useFormContext,
-} from "@react-formgen/json-schema";
+import { Form, FormProvider, useFormContext } from "@react-formgen/json-schema";
import {
jsonSchema,
jsonSchemaBasic,
@@ -11,6 +6,8 @@ import {
} from "../schemas/jsonSchema";
import { RenderTemplate } from "../components/templates/json-schema/RenderTemplate.tsx";
import { SwitchToReadonly } from "../components/SwitchToReadonly.tsx";
+import { BaseFormRoot } from "../components/templates/json-schema/BaseFormRoot.tsx";
+import { BaseTemplates } from "../components/templates/json-schema/templates/index.tsx";
const initialFormData = {
firstName: "John Doe",
@@ -41,6 +38,8 @@ const JsonSchemaExample = () => {
display errors if the data is invalid.
+
);
};
@@ -77,7 +82,11 @@ const JsonSchemaComplexExample = () => {
form provider and initial data. The form will validate the data based on
the schema and display errors if the data is invalid.
-
+
console.log("JSON Schema:", data)}
@@ -114,14 +123,18 @@ const JsonSchemaCustomRenderTemplateExample = () => {
manually resolve the nested schemas.
JSON Schema Form (Readonly)