mirror of
https://github.com/StanGirard/quivr.git
synced 2024-11-27 18:32:55 +03:00
feat: add public brain creation (#1218)
* feat: add brain status input * feat: update translations * feat: add confirmation modal for brain status changing to public
This commit is contained in:
parent
9d73531fc8
commit
37935c59ca
@ -1,4 +1,5 @@
|
||||
import { BrainRoleType } from "@/lib/components/BrainUsers/types";
|
||||
import { BrainStatus } from "@/lib/types/brainConfig";
|
||||
|
||||
export type SubscriptionUpdatableProperties = {
|
||||
role: BrainRoleType | null;
|
||||
@ -7,7 +8,7 @@ export type SubscriptionUpdatableProperties = {
|
||||
export type CreateBrainInput = {
|
||||
name: string;
|
||||
description?: string;
|
||||
status?: string;
|
||||
status?: BrainStatus;
|
||||
model?: string;
|
||||
temperature?: number;
|
||||
max_tokens?: number;
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* eslint-disable max-lines */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable */
|
||||
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { MdAdd } from "react-icons/md";
|
||||
|
||||
@ -9,9 +10,11 @@ import Field from "@/lib/components/ui/Field";
|
||||
import { Modal } from "@/lib/components/ui/Modal";
|
||||
import { defineMaxTokens } from "@/lib/helpers/defineMaxTokens";
|
||||
|
||||
import { Divider } from "../ui/Divider";
|
||||
import { TextArea } from "../ui/TextArea";
|
||||
import { PublicAccessConfirmationModal } from "./components/PublicAccessConfirmationModal";
|
||||
import { useAddBrainModal } from "./hooks/useAddBrainModal";
|
||||
import { Divider } from "../ui/Divider";
|
||||
import { Radio } from "../ui/Radio";
|
||||
import { TextArea } from "../ui/TextArea";
|
||||
|
||||
export const AddBrainModal = (): JSX.Element => {
|
||||
const { t } = useTranslation(["translation", "brain", "config"]);
|
||||
@ -20,150 +23,170 @@ export const AddBrainModal = (): JSX.Element => {
|
||||
isShareModalOpen,
|
||||
setIsShareModalOpen,
|
||||
register,
|
||||
openAiKey,
|
||||
temperature,
|
||||
maxTokens,
|
||||
model,
|
||||
isPending,
|
||||
pickPublicPrompt,
|
||||
accessibleModels,
|
||||
brainStatusOptions,
|
||||
status,
|
||||
isPublicAccessConfirmationModalOpened,
|
||||
onCancelPublicAccess,
|
||||
onConfirmPublicAccess,
|
||||
} = useAddBrainModal();
|
||||
|
||||
return (
|
||||
<Modal
|
||||
Trigger={
|
||||
<Button
|
||||
onClick={() => void 0}
|
||||
variant={"tertiary"}
|
||||
className="border-0"
|
||||
data-testid="add-brain-button"
|
||||
>
|
||||
{t("newBrain", { ns: "brain" })}
|
||||
<MdAdd className="text-xl" />
|
||||
</Button>
|
||||
}
|
||||
title={t("newBrainTitle", { ns: "brain" })}
|
||||
desc={t("newBrainSubtitle", { ns: "brain" })}
|
||||
isOpen={isShareModalOpen}
|
||||
setOpen={setIsShareModalOpen}
|
||||
CloseTrigger={<div />}
|
||||
>
|
||||
<form
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
void handleSubmit();
|
||||
}}
|
||||
className="my-10 flex flex-col items-center gap-2"
|
||||
>
|
||||
<Field
|
||||
label={t("brainName", { ns: "brain" })}
|
||||
autoFocus
|
||||
placeholder={t("brainNamePlaceholder", { ns: "brain" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
required
|
||||
data-testid="brain-name"
|
||||
{...register("name")}
|
||||
/>
|
||||
|
||||
<TextArea
|
||||
label={t("brainDescription", { ns: "brain" })}
|
||||
placeholder={t("brainDescriptionPlaceholder", { ns: "brain" })}
|
||||
autoComplete="off"
|
||||
className="flex-1 m-3"
|
||||
{...register("description")}
|
||||
/>
|
||||
|
||||
<Field
|
||||
label={t("openAiKeyLabel", { ns: "config" })}
|
||||
placeholder={t("openAiKeyPlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("openAiKey")}
|
||||
/>
|
||||
|
||||
<fieldset className="w-full flex flex-col">
|
||||
<label className="flex-1 text-sm" htmlFor="model">
|
||||
{t("modelLabel", { ns: "config" })}
|
||||
</label>
|
||||
<select
|
||||
id="model"
|
||||
{...register("model")}
|
||||
className="px-5 py-2 dark:bg-gray-700 bg-gray-200 rounded-md"
|
||||
<>
|
||||
<Modal
|
||||
Trigger={
|
||||
<Button
|
||||
onClick={() => void 0}
|
||||
variant={"tertiary"}
|
||||
className="border-0"
|
||||
data-testid="add-brain-button"
|
||||
>
|
||||
{accessibleModels.map((availableModel) => (
|
||||
<option value={availableModel} key={availableModel}>
|
||||
{availableModel}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<fieldset className="w-full flex mt-4">
|
||||
<label className="flex-1" htmlFor="temp">
|
||||
{t("temperature", { ns: "config" })}: {temperature}
|
||||
</label>
|
||||
<input
|
||||
id="temp"
|
||||
type="range"
|
||||
min="0"
|
||||
max="1"
|
||||
step="0.01"
|
||||
value={temperature}
|
||||
{...register("temperature")}
|
||||
/>
|
||||
</fieldset>
|
||||
<fieldset className="w-full flex mt-4">
|
||||
<label className="flex-1" htmlFor="tokens">
|
||||
{t("maxTokens", { ns: "config" })}: {maxTokens}
|
||||
</label>
|
||||
<input
|
||||
type="range"
|
||||
min="10"
|
||||
max={defineMaxTokens(model)}
|
||||
value={maxTokens}
|
||||
{...register("maxTokens")}
|
||||
/>
|
||||
</fieldset>
|
||||
<Divider text={t("customPromptSection", { ns: "config" })} />
|
||||
<PublicPrompts onSelect={pickPublicPrompt} />
|
||||
<Field
|
||||
label={t("promptName", { ns: "config" })}
|
||||
placeholder={t("promptNamePlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("prompt.title")}
|
||||
/>
|
||||
<TextArea
|
||||
label={t("promptContent", { ns: "config" })}
|
||||
placeholder={t("promptContentPlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("prompt.content")}
|
||||
/>
|
||||
<div className="flex flex-row justify-start w-full mt-4">
|
||||
<label className="flex items-center">
|
||||
<span className="mr-2 text-gray-700">
|
||||
{t("setDefaultBrain", { ns: "brain" })}
|
||||
</span>
|
||||
<input
|
||||
type="checkbox"
|
||||
{...register("setDefault")}
|
||||
className="form-checkbox h-5 w-5 text-indigo-600 rounded focus:ring-2 focus:ring-indigo-400"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
isLoading={isPending}
|
||||
className="mt-12 self-end"
|
||||
type="submit"
|
||||
data-testid="create-brain-submit-button"
|
||||
{t("newBrain", { ns: "brain" })}
|
||||
<MdAdd className="text-xl" />
|
||||
</Button>
|
||||
}
|
||||
title={t("newBrainTitle", { ns: "brain" })}
|
||||
desc={t("newBrainSubtitle", { ns: "brain" })}
|
||||
isOpen={isShareModalOpen}
|
||||
setOpen={setIsShareModalOpen}
|
||||
CloseTrigger={<div />}
|
||||
>
|
||||
<form
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
void handleSubmit();
|
||||
}}
|
||||
className="my-10 flex flex-col items-center gap-2"
|
||||
>
|
||||
{t("createButton")}
|
||||
<MdAdd className="text-xl" />
|
||||
</Button>
|
||||
</form>
|
||||
</Modal>
|
||||
<Field
|
||||
label={t("brainName", { ns: "brain" })}
|
||||
autoFocus
|
||||
placeholder={t("brainNamePlaceholder", { ns: "brain" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
required
|
||||
data-testid="brain-name"
|
||||
{...register("name")}
|
||||
/>
|
||||
|
||||
<TextArea
|
||||
label={t("brainDescription", { ns: "brain" })}
|
||||
placeholder={t("brainDescriptionPlaceholder", { ns: "brain" })}
|
||||
autoComplete="off"
|
||||
className="flex-1 m-3"
|
||||
{...register("description")}
|
||||
/>
|
||||
<fieldset className="w-full flex flex-col">
|
||||
<Radio
|
||||
items={brainStatusOptions}
|
||||
label={t("brain_status_label", { ns: "brain" })}
|
||||
value={status}
|
||||
className="flex-1 justify-between w-[50%]"
|
||||
{...register("status")}
|
||||
/>
|
||||
</fieldset>
|
||||
<Field
|
||||
label={t("openAiKeyLabel", { ns: "config" })}
|
||||
placeholder={t("openAiKeyPlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("openAiKey")}
|
||||
/>
|
||||
|
||||
<fieldset className="w-full flex flex-col">
|
||||
<label className="flex-1 text-sm" htmlFor="model">
|
||||
{t("modelLabel", { ns: "config" })}
|
||||
</label>
|
||||
<select
|
||||
id="model"
|
||||
{...register("model")}
|
||||
className="px-5 py-2 dark:bg-gray-700 bg-gray-200 rounded-md"
|
||||
>
|
||||
{accessibleModels.map((availableModel) => (
|
||||
<option value={availableModel} key={availableModel}>
|
||||
{availableModel}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<fieldset className="w-full flex mt-4">
|
||||
<label className="flex-1" htmlFor="temp">
|
||||
{t("temperature", { ns: "config" })}: {temperature}
|
||||
</label>
|
||||
<input
|
||||
id="temp"
|
||||
type="range"
|
||||
min="0"
|
||||
max="1"
|
||||
step="0.01"
|
||||
value={temperature}
|
||||
{...register("temperature")}
|
||||
/>
|
||||
</fieldset>
|
||||
<fieldset className="w-full flex mt-4">
|
||||
<label className="flex-1" htmlFor="tokens">
|
||||
{t("maxTokens", { ns: "config" })}: {maxTokens}
|
||||
</label>
|
||||
<input
|
||||
type="range"
|
||||
min="10"
|
||||
max={defineMaxTokens(model)}
|
||||
value={maxTokens}
|
||||
{...register("maxTokens")}
|
||||
/>
|
||||
</fieldset>
|
||||
<Divider text={t("customPromptSection", { ns: "config" })} />
|
||||
<PublicPrompts onSelect={pickPublicPrompt} />
|
||||
<Field
|
||||
label={t("promptName", { ns: "config" })}
|
||||
placeholder={t("promptNamePlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("prompt.title")}
|
||||
/>
|
||||
<TextArea
|
||||
label={t("promptContent", { ns: "config" })}
|
||||
placeholder={t("promptContentPlaceholder", { ns: "config" })}
|
||||
autoComplete="off"
|
||||
className="flex-1"
|
||||
{...register("prompt.content")}
|
||||
/>
|
||||
<div className="flex flex-row justify-start w-full mt-4">
|
||||
<label className="flex items-center">
|
||||
<span className="mr-2 text-gray-700">
|
||||
{t("setDefaultBrain", { ns: "brain" })}
|
||||
</span>
|
||||
<input
|
||||
type="checkbox"
|
||||
{...register("setDefault")}
|
||||
className="form-checkbox h-5 w-5 text-indigo-600 rounded focus:ring-2 focus:ring-indigo-400"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
isLoading={isPending}
|
||||
className="mt-12 self-end"
|
||||
type="submit"
|
||||
data-testid="create-brain-submit-button"
|
||||
>
|
||||
{t("createButton")}
|
||||
<MdAdd className="text-xl" />
|
||||
</Button>
|
||||
</form>
|
||||
</Modal>
|
||||
<PublicAccessConfirmationModal
|
||||
opened={isPublicAccessConfirmationModalOpened}
|
||||
onClose={onCancelPublicAccess}
|
||||
onCancel={onCancelPublicAccess}
|
||||
onConfirm={onConfirmPublicAccess}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
@ -0,0 +1,42 @@
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
import Button from "../../ui/Button";
|
||||
import { Modal } from "../../ui/Modal";
|
||||
|
||||
type PublicAccessConfirmationModalProps = {
|
||||
opened: boolean;
|
||||
onClose: () => void;
|
||||
onConfirm: () => void;
|
||||
onCancel: () => void;
|
||||
};
|
||||
export const PublicAccessConfirmationModal = ({
|
||||
opened,
|
||||
onClose,
|
||||
onConfirm,
|
||||
onCancel,
|
||||
}: PublicAccessConfirmationModalProps): JSX.Element => {
|
||||
const { t } = useTranslation(["brain"]);
|
||||
|
||||
return (
|
||||
<Modal isOpen={opened} setOpen={onClose} CloseTrigger={<div />}>
|
||||
<div
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: t("set_brain_status_to_public_modal_title"),
|
||||
}}
|
||||
/>
|
||||
<div
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: t("set_brain_status_to_public_modal_description"),
|
||||
}}
|
||||
/>
|
||||
<div className="flex flex-row justify-between pt-10 px-10">
|
||||
<Button type="button" onClick={onConfirm} variant="secondary">
|
||||
{t("confirm_set_brain_status_to_public")}
|
||||
</Button>
|
||||
<Button type="button" onClick={onCancel}>
|
||||
{t("cancel_set_brain_status_to_public")}
|
||||
</Button>
|
||||
</div>
|
||||
</Modal>
|
||||
);
|
||||
};
|
@ -13,6 +13,7 @@ import { useBrainContext } from "@/lib/context/BrainProvider/hooks/useBrainConte
|
||||
import { defineMaxTokens } from "@/lib/helpers/defineMaxTokens";
|
||||
import { getAccessibleModels } from "@/lib/helpers/getAccessibleModels";
|
||||
import { useToast } from "@/lib/hooks";
|
||||
import { BrainStatus } from "@/lib/types/brainConfig";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||||
@ -24,13 +25,31 @@ export const useAddBrainModal = () => {
|
||||
const { setAsDefaultBrain } = useBrainApi();
|
||||
const { createPrompt } = usePromptApi();
|
||||
const [isShareModalOpen, setIsShareModalOpen] = useState(false);
|
||||
|
||||
const [
|
||||
isPublicAccessConfirmationModalOpened,
|
||||
setIsPublicAccessConfirmationModalOpened,
|
||||
] = useState(false);
|
||||
const { getUser } = useUserApi();
|
||||
|
||||
const brainStatusOptions: {
|
||||
label: string;
|
||||
value: BrainStatus;
|
||||
}[] = [
|
||||
{
|
||||
label: t("private_brain_label", { ns: "brain" }),
|
||||
value: "private",
|
||||
},
|
||||
{
|
||||
label: t("public_brain_label", { ns: "brain" }),
|
||||
value: "public",
|
||||
},
|
||||
];
|
||||
|
||||
const { data: userData } = useQuery({
|
||||
queryKey: [USER_DATA_KEY],
|
||||
queryFn: getUser,
|
||||
});
|
||||
|
||||
const defaultValues = {
|
||||
...defaultBrainConfig,
|
||||
name: "",
|
||||
@ -50,12 +69,19 @@ export const useAddBrainModal = () => {
|
||||
const model = watch("model");
|
||||
const temperature = watch("temperature");
|
||||
const maxTokens = watch("maxTokens");
|
||||
const status = watch("status");
|
||||
|
||||
const accessibleModels = getAccessibleModels({
|
||||
openAiKey,
|
||||
userData,
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (status === "public") {
|
||||
setIsPublicAccessConfirmationModalOpened(true);
|
||||
}
|
||||
}, [status]);
|
||||
|
||||
useEffect(() => {
|
||||
setValue("maxTokens", Math.min(maxTokens, defineMaxTokens(model)));
|
||||
}, [maxTokens, model, setValue]);
|
||||
@ -95,6 +121,7 @@ export const useAddBrainModal = () => {
|
||||
openai_api_key: openAiKey,
|
||||
temperature,
|
||||
prompt_id,
|
||||
status,
|
||||
});
|
||||
|
||||
if (createdBrainId === undefined) {
|
||||
@ -157,17 +184,32 @@ export const useAddBrainModal = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const onConfirmPublicAccess = () => {
|
||||
setIsPublicAccessConfirmationModalOpened(false);
|
||||
};
|
||||
|
||||
const onCancelPublicAccess = () => {
|
||||
setValue("status", "private", {
|
||||
shouldDirty: true,
|
||||
});
|
||||
setIsPublicAccessConfirmationModalOpened(false);
|
||||
};
|
||||
|
||||
return {
|
||||
isShareModalOpen,
|
||||
setIsShareModalOpen,
|
||||
handleSubmit,
|
||||
register,
|
||||
openAiKey: openAiKey === "" ? undefined : openAiKey,
|
||||
model,
|
||||
temperature,
|
||||
maxTokens,
|
||||
isPending,
|
||||
accessibleModels,
|
||||
pickPublicPrompt,
|
||||
brainStatusOptions,
|
||||
status,
|
||||
isPublicAccessConfirmationModalOpened,
|
||||
onConfirmPublicAccess,
|
||||
onCancelPublicAccess,
|
||||
};
|
||||
};
|
||||
|
3
frontend/lib/components/AddBrainModal/styles.css
Normal file
3
frontend/lib/components/AddBrainModal/styles.css
Normal file
@ -0,0 +1,3 @@
|
||||
.foo {
|
||||
white-space: 'pre-wrap';
|
||||
}
|
@ -11,7 +11,7 @@ type CommonModalProps = {
|
||||
title?: string;
|
||||
desc?: string;
|
||||
children?: ReactNode;
|
||||
Trigger: ReactNode;
|
||||
Trigger?: ReactNode;
|
||||
CloseTrigger?: ReactNode;
|
||||
isOpen?: undefined;
|
||||
setOpen?: undefined;
|
||||
@ -38,7 +38,9 @@ export const Modal = ({
|
||||
|
||||
return (
|
||||
<Dialog.Root onOpenChange={customSetOpen ?? setOpen}>
|
||||
<Dialog.Trigger asChild>{Trigger}</Dialog.Trigger>
|
||||
{Trigger !== undefined && (
|
||||
<Dialog.Trigger asChild>{Trigger}</Dialog.Trigger>
|
||||
)}
|
||||
<AnimatePresence>
|
||||
{customIsOpen ?? isOpen ? (
|
||||
<Dialog.Portal forceMount>
|
||||
@ -48,7 +50,6 @@ export const Modal = ({
|
||||
initial={{ opacity: 0 }}
|
||||
animate={{ opacity: 1 }}
|
||||
exit={{ opacity: 0 }}
|
||||
// transition={{ duration: 0.4, ease: "easeInOut" }}
|
||||
>
|
||||
<Dialog.Content asChild forceMount>
|
||||
<motion.div
|
||||
|
48
frontend/lib/components/ui/Radio.tsx
Normal file
48
frontend/lib/components/ui/Radio.tsx
Normal file
@ -0,0 +1,48 @@
|
||||
import { DetailedHTMLProps, forwardRef, InputHTMLAttributes } from "react";
|
||||
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
type RadioItem = {
|
||||
value: string;
|
||||
label: string;
|
||||
};
|
||||
|
||||
interface RadioProps
|
||||
extends DetailedHTMLProps<
|
||||
InputHTMLAttributes<HTMLInputElement>,
|
||||
HTMLInputElement
|
||||
> {
|
||||
name: string;
|
||||
items: RadioItem[];
|
||||
label?: string;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const Radio = forwardRef<HTMLInputElement, RadioProps>(
|
||||
({ items, label, className, value, ...props }, ref) => (
|
||||
<div className={cn("flex flex-col", className)}>
|
||||
{label !== undefined && (
|
||||
<label className="text-sm font-medium leading-6 mb-2">{label}</label>
|
||||
)}
|
||||
<div className="flex flex-row gap-4">
|
||||
{items.map((item) => (
|
||||
<div key={item.value} className="flex items-center mb-2">
|
||||
<input
|
||||
ref={ref} // Forward the ref to the input element
|
||||
type="radio"
|
||||
className="form-radio h-4 w-4 text-indigo-600 border-indigo-600"
|
||||
value={item.value}
|
||||
checked={value === item.value}
|
||||
{...props}
|
||||
/>
|
||||
<label className="ml-2" htmlFor={item.value}>
|
||||
{item.label}
|
||||
</label>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
|
||||
Radio.displayName = "Radio";
|
@ -11,4 +11,5 @@ export const defaultBrainConfig: BrainConfig = {
|
||||
supabaseKey: undefined,
|
||||
supabaseUrl: undefined,
|
||||
prompt_id: undefined,
|
||||
status: "private",
|
||||
};
|
||||
|
@ -1,5 +1,9 @@
|
||||
import { UUID } from "crypto";
|
||||
|
||||
export const brainStatuses = ["private", "public"] as const;
|
||||
|
||||
export type BrainStatus = (typeof brainStatuses)[number];
|
||||
|
||||
export type BrainConfig = {
|
||||
model: Model;
|
||||
temperature: number;
|
||||
@ -11,6 +15,7 @@ export type BrainConfig = {
|
||||
supabaseUrl?: string;
|
||||
supabaseKey?: string;
|
||||
prompt_id?: UUID;
|
||||
status: BrainStatus;
|
||||
};
|
||||
|
||||
export type BrainConfigContextType = {
|
||||
|
@ -26,6 +26,7 @@
|
||||
"@radix-ui/react-accordion": "^1.1.2",
|
||||
"@radix-ui/react-dialog": "^1.0.3",
|
||||
"@radix-ui/react-popover": "^1.0.6",
|
||||
"@radix-ui/react-radio-group": "^1.1.3",
|
||||
"@radix-ui/react-select": "^1.2.2",
|
||||
"@radix-ui/react-tabs": "^1.0.4",
|
||||
"@radix-ui/react-toast": "^1.1.3",
|
||||
|
@ -26,5 +26,12 @@
|
||||
"userRemoveFailed": "Failed to remove {{email}} from brain",
|
||||
"defaultBrain": "Default Brain",
|
||||
"setDefaultBrain": "Set as default brain",
|
||||
"errorCreatingBrain": "Error occurred while creating a brain"
|
||||
"errorCreatingBrain": "Error occurred while creating a brain",
|
||||
"private_brain_label": "Private",
|
||||
"public_brain_label": "Public",
|
||||
"brain_status_label":"Access",
|
||||
"set_brain_status_to_public_modal_title": "Are you sure you want to set this as <span class='text-purple-800'>Public</span>?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "Every Quivr user will be able to:<br/>- Subscribe to your brain in the 'brains library'.<br/>- Use this brain and check the prompt and model configurations.<br/><br/>They won't have access to your uploaded files and people section.",
|
||||
"confirm_set_brain_status_to_public": "Yes, set as public",
|
||||
"cancel_set_brain_status_to_public": "No, keep it private"
|
||||
}
|
@ -26,5 +26,12 @@
|
||||
"userRoleUpdated": "Actualizado {{email}} a {{newRole}}",
|
||||
"userRoleUpdateFailed": "Error actualizado {{email}} a {{newRole}} ",
|
||||
"usersInvited": "Usuarios invitados correctamente",
|
||||
"usersWithAccess": "Usuarios con acceso"
|
||||
"usersWithAccess": "Usuarios con acceso",
|
||||
"private_brain_label": "Privado",
|
||||
"public_brain_label": "Público",
|
||||
"brain_status_label": "Estado",
|
||||
"set_brain_status_to_public_modal_title": "¿Estás seguro de querer establecer esto como <span class='text-purple-800'>Público</span>?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "Cada usuario de Quivr podrá:<br/>- Suscribirse a tu cerebro en la 'biblioteca de cerebros'.<br/>- Usar este cerebro y comprobar las configuraciones de las indicaciones y el modelo.<br/><br/>No tendrán acceso a tus archivos cargados ni a la sección de personas.",
|
||||
"confirm_set_brain_status_to_public": "Sí, establecer como público",
|
||||
"cancel_set_brain_status_to_public": "No, mantenerlo privado"
|
||||
}
|
@ -26,5 +26,12 @@
|
||||
"userRoleUpdated": "Mis à jour {{email}} en {{newRole}}",
|
||||
"userRoleUpdateFailed": "Échec de la mise à jour de {{email}} en {{newRole}}",
|
||||
"usersInvited": "Utilisateurs invités avec succès",
|
||||
"usersWithAccess": "Utilisateurs ayant accès"
|
||||
"usersWithAccess": "Utilisateurs ayant accès",
|
||||
"private_brain_label": "Privé",
|
||||
"public_brain_label": "Public",
|
||||
"brain_status_label": "Statut",
|
||||
"set_brain_status_to_public_modal_title": "Êtes-vous sûr de vouloir définir ceci comme <span class='text-purple-800'>Public</span>?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "Chaque utilisateur de Quivr pourra :<br/>- S'abonner à votre cerveau dans la 'bibliothèque des cerveaux'.<br/>- Utiliser ce cerveau et vérifier les configurations de prompts et de modèles.<br/><br/>Ils n'auront pas accès à vos fichiers téléchargés et à la section des personnes.",
|
||||
"confirm_set_brain_status_to_public": "Oui, définir comme public",
|
||||
"cancel_set_brain_status_to_public": "Non, le garder privé"
|
||||
}
|
@ -26,5 +26,12 @@
|
||||
"userRemoveFailed": "Remoção do e-mail {{email}} do cérebro falhou",
|
||||
"defaultBrain": "Cérebro padrão",
|
||||
"setDefaultBrain": "Defina como o cérebro padrão",
|
||||
"errorCreatingBrain": "Um erro aconteceu ao criar o cérebro"
|
||||
"errorCreatingBrain": "Um erro aconteceu ao criar o cérebro",
|
||||
"private_brain_label": "Privado",
|
||||
"public_brain_label": "Público",
|
||||
"brain_status_label": "Status",
|
||||
"set_brain_status_to_public_modal_title": "Tem certeza de que deseja definir isso como <span class='text-purple-800'>Público</span>?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "Cada usuário do Quivr poderá:<br/>- Se inscrever em seu cérebro na 'biblioteca de cérebros'.<br/>- Usar este cérebro e verificar as configurações de prompts e modelos.<br/><br/>Eles não terão acesso aos seus arquivos enviados e à seção de pessoas.",
|
||||
"confirm_set_brain_status_to_public": "Sim, definir como público",
|
||||
"cancel_set_brain_status_to_public": "Não, mantê-lo privado"
|
||||
}
|
@ -26,5 +26,12 @@
|
||||
"userRemoveFailed": "Не удалось удалить {{email}} из мозга",
|
||||
"defaultBrain": "Мозг по умолчанию",
|
||||
"setDefaultBrain": "Установить как мозг по умолчанию",
|
||||
"errorCreatingBrain": "Произошла ошибка при создании мозга"
|
||||
"errorCreatingBrain": "Произошла ошибка при создании мозга",
|
||||
"private_brain_label": "Приватный",
|
||||
"public_brain_label": "Публичный",
|
||||
"brain_status_label": "Статус",
|
||||
"set_brain_status_to_public_modal_title": "Вы уверены, что хотите установить это как <span class='text-purple-800'>Публичный</span>?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "Каждый пользователь Quivr сможет:<br/>- Подписаться на ваш мозг в 'библиотеке мозгов'.<br/>- Использовать этот мозг и проверить настройки подсказок и модели.<br/><br/>У них не будет доступа к вашим загруженным файлам и разделу 'люди'.",
|
||||
"confirm_set_brain_status_to_public": "Да, установить как публичный",
|
||||
"cancel_set_brain_status_to_public": "Нет, оставить приватным"
|
||||
}
|
@ -26,5 +26,12 @@
|
||||
"userRemoveFailed": "无法从大脑中删除 {{email}}",
|
||||
"defaultBrain": "默认大脑",
|
||||
"setDefaultBrain": "设置为默认大脑",
|
||||
"errorCreatingBrain": "创建大脑时发生错误"
|
||||
"errorCreatingBrain": "创建大脑时发生错误",
|
||||
"private_brain_label": "私有",
|
||||
"public_brain_label": "公开",
|
||||
"brain_status_label": "状态",
|
||||
"set_brain_status_to_public_modal_title": "您确定要将此设置为<span class='text-purple-800'>公共</span>吗?<br/><br/>",
|
||||
"set_brain_status_to_public_modal_description": "每个 Quivr 用户将能够:<br/>- 在 '大脑库' 中订阅您的大脑。<br/>- 使用此大脑并检查提示和模型配置。<br/><br/>他们将无法访问您上传的文件和人员部分。",
|
||||
"confirm_set_brain_status_to_public": "是的,设为公共",
|
||||
"cancel_set_brain_status_to_public": "不,保持私密"
|
||||
}
|
@ -950,6 +950,23 @@
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@radix-ui/react-slot" "1.0.2"
|
||||
|
||||
"@radix-ui/react-radio-group@^1.1.3":
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz#3197f5dcce143bcbf961471bf89320735c0212d3"
|
||||
integrity sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
"@radix-ui/primitive" "1.0.1"
|
||||
"@radix-ui/react-compose-refs" "1.0.1"
|
||||
"@radix-ui/react-context" "1.0.1"
|
||||
"@radix-ui/react-direction" "1.0.1"
|
||||
"@radix-ui/react-presence" "1.0.1"
|
||||
"@radix-ui/react-primitive" "1.0.3"
|
||||
"@radix-ui/react-roving-focus" "1.0.4"
|
||||
"@radix-ui/react-use-controllable-state" "1.0.1"
|
||||
"@radix-ui/react-use-previous" "1.0.1"
|
||||
"@radix-ui/react-use-size" "1.0.1"
|
||||
|
||||
"@radix-ui/react-roving-focus@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz"
|
||||
@ -2388,7 +2405,7 @@
|
||||
|
||||
"@types/debug@^4.0.0":
|
||||
version "4.1.8"
|
||||
resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317"
|
||||
integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
@ -2440,14 +2457,14 @@
|
||||
|
||||
"@types/mdast@^3.0.0":
|
||||
version "3.0.12"
|
||||
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.12.tgz#beeb511b977c875a5b0cc92eab6fcac2f0895514"
|
||||
integrity sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==
|
||||
dependencies:
|
||||
"@types/unist" "^2"
|
||||
|
||||
"@types/ms@*":
|
||||
version "0.7.31"
|
||||
resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz"
|
||||
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
|
||||
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
|
||||
|
||||
"@types/node@*", "@types/node@20.1.7":
|
||||
@ -2465,11 +2482,16 @@
|
||||
resolved "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz"
|
||||
integrity sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==
|
||||
|
||||
"@types/prop-types@*", "@types/prop-types@^15.0.0":
|
||||
"@types/prop-types@*":
|
||||
version "15.7.5"
|
||||
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
|
||||
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
|
||||
|
||||
"@types/prop-types@^15.0.0":
|
||||
version "15.7.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.6.tgz#bbf819813d6be21011b8f5801058498bec555572"
|
||||
integrity sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==
|
||||
|
||||
"@types/react-dom@18", "@types/react-dom@^18.0.0":
|
||||
version "18.2.7"
|
||||
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz"
|
||||
@ -3085,7 +3107,7 @@ chalk@^4.0.0, chalk@^4.1.0:
|
||||
|
||||
character-entities@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
|
||||
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
|
||||
|
||||
check-error@^1.0.2:
|
||||
@ -3423,7 +3445,7 @@ decimal.js@^10.4.3:
|
||||
|
||||
decode-named-character-reference@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e"
|
||||
integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==
|
||||
dependencies:
|
||||
character-entities "^2.0.0"
|
||||
@ -3551,7 +3573,7 @@ diff-sequences@^29.4.3:
|
||||
|
||||
diff@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
|
||||
integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
@ -4539,7 +4561,7 @@ hast-util-to-text@^3.0.0:
|
||||
|
||||
hast-util-whitespace@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557"
|
||||
integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==
|
||||
|
||||
highlight.js@~11.8.0:
|
||||
@ -4679,7 +4701,7 @@ ini@~1.3.0:
|
||||
|
||||
inline-style-parser@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
|
||||
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
|
||||
|
||||
inline-style-prefixer@^6.0.0:
|
||||
@ -5065,7 +5087,7 @@ jsonc-parser@^3.2.0:
|
||||
|
||||
kleur@^4.0.3:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
|
||||
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
|
||||
|
||||
language-subtag-registry@~0.3.2:
|
||||
@ -5212,7 +5234,7 @@ magic-string@^0.30.0:
|
||||
|
||||
mdast-util-definitions@^5.0.0:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7"
|
||||
integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
@ -5221,7 +5243,7 @@ mdast-util-definitions@^5.0.0:
|
||||
|
||||
mdast-util-from-markdown@^1.0.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0"
|
||||
integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
@ -5239,7 +5261,7 @@ mdast-util-from-markdown@^1.0.0:
|
||||
|
||||
mdast-util-to-hast@^12.1.0:
|
||||
version "12.3.0"
|
||||
resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49"
|
||||
integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
@ -5253,7 +5275,7 @@ mdast-util-to-hast@^12.1.0:
|
||||
|
||||
mdast-util-to-string@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789"
|
||||
integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
@ -5275,7 +5297,7 @@ merge2@^1.3.0, merge2@^1.4.1:
|
||||
|
||||
micromark-core-commonmark@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8"
|
||||
integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==
|
||||
dependencies:
|
||||
decode-named-character-reference "^1.0.0"
|
||||
@ -5297,7 +5319,7 @@ micromark-core-commonmark@^1.0.1:
|
||||
|
||||
micromark-factory-destination@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f"
|
||||
integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
@ -5306,7 +5328,7 @@ micromark-factory-destination@^1.0.0:
|
||||
|
||||
micromark-factory-label@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68"
|
||||
integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
@ -5316,7 +5338,7 @@ micromark-factory-label@^1.0.0:
|
||||
|
||||
micromark-factory-space@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf"
|
||||
integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
@ -5324,7 +5346,7 @@ micromark-factory-space@^1.0.0:
|
||||
|
||||
micromark-factory-title@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1"
|
||||
integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==
|
||||
dependencies:
|
||||
micromark-factory-space "^1.0.0"
|
||||
@ -5334,7 +5356,7 @@ micromark-factory-title@^1.0.0:
|
||||
|
||||
micromark-factory-whitespace@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705"
|
||||
integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==
|
||||
dependencies:
|
||||
micromark-factory-space "^1.0.0"
|
||||
@ -5344,7 +5366,7 @@ micromark-factory-whitespace@^1.0.0:
|
||||
|
||||
micromark-util-character@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc"
|
||||
integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
@ -5352,14 +5374,14 @@ micromark-util-character@^1.0.0:
|
||||
|
||||
micromark-util-chunked@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b"
|
||||
integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-classify-character@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d"
|
||||
integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
@ -5368,7 +5390,7 @@ micromark-util-classify-character@^1.0.0:
|
||||
|
||||
micromark-util-combine-extensions@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84"
|
||||
integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==
|
||||
dependencies:
|
||||
micromark-util-chunked "^1.0.0"
|
||||
@ -5376,14 +5398,14 @@ micromark-util-combine-extensions@^1.0.0:
|
||||
|
||||
micromark-util-decode-numeric-character-reference@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6"
|
||||
integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-decode-string@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c"
|
||||
integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==
|
||||
dependencies:
|
||||
decode-named-character-reference "^1.0.0"
|
||||
@ -5393,31 +5415,31 @@ micromark-util-decode-string@^1.0.0:
|
||||
|
||||
micromark-util-encode@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5"
|
||||
integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==
|
||||
|
||||
micromark-util-html-tag-name@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588"
|
||||
integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==
|
||||
|
||||
micromark-util-normalize-identifier@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7"
|
||||
integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==
|
||||
dependencies:
|
||||
micromark-util-symbol "^1.0.0"
|
||||
|
||||
micromark-util-resolve-all@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188"
|
||||
integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==
|
||||
dependencies:
|
||||
micromark-util-types "^1.0.0"
|
||||
|
||||
micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d"
|
||||
integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==
|
||||
dependencies:
|
||||
micromark-util-character "^1.0.0"
|
||||
@ -5426,7 +5448,7 @@ micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
|
||||
|
||||
micromark-util-subtokenize@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1"
|
||||
integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==
|
||||
dependencies:
|
||||
micromark-util-chunked "^1.0.0"
|
||||
@ -5436,17 +5458,17 @@ micromark-util-subtokenize@^1.0.0:
|
||||
|
||||
micromark-util-symbol@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142"
|
||||
integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==
|
||||
|
||||
micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283"
|
||||
integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==
|
||||
|
||||
micromark@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9"
|
||||
integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==
|
||||
dependencies:
|
||||
"@types/debug" "^4.0.0"
|
||||
@ -5545,7 +5567,7 @@ mlly@^1.2.0, mlly@^1.4.0:
|
||||
|
||||
mri@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
|
||||
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
|
||||
|
||||
ms@2.0.0:
|
||||
@ -6240,7 +6262,7 @@ react-is@^18.0.0:
|
||||
|
||||
react-markdown@^8.0.7:
|
||||
version "8.0.7"
|
||||
resolved "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz"
|
||||
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.7.tgz#c8dbd1b9ba5f1c5e7e5f2a44de465a3caafdf89b"
|
||||
integrity sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
@ -6382,7 +6404,7 @@ rehype-highlight@^6.0.0:
|
||||
|
||||
remark-parse@^10.0.0:
|
||||
version "10.0.2"
|
||||
resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262"
|
||||
integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==
|
||||
dependencies:
|
||||
"@types/mdast" "^3.0.0"
|
||||
@ -6391,7 +6413,7 @@ remark-parse@^10.0.0:
|
||||
|
||||
remark-rehype@^10.0.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
|
||||
integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
|
||||
dependencies:
|
||||
"@types/hast" "^2.0.0"
|
||||
@ -6491,7 +6513,7 @@ run-parallel@^1.1.9:
|
||||
|
||||
sade@^1.7.3:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
|
||||
integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
|
||||
dependencies:
|
||||
mri "^1.1.0"
|
||||
@ -6832,7 +6854,7 @@ strip-literal@^1.0.1:
|
||||
|
||||
style-to-object@^0.4.0:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.2.tgz#a8247057111dea8bd3b8a1a66d2d0c9cf9218a54"
|
||||
integrity sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==
|
||||
dependencies:
|
||||
inline-style-parser "0.1.1"
|
||||
@ -7260,7 +7282,7 @@ unist-util-find-after@^4.0.0:
|
||||
|
||||
unist-util-generated@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae"
|
||||
integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==
|
||||
|
||||
unist-util-is@^5.0.0:
|
||||
@ -7272,7 +7294,7 @@ unist-util-is@^5.0.0:
|
||||
|
||||
unist-util-position@^4.0.0:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz"
|
||||
resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037"
|
||||
integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==
|
||||
dependencies:
|
||||
"@types/unist" "^2.0.0"
|
||||
@ -7368,7 +7390,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
|
||||
|
||||
uvu@^0.5.0:
|
||||
version "0.5.6"
|
||||
resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz"
|
||||
resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df"
|
||||
integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
|
||||
dependencies:
|
||||
dequal "^2.0.0"
|
||||
|
Loading…
Reference in New Issue
Block a user