,
- ) {
- const file = event.target.files?.[0];
- event.target.value = "";
- if (!file || disabled || isUploading) {
- if (editor && shouldRestoreFocusRef.current) {
- requestAnimationFrame(() => {
- editor.commands.focus();
- });
- }
- return;
- }
- shouldRestoreFocusRef.current = editor?.isFocused ?? true;
- setLocalUploading(true);
- try {
- await onSendAttachmentRef.current(file);
- } finally {
- setLocalUploading(false);
- requestAnimationFrame(() => {
- if (editor && !disabled && shouldRestoreFocusRef.current) {
- editor.commands.focus();
- }
- });
- }
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Enter 发送
-
-
-
-
-
- );
-}
-
-function isMeaningfulHTML(html: string) {
- const normalized = html
- .replace(/<\/p>/g, "")
- .replace(/
<\/p>/g, "")
- .replace(/\s+/g, "");
- if (/
/i.test(normalized)) {
- return true;
- }
- const plainText = normalized.replace(/<[^>]+>/g, "").trim();
- return plainText !== "";
-}
-
-function getClipboardImageFile(clipboardData: DataTransfer | null) {
- if (!clipboardData) {
- return null;
- }
- for (const item of Array.from(clipboardData.items)) {
- if (item.kind === "file" && item.type.startsWith("image/")) {
- return item.getAsFile();
- }
- }
- return null;
-}
-
-function removeImageByTitle(editor: NonNullable>, title: string) {
- const { state } = editor;
- let targetPos: number | null = null;
- state.doc.descendants((node, pos) => {
- if (node.type.name === "image" && node.attrs.title === title) {
- targetPos = pos;
- return false;
- }
- return true;
- });
- if (targetPos === null) {
- return;
- }
- editor.chain().focus().deleteRange({ from: targetPos, to: targetPos + 1 }).run();
-}
-
-function replaceImageSourceByTitle(
- editor: NonNullable>,
- title: string,
- uploaded: UploadedImage,
-) {
- const { state, view } = editor;
- let targetPos: number | null = null;
- state.doc.descendants((node, pos) => {
- if (node.type.name === "image" && node.attrs.title === title) {
- targetPos = pos;
- return false;
- }
- return true;
- });
- if (targetPos === null) {
- return;
- }
- const transaction = view.state.tr.setNodeMarkup(targetPos, undefined, {
- ...view.state.doc.nodeAt(targetPos)?.attrs,
- src: uploaded.url,
- alt: uploaded.filename || "image",
- dataAssetId: uploaded.assetId,
- dataProvider: uploaded.provider,
- dataStorageKey: uploaded.storageKey,
- title: "",
- });
- view.dispatch(transaction);
-}
diff --git a/widget/components/im/message-html.tsx b/widget/components/im/message-html.tsx
deleted file mode 100644
index e753855..0000000
--- a/widget/components/im/message-html.tsx
+++ /dev/null
@@ -1,82 +0,0 @@
-"use client";
-
-import { memo, useEffect, useRef } from "react";
-
-type MessageHTMLProps = {
- html: string;
- className?: string;
- onImageSettled?: () => void;
- onImageClick?: (src: string, alt?: string) => void;
-};
-
-function MessageHTMLComponent({
- html,
- className = "",
- onImageSettled,
- onImageClick,
-}: MessageHTMLProps) {
- const containerRef = useRef(null);
- const onImageSettledRef = useRef(onImageSettled);
- const onImageClickRef = useRef(onImageClick);
-
- useEffect(() => {
- onImageSettledRef.current = onImageSettled;
- }, [onImageSettled]);
-
- useEffect(() => {
- onImageClickRef.current = onImageClick;
- }, [onImageClick]);
-
- useEffect(() => {
- const container = containerRef.current;
- if (!container) {
- return;
- }
- const images = Array.from(container.querySelectorAll("img"));
- if (images.length === 0) {
- return;
- }
- const cleanups = images.map((image) => {
- const handleSettled = () => onImageSettledRef.current?.();
- const handleClick = () => {
- const src = image.getAttribute("src");
- if (src) {
- const alt = image.getAttribute("alt") ?? undefined;
- onImageClickRef.current?.(src, alt);
- }
- };
- image.addEventListener("load", handleSettled);
- image.addEventListener("error", handleSettled);
- image.addEventListener("click", handleClick);
- if (image.complete) {
- onImageSettledRef.current?.();
- }
- image.classList.add("cursor-zoom-in");
- return () => {
- image.removeEventListener("load", handleSettled);
- image.removeEventListener("error", handleSettled);
- image.removeEventListener("click", handleClick);
- };
- });
- return () => {
- cleanups.forEach((cleanup) => cleanup());
- };
- }, [html, onImageSettled, onImageClick]);
-
- return (
-
- );
-}
-
-export const MessageHTML = memo(
- MessageHTMLComponent,
- (prevProps, nextProps) =>
- prevProps.html === nextProps.html &&
- prevProps.className === nextProps.className &&
- prevProps.onImageSettled === nextProps.onImageSettled &&
- prevProps.onImageClick === nextProps.onImageClick,
-);
diff --git a/widget/components/im/message-input.tsx b/widget/components/im/message-input.tsx
deleted file mode 100644
index 6a8613f..0000000
--- a/widget/components/im/message-input.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-"use client";
-
-import { useLayoutEffect, useRef, useState } from "react";
-import { ImageIcon, SendHorizonalIcon } from "lucide-react";
-
-type MessageInputProps = {
- disabled?: boolean;
- uploadingImage?: boolean;
- onSend: (content: string) => Promise;
- onSendImage: (file: File) => Promise;
-};
-
-export function MessageInput({
- disabled,
- uploadingImage = false,
- onSend,
- onSendImage,
-}: MessageInputProps) {
- const [value, setValue] = useState("");
- const [submitting, setSubmitting] = useState(false);
- const textareaRef = useRef(null);
- const imageInputRef = useRef(null);
-
- useLayoutEffect(() => {
- const textarea = textareaRef.current;
- if (!textarea) {
- return;
- }
- const lineHeight = 20;
- const maxHeight = lineHeight * 8;
- textarea.style.height = "0px";
- textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeight)}px`;
- textarea.style.overflowY =
- textarea.scrollHeight > maxHeight ? "auto" : "hidden";
- }, [value]);
-
- async function handleSubmit() {
- const content = value.trim();
- if (!content || disabled || submitting) {
- return;
- }
- setSubmitting(true);
- try {
- await onSend(content);
- setValue("");
- } finally {
- setSubmitting(false);
- requestAnimationFrame(() => {
- textareaRef.current?.focus();
- });
- }
- }
-
- async function handleSelectImage(event: React.ChangeEvent) {
- const file = event.target.files?.[0];
- event.target.value = "";
- if (!file || disabled || uploadingImage || submitting) {
- return;
- }
- if (!file.type.startsWith("image/")) {
- return;
- }
- try {
- await onSendImage(file);
- } finally {
- requestAnimationFrame(() => {
- textareaRef.current?.focus();
- });
- }
- }
-
- return (
-
-
-
-
-
-
- Enter 发送,支持图片上传
-
-
-
- );
-}
diff --git a/widget/components/im/message-list.tsx b/widget/components/im/message-list.tsx
deleted file mode 100644
index 38966b5..0000000
--- a/widget/components/im/message-list.tsx
+++ /dev/null
@@ -1,348 +0,0 @@
-"use client";
-
-import {
- forwardRef,
- memo,
- useCallback,
- useEffect,
- useImperativeHandle,
- useLayoutEffect,
- useRef,
-} from "react";
-import Image from "next/image";
-
-import { MessageHTML } from "@/components/im/message-html";
-import { useImageLightbox } from "@/components/image-lightbox";
-import { renderMessageHTML } from "@/lib/services/message-asset";
-import type { WidgetMessage } from "@/lib/services/types";
-import { cn, formatDateTime } from "@/lib/utils";
-
-type MessageListProps = {
- messages: WidgetMessage[];
- onNearBottomVisible?: () => void;
- hasMoreOlder?: boolean;
- loadingOlder?: boolean;
- onLoadOlder?: () => Promise;
-};
-
-export type MessageListHandle = {
- scrollToBottom: () => void;
-};
-
-function getDayKey(value?: string) {
- if (!value) {
- return "unknown";
- }
- const date = new Date(value);
- if (Number.isNaN(date.getTime())) {
- return value.slice(0, 10);
- }
- return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(
- date.getDate(),
- ).padStart(2, "0")}`;
-}
-
-function getTimelineLabel(value?: string) {
- if (!value) {
- return "刚刚";
- }
- const date = new Date(value);
- if (Number.isNaN(date.getTime())) {
- return value;
- }
- const now = new Date();
- const currentDayKey = getDayKey(value);
- const todayDayKey = getDayKey(now.toISOString());
- const timeText = `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
- if (currentDayKey === todayDayKey) {
- return `今天 ${timeText}`;
- }
- return `${currentDayKey} ${timeText}`;
-}
-
-export const MessageList = forwardRef(
- function MessageList(
- {
- messages,
- onNearBottomVisible,
- hasMoreOlder = false,
- loadingOlder = false,
- onLoadOlder,
- },
- ref,
- ) {
- const containerRef = useRef(null);
- const contentRef = useRef(null);
- const frameRef = useRef(null);
- const shouldStickToBottomRef = useRef(true);
- const lastMessageId = messages.at(-1)?.id;
-
- const isNearBottom = useCallback(
- (element: HTMLElement, threshold = 80) =>
- element.scrollHeight - element.scrollTop - element.clientHeight <=
- threshold,
- [],
- );
-
- const scrollToBottom = useCallback(() => {
- const container = containerRef.current;
- if (!container) {
- return;
- }
- container.scrollTop = container.scrollHeight;
- }, []);
-
- const scheduleScrollToBottom = useCallback(
- (attempts = 4) => {
- if (frameRef.current !== null) {
- cancelAnimationFrame(frameRef.current);
- }
-
- const run = (remaining: number, previousHeight = -1) => {
- frameRef.current = requestAnimationFrame(() => {
- const container = containerRef.current;
- if (!container) {
- frameRef.current = null;
- return;
- }
-
- const currentHeight = container.scrollHeight;
- scrollToBottom();
- if (remaining > 1 && currentHeight !== previousHeight) {
- run(remaining - 1, currentHeight);
- return;
- }
- frameRef.current = null;
- });
- };
-
- run(attempts);
- },
- [scrollToBottom],
- );
-
- const handleImageSettled = useCallback(() => {
- if (shouldStickToBottomRef.current) {
- scheduleScrollToBottom();
- onNearBottomVisible?.();
- }
- }, [onNearBottomVisible, scheduleScrollToBottom]);
-
- useImperativeHandle(ref, () => ({
- scrollToBottom,
- }));
-
- useLayoutEffect(() => {
- shouldStickToBottomRef.current = true;
- scheduleScrollToBottom();
- return () => {
- if (frameRef.current !== null) {
- cancelAnimationFrame(frameRef.current);
- frameRef.current = null;
- }
- };
- }, [lastMessageId, scheduleScrollToBottom]);
-
- useEffect(() => {
- const container = containerRef.current;
- const content = contentRef.current;
- if (!container || !content) {
- return;
- }
-
- const handleScroll = () => {
- shouldStickToBottomRef.current = isNearBottom(container);
- if (shouldStickToBottomRef.current) {
- onNearBottomVisible?.();
- }
- };
-
- const resizeObserver = new ResizeObserver(() => {
- if (shouldStickToBottomRef.current) {
- scheduleScrollToBottom();
- }
- });
-
- handleScroll();
- container.addEventListener("scroll", handleScroll);
- resizeObserver.observe(content);
- scrollToBottom();
-
- return () => {
- container.removeEventListener("scroll", handleScroll);
- resizeObserver.disconnect();
- };
- }, [
- isNearBottom,
- onNearBottomVisible,
- scheduleScrollToBottom,
- scrollToBottom,
- ]);
-
- const handleLoadOlder = useCallback(async () => {
- if (!onLoadOlder || loadingOlder || !hasMoreOlder) {
- return;
- }
- const container = containerRef.current;
- if (!container) {
- return;
- }
- const anchor = {
- height: container.scrollHeight,
- top: container.scrollTop,
- };
- try {
- await onLoadOlder();
- } catch {
- return;
- }
- requestAnimationFrame(() => {
- requestAnimationFrame(() => {
- const c = containerRef.current;
- if (!c) {
- return;
- }
- c.scrollTop = c.scrollHeight - anchor.height + anchor.top;
- });
- });
- }, [hasMoreOlder, loadingOlder, onLoadOlder]);
-
- return (
-
-
- {hasMoreOlder && onLoadOlder ? (
-
-
-
- ) : null}
- {/*
*/}
-
- {/* {messages.length === 0 ? (
-
- 开始发送第一条消息后,会在这里保留完整会话记录。
-
- ) : null} */}
-
- {messages.map((message, index) => {
- const previousMessage = index > 0 ? messages[index - 1] : null;
- const showTimeline =
- index === 0 ||
- getDayKey(previousMessage?.sentAt) !== getDayKey(message.sentAt);
-
- return (
-
- );
- })}
-
-
- );
- },
-);
-
-type MessageItemProps = {
- message: WidgetMessage;
- showTimeline: boolean;
- onImageSettled: () => void;
-};
-
-const MessageItem = memo(
- function MessageItem({
- message,
- showTimeline,
- onImageSettled,
- }: MessageItemProps) {
- const { open: openImageLightbox } = useImageLightbox();
- const isCustomer = message.senderType === "customer";
- const senderName = isCustomer ? "我" : message.senderName?.trim() || "客服";
- const agentAvatarSrc =
- !isCustomer && message.senderAvatar?.trim()
- ? message.senderAvatar.trim()
- : undefined;
- const htmlContent = buildMessageHTML(message);
-
- return (
-
- {showTimeline ? (
-
-
- {getTimelineLabel(message.sentAt)}
-
-
- ) : null}
-
-
- {!isCustomer && agentAvatarSrc ? (
-
- ) : null}
-
-
- {senderName}
- {formatDateTime(message.sentAt)}
- {isCustomer ? (
- {message.agentRead ? "客服已读" : "客服未读"}
- ) : null}
-
-
-
-
-
-
-
- );
- },
- (prevProps, nextProps) =>
- prevProps.message === nextProps.message &&
- prevProps.showTimeline === nextProps.showTimeline &&
- prevProps.onImageSettled === nextProps.onImageSettled,
-);
-
-function buildMessageHTML(message: WidgetMessage) {
- return renderMessageHTML(message);
-}
diff --git a/widget/components/image-lightbox.tsx b/widget/components/image-lightbox.tsx
deleted file mode 100644
index 71da0e2..0000000
--- a/widget/components/image-lightbox.tsx
+++ /dev/null
@@ -1,376 +0,0 @@
-"use client";
-
-import {
- ExternalLinkIcon,
- RefreshCwIcon,
- RotateCcwIcon,
- RotateCwIcon,
- XIcon,
- ZoomInIcon,
- ZoomOutIcon,
-} from "lucide-react";
-import {
- createContext,
- useCallback,
- useContext,
- useEffect,
- useMemo,
- useRef,
- useState,
- type ReactNode,
-} from "react";
-import type { ReactZoomPanPinchContentRef } from "react-zoom-pan-pinch";
-import {
- TransformComponent,
- TransformWrapper,
-} from "react-zoom-pan-pinch";
-
-import { cn } from "@/lib/utils";
-
-type ImageLightboxItem = {
- src: string;
- alt?: string;
-};
-
-type ImageLightboxContextValue = {
- open: (src: string, alt?: string) => void;
- close: () => void;
-};
-
-const ImageLightboxContext = createContext(
- null,
-);
-
-const iconBtnClass =
- "inline-flex size-7 shrink-0 items-center justify-center rounded-md text-white outline-none transition-colors hover:bg-white/10 focus-visible:ring-2 focus-visible:ring-white/40";
-
-export function useImageLightbox(): ImageLightboxContextValue {
- const ctx = useContext(ImageLightboxContext);
- if (!ctx) {
- throw new Error("useImageLightbox 必须在 ImageLightboxProvider 内使用");
- }
- return ctx;
-}
-
-export function useImageLightboxOptional(): ImageLightboxContextValue | null {
- return useContext(ImageLightboxContext);
-}
-
-export type ImageLightboxProps = {
- open: boolean;
- onOpenChange: (open: boolean) => void;
- src: string | null;
- alt?: string;
-};
-
-function canOpenInNewTab(url: string): boolean {
- if (!url) {
- return false;
- }
- if (url.startsWith("/")) {
- return true;
- }
- try {
- const parsed = new URL(url);
- return (
- parsed.protocol === "http:" ||
- parsed.protocol === "https:" ||
- parsed.protocol === "blob:"
- );
- } catch {
- return false;
- }
-}
-
-function LightboxImageBody({
- src,
- alt,
- pinchRef,
- rotationDeg,
-}: {
- src: string;
- alt?: string;
- pinchRef: React.RefObject;
- rotationDeg: number;
-}) {
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(false);
- const showOpenTab = canOpenInNewTab(src);
-
- useEffect(() => {
- requestAnimationFrame(() => {
- pinchRef.current?.centerView(1, 0);
- });
- }, [rotationDeg, pinchRef]);
-
- return (
-
- {loading && !error ? (
-
- ) : null}
- {error ? (
-
-
图片加载失败
- {showOpenTab ? (
-
- 在新标签页打开
-
- ) : null}
-
- ) : (
-
-
- {/* eslint-disable-next-line @next/next/no-img-element -- 外链与任意尺寸大图预览 */}
-
{
- setLoading(false);
- setError(false);
- requestAnimationFrame(() => {
- pinchRef.current?.centerView(1, 0);
- });
- }}
- onError={() => {
- setLoading(false);
- setError(true);
- }}
- />
-
-
- )}
-
- );
-}
-
-function ImageLightboxDialogContent({
- src,
- alt,
- onRequestClose,
-}: {
- src: string;
- alt?: string;
- onRequestClose: () => void;
-}) {
- const pinchRef = useRef(null);
- const [rotationDeg, setRotationDeg] = useState(0);
- const showOpenTab = canOpenInNewTab(src);
- const titleText = alt?.trim() || "图片预览";
-
- const rotateLeft = useCallback(() => {
- setRotationDeg((d) => (d - 90 + 360) % 360);
- }, []);
-
- const rotateRight = useCallback(() => {
- setRotationDeg((d) => (d + 90) % 360);
- }, []);
-
- return (
-
-
-
-
-
-
-
-
-
-
-
- {showOpenTab ? (
-
- ) : null}
-
-
-
-
-
-
-
- 使用滚轮或双指缩放,按住拖拽可平移图片;工具栏可向左或向右旋转。
-
-
-
- );
-}
-
-export function ImageLightboxView({
- open,
- onOpenChange,
- src,
- alt,
-}: ImageLightboxProps) {
- const dialogRef = useRef(null);
-
- useEffect(() => {
- const el = dialogRef.current;
- if (!el) {
- return;
- }
- if (open && src) {
- if (!el.open) {
- el.showModal();
- }
- } else if (el.open) {
- el.close();
- }
- }, [open, src]);
-
- return (
-
- );
-}
-
-export function ImageLightboxProvider({ children }: { children: ReactNode }) {
- const [state, setState] = useState(null);
-
- const open = useCallback((src: string, alt?: string) => {
- const trimmed = src?.trim();
- if (!trimmed) {
- return;
- }
- setState({ src: trimmed, alt });
- }, []);
-
- const close = useCallback(() => {
- setState(null);
- }, []);
-
- const contextValue = useMemo(
- () => ({
- open,
- close,
- }),
- [open, close],
- );
-
- return (
-
- {children}
- {
- if (!next) {
- setState(null);
- }
- }}
- src={state?.src ?? null}
- alt={state?.alt}
- />
-
- );
-}
diff --git a/widget/eslint.config.mjs b/widget/eslint.config.mjs
deleted file mode 100644
index 88b282e..0000000
--- a/widget/eslint.config.mjs
+++ /dev/null
@@ -1,9 +0,0 @@
-import { defineConfig, globalIgnores } from "eslint/config";
-import nextVitals from "eslint-config-next/core-web-vitals";
-import nextTs from "eslint-config-next/typescript";
-
-export default defineConfig([
- ...nextVitals,
- ...nextTs,
- globalIgnores([".next/**", "out/**", "build/**"]),
-]);
diff --git a/widget/lib/services/conversation.ts b/widget/lib/services/conversation.ts
deleted file mode 100644
index 5835425..0000000
--- a/widget/lib/services/conversation.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { requestJson } from "@/lib/services/http";
-import type { JsonResult, WidgetConversation } from "@/lib/services/types";
-
-/** 身份由请求头 X-External-Source / X-External-Id(及可选 X-External-Name)提供,与 GetExternalInfo 一致 */
-export async function createOrMatchConversation() {
- const result = await requestJson>(
- "/api/open/im/conversation/create_or_match",
- {
- method: "POST",
- },
- );
- if (!result.data) {
- throw new Error(result.message || "conversation init failed");
- }
- return result.data;
-}
-
-export async function closeConversation(conversationId: number) {
- const result = await requestJson>(
- "/api/open/im/conversation/close",
- {
- method: "POST",
- body: JSON.stringify({ conversationId }),
- },
- );
- if (result.success === false) {
- throw new Error(result.message || "conversation close failed");
- }
-}
diff --git a/widget/lib/services/http.ts b/widget/lib/services/http.ts
deleted file mode 100644
index 98131ee..0000000
--- a/widget/lib/services/http.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { readWidgetConfig } from "@/lib/widget/config";
-import { getOrCreateExternalId } from "@/lib/widget/visitor";
-
-export async function requestJson(path: string, init?: RequestInit): Promise {
- const config = readWidgetConfig();
- const baseUrl = (config.apiBaseUrl || config.baseUrl).replace(/\/$/, "");
- const visitorId = getOrCreateExternalId();
- const externalSource = (config.externalSource ?? "web_chat").trim() || "web_chat";
- const headers = new Headers(init?.headers ?? {});
- if (
- !headers.has("Content-Type") &&
- init?.body &&
- !(typeof FormData !== "undefined" && init.body instanceof FormData)
- ) {
- headers.set("Content-Type", "application/json");
- }
- headers.set("X-External-Source", externalSource);
- headers.set("X-External-Id", visitorId);
- const externalName = (config.subject ?? "").trim();
- if (externalName) {
- headers.set("X-External-Name", encodeURIComponent(externalName));
- }
- headers.set("X-Channel-Id", config.channelId);
- const response = await fetch(`${baseUrl}${path}`, {
- ...init,
- headers,
- cache: "no-store",
- });
- if (!response.ok) {
- throw new Error(`Request failed: ${response.status}`);
- }
- return (await response.json()) as T;
-}
diff --git a/widget/lib/services/message-asset.ts b/widget/lib/services/message-asset.ts
deleted file mode 100644
index 2d28a86..0000000
--- a/widget/lib/services/message-asset.ts
+++ /dev/null
@@ -1,149 +0,0 @@
-import MarkdownIt from "markdown-it";
-
-export type WidgetMessageAssetPayload = {
- assetId: string;
- filename?: string;
- fileSize?: number;
- mimeType?: string;
- url?: string;
-};
-
-const messageMarkdown = new MarkdownIt({
- html: false,
- linkify: true,
- breaks: true,
-});
-
-export function parseMessageAssetPayload(
- payload?: string,
-): WidgetMessageAssetPayload | null {
- if (!payload?.trim()) {
- return null;
- }
- try {
- const parsed = JSON.parse(payload) as WidgetMessageAssetPayload;
- if (!parsed?.assetId?.trim()) {
- return null;
- }
- return parsed;
- } catch {
- return null;
- }
-}
-
-export function renderMessageHTML(message: {
- messageType: string;
- content: string;
- payload?: string;
-}) {
- if (message.messageType === "html") {
- return message.content;
- }
-
- const asset = parseMessageAssetPayload(message.payload);
- if (message.messageType === "image") {
- if (asset?.url) {
- return `})
`;
- }
- return "[图片]
";
- }
-
- if (message.messageType === "attachment") {
- if (asset?.url) {
- const title = escapeHTML(asset.filename || message.content || "附件");
- const meta = formatFileSize(asset.fileSize ?? 0);
- const metaHTML = meta
- ? `${escapeHTML(meta)}
`
- : "";
- return ``;
- }
- return `${escapeHTML(message.content || "[附件]")}
`;
- }
-
- return renderTextMessageHTML(message.content || "");
-}
-
-export function summarizeMessage(message: {
- messageType: string;
- content: string;
- payload?: string;
-}) {
- if (message.messageType === "image") {
- return "[图片]";
- }
- if (message.messageType === "attachment") {
- const asset = parseMessageAssetPayload(message.payload);
- return asset?.filename?.trim() ? `[附件] ${asset.filename.trim()}` : "[附件]";
- }
- if (message.messageType === "html") {
- const text = extractTextFromHTML(message.content);
- if (text.trim()) {
- return text.substring(0, 100);
- }
- if (message.content.includes("
= 1024 && index < units.length - 1) {
- value /= 1024;
- index += 1;
- }
- const digits = value >= 10 || index === 0 ? 0 : 1;
- return `${value.toFixed(digits)} ${units[index]}`;
-}
-
-function extractTextFromHTML(html: string): string {
- if (typeof document === "undefined") {
- return "";
- }
- const div = document.createElement("div");
- div.innerHTML = html;
- return div.textContent || div.innerText || "";
-}
-
-function renderTextMessageHTML(content: string) {
- const value = content.trim();
- if (!value) {
- return "";
- }
- return messageMarkdown.render(value);
-}
-
-function escapeHTML(value: string) {
- return value
- .replaceAll("&", "&")
- .replaceAll("<", "<")
- .replaceAll(">", ">")
- .replaceAll('"', """)
- .replaceAll("'", "'")
- .replaceAll("\n", "
");
-}
-
-function escapeHTMLAttr(value: string) {
- return value
- .replaceAll("&", "&")
- .replaceAll('"', """)
- .replaceAll("<", "<")
- .replaceAll(">", ">");
-}
-
-function getAttachmentIconSVG() {
- return ``;
-}
diff --git a/widget/lib/services/message.ts b/widget/lib/services/message.ts
deleted file mode 100644
index 9ba51b8..0000000
--- a/widget/lib/services/message.ts
+++ /dev/null
@@ -1,127 +0,0 @@
-import { requestJson } from "@/lib/services/http";
-import type {
- CursorResult,
- JsonResult,
- WidgetAsset,
- WidgetMessage,
-} from "@/lib/services/types";
-import { generateUUID } from "@/lib/utils";
-
-const DEFAULT_PAGE_LIMIT = 50;
-
-function buildListQuery(
- conversationId: number,
- options?: { cursor?: number; limit?: number },
-) {
- const params = new URLSearchParams({
- conversationId: String(conversationId),
- });
- const cursor = options?.cursor;
- if (cursor !== undefined && cursor > 0) {
- params.set("cursor", String(cursor));
- }
- const limit = options?.limit ?? DEFAULT_PAGE_LIMIT;
- if (limit > 0) {
- params.set("limit", String(limit));
- }
- return params.toString();
-}
-
-export async function fetchMessagesPage(
- conversationId: number,
- options?: { cursor?: number; limit?: number },
-): Promise> {
- const qs = buildListQuery(conversationId, options);
- const result = await requestJson<
- JsonResult>
- >(`/api/open/im/message/list?${qs}`);
- if (result.success === false) {
- throw new Error(result.message || "加载消息失败");
- }
- const data = result.data;
- return {
- results: data?.results ?? [],
- cursor: data?.cursor ?? "",
- hasMore: Boolean(data?.hasMore),
- };
-}
-
-/** @deprecated 使用 fetchMessagesPage;保留别名供渐进迁移 */
-export async function fetchMessages(conversationId: number) {
- const page = await fetchMessagesPage(conversationId);
- return page.results;
-}
-
-export async function sendMessageWithPayload(
- conversationId: number,
- payload: {
- messageType: string;
- content: string;
- payload?: string;
- clientMsgId?: string;
- },
-) {
- const result = await requestJson>("/api/open/im/message/send", {
- method: "POST",
- body: JSON.stringify({
- conversationId,
- clientMsgId: payload.clientMsgId || `client_${generateUUID()}`,
- messageType: payload.messageType,
- content: payload.content,
- payload: payload.payload || "",
- }),
- });
- if (!result.data) {
- throw new Error(result.message || "send message failed");
- }
- return result.data;
-}
-
-export async function sendMessage(conversationId: number, content: string) {
- return sendMessageWithPayload(conversationId, {
- messageType: "html",
- content,
- payload: "",
- });
-}
-
-export async function markMessageRead(conversationId: number, messageId = 0) {
- await requestJson>("/api/open/im/message/read", {
- method: "POST",
- body: JSON.stringify({ conversationId, messageId }),
- });
-}
-
-export async function uploadImage(conversationId: number, file: File) {
- const formData = new FormData();
- formData.set("conversationId", String(conversationId));
- formData.set("file", file);
- const result = await requestJson>(
- "/api/open/im/message/upload_image",
- {
- method: "POST",
- body: formData,
- },
- );
- if (!result.data) {
- throw new Error(result.message || "upload image failed");
- }
- return result.data;
-}
-
-export async function uploadAttachment(conversationId: number, file: File) {
- const formData = new FormData();
- formData.set("conversationId", String(conversationId));
- formData.set("file", file);
- const result = await requestJson>(
- "/api/open/im/message/upload_attachment",
- {
- method: "POST",
- body: formData,
- },
- );
- if (!result.data) {
- throw new Error(result.message || "upload attachment failed");
- }
- return result.data;
-}
diff --git a/widget/lib/services/notification.ts b/widget/lib/services/notification.ts
deleted file mode 100644
index 2a77dd4..0000000
--- a/widget/lib/services/notification.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import type { WidgetMessage } from "./types";
-import { summarizeMessage } from "./message-asset";
-
-export function getNotificationBody(message: WidgetMessage): string {
- return summarizeMessage(message);
-}
-
-export function showNotification(title: string, body: string, onClick?: () => void) {
- if (typeof Notification === "undefined") {
- return;
- }
-
- if (Notification.permission === "granted") {
- const notification = new Notification(title, {
- body,
- icon: "/favicon.ico",
- badge: "/favicon.ico",
- });
-
- if (onClick) {
- notification.onclick = () => {
- onClick();
- notification.close();
- };
- }
-
- setTimeout(() => {
- notification.close();
- }, 5000);
- } else if (Notification.permission === "default") {
- Notification.requestPermission().then((permission) => {
- if (permission === "granted") {
- showNotification(title, body, onClick);
- }
- });
- }
-}
diff --git a/widget/lib/services/realtime.ts b/widget/lib/services/realtime.ts
deleted file mode 100644
index 4a355c2..0000000
--- a/widget/lib/services/realtime.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { readWidgetConfig } from "@/lib/widget/config";
-import { getOrCreateExternalId } from "@/lib/widget/visitor";
-
-export type RealtimeEnvelope = {
- type: string;
- topic?: string;
- data?: {
- conversationId?: number;
- messageId?: number;
- };
- payload?: {
- conversationId?: number;
- messageId?: number;
- };
-};
-
-export function createRealtimeConnection(onEvent: (event: RealtimeEnvelope) => void) {
- const config = readWidgetConfig();
- const baseUrl = (config.apiBaseUrl || config.baseUrl)
- .replace(/^http/, "ws")
- .replace(/\/$/, "");
- const externalId = encodeURIComponent(getOrCreateExternalId());
- const externalSource = encodeURIComponent(
- (config.externalSource ?? "web_chat").trim() || "web_chat",
- );
- const externalName = (config.subject ?? "").trim();
- const nameQuery =
- externalName !== ""
- ? `&externalName=${encodeURIComponent(externalName)}`
- : "";
- const socket = new WebSocket(
- `${baseUrl}/api/open/im/ws?externalId=${externalId}&externalSource=${externalSource}&channelId=${encodeURIComponent(config.channelId)}${nameQuery}`,
- );
- socket.addEventListener("message", (event) => {
- try {
- onEvent(JSON.parse(event.data) as RealtimeEnvelope);
- } catch {
- return;
- }
- });
- return socket;
-}
diff --git a/widget/lib/services/types.ts b/widget/lib/services/types.ts
deleted file mode 100644
index d8b4281..0000000
--- a/widget/lib/services/types.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-export type PageResult = {
- results: T[];
- page?: {
- page: number;
- limit: number;
- total: number;
- };
-};
-
-export type CursorResult = {
- results: T[];
- cursor: string;
- hasMore: boolean;
-};
-
-export type JsonResult = {
- success?: boolean;
- errorCode?: number;
- code?: number;
- message?: string;
- data?: T;
-};
-
-export type WidgetConversation = {
- id: number;
- subject?: string;
- status?: number;
- serviceMode?: number;
- currentAssigneeId?: number;
- lastMessageAt?: string;
- lastMessageSummary?: string;
- customerUnreadCount?: number;
- agentUnreadCount?: number;
- customerLastReadMessageId?: number;
- customerLastReadSeqNo?: number;
- customerLastReadAt?: string;
- agentLastReadMessageId?: number;
- agentLastReadSeqNo?: number;
- agentLastReadAt?: string;
-};
-
-export type WidgetMessage = {
- id: number;
- conversationId: number;
- senderType: string;
- senderName?: string;
- senderAvatar?: string;
- messageType: string;
- content: string;
- payload?: string;
- seqNo?: number;
- sentAt?: string;
- customerRead?: boolean;
- customerReadAt?: string;
- agentRead?: boolean;
- agentReadAt?: string;
-};
-
-export type WidgetAsset = {
- id: number;
- assetId: string;
- provider: string;
- storageKey: string;
- filename: string;
- fileSize: number;
- mimeType: string;
- status: number;
- url: string;
- createdAt: string;
- updatedAt: string;
- createUserId: number;
- createUserName: string;
- updateUserId: number;
- updateUserName: string;
-};
-
-export type WidgetConfigResponse = {
- title?: string;
- subtitle?: string;
- welcomeText?: string;
- themeColor?: string;
-};
diff --git a/widget/lib/services/widget-config.ts b/widget/lib/services/widget-config.ts
deleted file mode 100644
index 960b8e9..0000000
--- a/widget/lib/services/widget-config.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { requestJson } from "@/lib/services/http";
-import type { JsonResult, WidgetConfigResponse } from "@/lib/services/types";
-import { readWidgetConfig } from "@/lib/widget/config";
-
-export async function fetchWidgetConfig() {
- const config = readWidgetConfig();
- const result = await requestJson>(
- `/api/open/im/widget/config?channelId=${encodeURIComponent(config.channelId)}`,
- );
- return result.data ?? {};
-}
-
-export { readWidgetConfig };
diff --git a/widget/lib/store/chat-store.ts b/widget/lib/store/chat-store.ts
deleted file mode 100644
index 5cb21ba..0000000
--- a/widget/lib/store/chat-store.ts
+++ /dev/null
@@ -1,568 +0,0 @@
-"use client";
-
-import { create } from "zustand";
-
-import { createOrMatchConversation } from "@/lib/services/conversation";
-import {
- fetchMessagesPage,
- markMessageRead,
- sendMessage,
- sendMessageWithPayload,
- uploadAttachment,
- uploadImage,
-} from "@/lib/services/message";
-import {
- getNotificationBody,
- showNotification,
-} from "@/lib/services/notification";
-import { summarizeMessage } from "@/lib/services/message-asset";
-import {
- createRealtimeConnection,
- type RealtimeEnvelope,
-} from "@/lib/services/realtime";
-import type {
- WidgetAsset,
- WidgetConfigResponse,
- WidgetConversation,
- WidgetMessage,
-} from "@/lib/services/types";
-import {
- fetchWidgetConfig,
- readWidgetConfig,
-} from "@/lib/services/widget-config";
-import { generateUUID } from "@/lib/utils";
-
-type ChatStatus = "connecting" | "connected" | "disconnected";
-
-const RECONNECT_BASE_DELAY = 2000;
-const RECONNECT_MAX_DELAY = 30000;
-
-function mergeMessagesByIdAsc(
- a: WidgetMessage[],
- b: WidgetMessage[],
-): WidgetMessage[] {
- const byId = new Map();
- for (const m of a) {
- byId.set(m.id, m);
- }
- for (const m of b) {
- byId.set(m.id, m);
- }
- return Array.from(byId.values()).sort((x, y) => x.id - y.id);
-}
-
-function parseCursorId(cursor: string): number {
- const n = Number.parseInt(cursor, 10);
- return Number.isFinite(n) && n > 0 ? n : 0;
-}
-
-function cursorFromLoadedMessages(messages: WidgetMessage[]): string {
- if (messages.length === 0) {
- return "";
- }
- return String(Math.min(...messages.map((m) => m.id)));
-}
-
-function minWidgetMessageId(messages: WidgetMessage[]): number | null {
- if (messages.length === 0) {
- return null;
- }
- return Math.min(...messages.map((m) => m.id));
-}
-
-function hasMoreAfterLatestSyncMerge(args: {
- previousMessages: WidgetMessage[];
- previousHasMore: boolean;
- merged: WidgetMessage[];
- apiHasMore: boolean;
-}): boolean {
- const prevMin = minWidgetMessageId(args.previousMessages);
- const mergedMin = minWidgetMessageId(args.merged);
-
- if (mergedMin === null) {
- return Boolean(args.apiHasMore);
- }
-
- if (!args.previousHasMore && prevMin !== null && mergedMin >= prevMin) {
- return false;
- }
-
- return args.previousHasMore || Boolean(args.apiHasMore);
-}
-
-export interface ChatStore {
- title: string;
- subtitle: string;
- welcomeText: string;
- themeColor: string;
- conversation: WidgetConversation | null;
- messages: WidgetMessage[];
- messagesCursor: string;
- messagesHasMore: boolean;
- messagesLoadingMore: boolean;
- status: ChatStatus;
- error: string;
- isOpen: boolean;
- isVisible: boolean;
- initialized: boolean;
- socket: WebSocket | null;
- readingMessageId: number;
-
- setIsOpen: (isOpen: boolean) => void;
- setIsVisible: (isVisible: boolean) => void;
- bootstrap: () => void;
- handleSendMessage: (html: string) => Promise;
- uploadMessageImage: (file: File) => Promise;
- sendAttachment: (file: File) => Promise;
- retry: () => void;
- disconnectSocket: () => void;
- refreshMessages: () => Promise;
- syncLatestMessages: () => Promise;
- loadOlderMessages: () => Promise;
- markConversationRead: () => Promise;
-}
-
-let bootstrapToken = 0;
-
-export const useChatStore = create((set, get) => {
- let reconnectTimer: number | null = null;
- let pingTimer: number | null = null;
- let reconnectAttempt = 0;
- let shouldReconnect = false;
-
- const clearRealtimeTimers = () => {
- if (reconnectTimer !== null) {
- window.clearTimeout(reconnectTimer);
- reconnectTimer = null;
- }
- if (pingTimer !== null) {
- window.clearInterval(pingTimer);
- pingTimer = null;
- }
- };
-
- const scheduleReconnect = () => {
- if (!shouldReconnect || reconnectTimer !== null) {
- return;
- }
-
- const delay = Math.min(
- RECONNECT_BASE_DELAY * 2 ** reconnectAttempt,
- RECONNECT_MAX_DELAY,
- );
- set({ status: "connecting" });
- reconnectTimer = window.setTimeout(() => {
- reconnectTimer = null;
- reconnectAttempt += 1;
- if (!shouldReconnect || !get().isOpen) {
- return;
- }
- connectSocket();
- }, delay);
- };
-
- const closeSocket = (options?: { reconnect?: boolean }) => {
- shouldReconnect = options?.reconnect ?? false;
- clearRealtimeTimers();
- if (!shouldReconnect) {
- reconnectAttempt = 0;
- }
-
- const socket = get().socket;
- if (
- socket &&
- (socket.readyState === WebSocket.OPEN ||
- socket.readyState === WebSocket.CONNECTING)
- ) {
- socket.close();
- }
-
- set({ socket: null });
- };
-
- const connectSocket = () => {
- const conversationId = get().conversation?.id;
- if (!conversationId) {
- return;
- }
- closeSocket({ reconnect: false });
- shouldReconnect = true;
-
- const handleRealtimeEvent = (event: RealtimeEnvelope) => {
- const payload = event.data ?? event.payload;
- const needsRefresh =
- event.type === "message.created" ||
- event.type?.startsWith("conversation.");
-
- if (needsRefresh && payload?.conversationId === conversationId) {
- void get()
- .syncLatestMessages()
- .then(() => {
- if (event.type === "message.created") {
- const state = get();
- const lastMessage = state.messages.at(-1);
- if (
- lastMessage &&
- lastMessage.senderType !== "customer" &&
- typeof document !== "undefined" &&
- document.visibilityState !== "visible"
- ) {
- showNotification(
- "新消息",
- getNotificationBody(lastMessage),
- () => {
- state.setIsOpen(true);
- state.setIsVisible(true);
- },
- );
- }
- }
- });
- }
- };
-
- const socket = createRealtimeConnection(handleRealtimeEvent);
- set({ socket });
-
- socket.addEventListener("open", () => {
- clearRealtimeTimers();
- reconnectAttempt = 0;
- pingTimer = window.setInterval(() => {
- if (socket.readyState === WebSocket.OPEN) {
- socket.send(JSON.stringify({ type: "ping" }));
- }
- }, 20000);
- if (get().isOpen && get().socket === socket) {
- set({ status: "connected" });
- }
- });
-
- socket.addEventListener("error", () => {
- if (get().socket === socket) {
- scheduleReconnect();
- }
- });
-
- socket.addEventListener("close", () => {
- if (pingTimer !== null) {
- window.clearInterval(pingTimer);
- pingTimer = null;
- }
- if (get().socket === socket) {
- set({ socket: null });
- }
- if (get().isOpen) {
- if (shouldReconnect) {
- scheduleReconnect();
- } else {
- set({ status: "disconnected" });
- }
- }
- });
- };
-
- return {
- title: "在线客服",
- subtitle: "",
- welcomeText: "",
- themeColor: "#2563eb",
- conversation: null,
- messages: [],
- messagesCursor: "",
- messagesHasMore: false,
- messagesLoadingMore: false,
- status: "connecting",
- error: "",
- isOpen: typeof window !== "undefined" ? window.self === window.top : false,
- isVisible:
- typeof window !== "undefined" ? window.self === window.top : false,
- initialized: false,
- socket: null,
- readingMessageId: 0,
-
- setIsOpen: (isOpen: boolean) => {
- set({ isOpen });
- },
-
- setIsVisible: (isVisible: boolean) => {
- set({ isVisible });
- },
-
- disconnectSocket: () => {
- closeSocket({ reconnect: false });
- },
-
- refreshMessages: async () => {
- const conversationId = get().conversation?.id;
- if (!conversationId) return;
-
- try {
- const page = await fetchMessagesPage(conversationId);
- const currentConversation = get().conversation;
- set({
- messages: page.results,
- messagesCursor: cursorFromLoadedMessages(page.results) || page.cursor,
- messagesHasMore: page.hasMore,
- conversation: currentConversation,
- });
- } catch (e) {
- console.error("Failed to refresh messages", e);
- }
- },
-
- syncLatestMessages: async () => {
- const conversationId = get().conversation?.id;
- if (!conversationId) return;
-
- try {
- const page = await fetchMessagesPage(conversationId);
- const batch = page.results;
- if (batch.length === 0) {
- return;
- }
- const firstId = batch[0]!.id;
- const currentConversation = get().conversation;
- set((state) => {
- const preserved = state.messages.filter((m) => m.id < firstId);
- const merged = mergeMessagesByIdAsc(preserved, batch);
- return {
- messages: merged,
- messagesCursor: cursorFromLoadedMessages(merged) || page.cursor,
- messagesHasMore: hasMoreAfterLatestSyncMerge({
- previousMessages: state.messages,
- previousHasMore: state.messagesHasMore,
- merged,
- apiHasMore: Boolean(page.hasMore),
- }),
- conversation: currentConversation,
- };
- });
- } catch (e) {
- console.error("Failed to sync messages", e);
- }
- },
-
- loadOlderMessages: async () => {
- const conversationId = get().conversation?.id;
- if (
- !conversationId ||
- get().messagesLoadingMore ||
- !get().messagesHasMore
- ) {
- return;
- }
- const cursorId = parseCursorId(get().messagesCursor);
- if (cursorId <= 0) {
- return;
- }
-
- set({ messagesLoadingMore: true });
- try {
- const page = await fetchMessagesPage(conversationId, {
- cursor: cursorId,
- });
- const currentConversation = get().conversation;
- set((state) => {
- const merged = mergeMessagesByIdAsc(page.results, state.messages);
- return {
- messages: merged,
- messagesCursor: cursorFromLoadedMessages(merged) || page.cursor,
- messagesHasMore: page.hasMore,
- messagesLoadingMore: false,
- conversation: currentConversation,
- };
- });
- } catch (e) {
- set({ messagesLoadingMore: false });
- console.error("Failed to load older messages", e);
- }
- },
-
- markConversationRead: async () => {
- const state = get();
- const conversation = state.conversation;
- const lastMessage = state.messages.at(-1);
- if (!conversation?.id || !lastMessage) {
- return;
- }
- if (
- (conversation.customerUnreadCount ?? 0) <= 0 &&
- (conversation.customerLastReadMessageId ?? 0) >= lastMessage.id
- ) {
- return;
- }
- if (state.readingMessageId === lastMessage.id) {
- return;
- }
-
- set({ readingMessageId: lastMessage.id });
- try {
- await markMessageRead(conversation.id, lastMessage.id);
- set((current) => ({
- readingMessageId: 0,
- messages: current.messages.map((item) =>
- (item.seqNo ?? 0) <= (lastMessage.seqNo ?? 0)
- ? { ...item, customerRead: true }
- : item,
- ),
- conversation: current.conversation
- ? {
- ...current.conversation,
- customerUnreadCount: 0,
- customerLastReadMessageId: lastMessage.id,
- customerLastReadSeqNo: lastMessage.seqNo,
- }
- : null,
- }));
- } catch (error) {
- set({ readingMessageId: 0 });
- throw error;
- }
- },
-
- bootstrap: () => {
- const token = ++bootstrapToken;
-
- if (!get().isOpen) {
- closeSocket({ reconnect: false });
- set({ status: "disconnected" });
- return;
- }
-
- const activateChat = async () => {
- try {
- set({ error: "", status: "connecting" });
-
- const hostConfig = readWidgetConfig();
- const widgetConfig: WidgetConfigResponse =
- await fetchWidgetConfig().catch(() => ({}));
- if (bootstrapToken !== token || !get().isOpen) return;
-
- set({
- title: hostConfig.title || widgetConfig.title || "在线客服",
- subtitle: hostConfig.subtitle || widgetConfig.subtitle || "",
- welcomeText: widgetConfig.welcomeText || "",
- themeColor:
- hostConfig.themeColor || widgetConfig.themeColor || "#2563eb",
- });
-
- let currentConversation = get().conversation;
- if (!get().initialized || !currentConversation) {
- currentConversation = await createOrMatchConversation();
- if (bootstrapToken !== token || !get().isOpen) return;
- set({ initialized: true, conversation: currentConversation });
- }
-
- await get().refreshMessages();
- if (bootstrapToken !== token || !get().isOpen) return;
-
- connectSocket();
- } catch (bootstrapError) {
- if (bootstrapToken !== token || !get().isOpen) return;
- set({
- status: "disconnected",
- error:
- bootstrapError instanceof Error
- ? bootstrapError.message
- : "初始化失败",
- });
- }
- };
-
- void activateChat();
- },
-
- handleSendMessage: async (content: string) => {
- const conversationId = get().conversation?.id;
- if (!conversationId) return;
- set({ error: "" });
- try {
- const nextMessage = await sendMessage(conversationId, content);
- set((state) => ({
- messages: state.messages.some((m) => m.id === nextMessage.id)
- ? state.messages.map((m) =>
- m.id === nextMessage.id ? nextMessage : m,
- )
- : [...state.messages, nextMessage],
- conversation: state.conversation
- ? {
- ...state.conversation,
- customerLastReadMessageId: nextMessage.id,
- customerLastReadSeqNo: nextMessage.seqNo,
- customerUnreadCount: 0,
- lastMessageAt: nextMessage.sentAt,
- lastMessageSummary: summarizeMessage(nextMessage),
- }
- : null,
- }));
- } catch (e) {
- set({ error: e instanceof Error ? e.message : "发送消息失败" });
- }
- },
-
- uploadMessageImage: async (file: File) => {
- const conversationId = get().conversation?.id;
- if (!conversationId) return null;
- set({ error: "" });
- try {
- const asset = await uploadImage(conversationId, file);
- return asset;
- } catch (e) {
- set({ error: e instanceof Error ? e.message : "发送图片失败" });
- return null;
- }
- },
-
- sendAttachment: async (file: File) => {
- const conversationId = get().conversation?.id;
- if (!conversationId) return;
- set({ error: "" });
- try {
- const asset = await uploadAttachment(conversationId, file);
- const nextMessage = await sendMessageWithPayload(conversationId, {
- messageType: "attachment",
- content: asset.filename,
- payload: JSON.stringify({ assetId: asset.assetId }),
- clientMsgId: `widget_attachment_${generateUUID()}`,
- });
- set((state) => ({
- messages: state.messages.some((m) => m.id === nextMessage.id)
- ? state.messages.map((m) =>
- m.id === nextMessage.id ? nextMessage : m,
- )
- : [...state.messages, nextMessage],
- conversation: state.conversation
- ? {
- ...state.conversation,
- customerLastReadMessageId: nextMessage.id,
- customerLastReadSeqNo: nextMessage.seqNo,
- customerUnreadCount: 0,
- lastMessageAt: nextMessage.sentAt,
- lastMessageSummary: summarizeMessage(nextMessage),
- }
- : null,
- }));
- } catch (e) {
- set({ error: e instanceof Error ? e.message : "发送附件失败" });
- }
- },
-
- retry: async () => {
- if (!get().conversation?.id) return;
-
- set({ error: "", status: "connecting" });
- try {
- await get().refreshMessages();
- if (get().isOpen) {
- shouldReconnect = true;
- connectSocket();
- }
- } catch (retryError) {
- set({
- status: "disconnected",
- error: retryError instanceof Error ? retryError.message : "刷新失败",
- });
- }
- },
- };
-});
diff --git a/widget/lib/utils.ts b/widget/lib/utils.ts
deleted file mode 100644
index ed35c7c..0000000
--- a/widget/lib/utils.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { clsx, type ClassValue } from "clsx";
-import { twMerge } from "tailwind-merge";
-
-export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs));
-}
-
-export function generateUUID() {
- if (typeof globalThis.crypto?.randomUUID === "function") {
- return globalThis.crypto.randomUUID();
- }
-
- const bytes = new Uint8Array(16);
- if (typeof globalThis.crypto?.getRandomValues === "function") {
- globalThis.crypto.getRandomValues(bytes);
- } else {
- for (let i = 0; i < bytes.length; i += 1) {
- bytes[i] = Math.floor(Math.random() * 256);
- }
- }
-
- bytes[6] = (bytes[6] & 0x0f) | 0x40;
- bytes[8] = (bytes[8] & 0x3f) | 0x80;
-
- const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
- return [
- hex.slice(0, 4).join(""),
- hex.slice(4, 6).join(""),
- hex.slice(6, 8).join(""),
- hex.slice(8, 10).join(""),
- hex.slice(10, 16).join(""),
- ].join("-");
-}
-
-export function formatDateTime(value?: string | null) {
- if (!value) {
- return "";
- }
- const date = new Date(value);
- if (Number.isNaN(date.getTime())) {
- return value;
- }
- const pad = (num: number) => String(num).padStart(2, "0");
- return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
-}
diff --git a/widget/lib/widget/config.ts b/widget/lib/widget/config.ts
deleted file mode 100644
index 674d843..0000000
--- a/widget/lib/widget/config.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-export type WidgetHostConfig = {
- channelId: string;
- baseUrl: string;
- apiBaseUrl?: string;
- /** 与后端 enums.ExternalSource 一致,默认 web_chat */
- externalSource?: string;
- title?: string;
- subtitle?: string;
- position?: "left" | "right";
- themeColor?: string;
- width?: string;
- /** 访客展示名,随请求以 X-External-Name / WS query externalName 传给后端作 ExternalName */
- subject?: string;
-};
-
-declare global {
- interface Window {
- CSAgentConfig?: WidgetHostConfig;
- __CS_AGENT_WIDGET_CONFIG__?: WidgetHostConfig;
- }
-}
-
-export function readWidgetConfig(): WidgetHostConfig {
- if (typeof window === "undefined") {
- return {
- channelId: "",
- baseUrl: "",
- apiBaseUrl: "",
- };
- }
- const query = new URLSearchParams(window.location.search);
- const fallback = {
- channelId: query.get("channelId") ?? "",
- baseUrl: query.get("baseUrl") ?? "",
- apiBaseUrl: query.get("apiBaseUrl") ?? undefined,
- externalSource: query.get("externalSource") ?? undefined,
- title: query.get("title") ?? undefined,
- subtitle: query.get("subtitle") ?? undefined,
- position: (query.get("position") as "left" | "right" | null) ?? undefined,
- themeColor: query.get("themeColor") ?? undefined,
- width: query.get("width") ?? undefined,
- subject: query.get("subject") ?? undefined,
- };
- return window.__CS_AGENT_WIDGET_CONFIG__ ?? window.CSAgentConfig ?? fallback;
-}
-
-export function setWidgetConfig(config: WidgetHostConfig) {
- if (typeof window === "undefined") {
- return;
- }
- window.__CS_AGENT_WIDGET_CONFIG__ = config;
-}
diff --git a/widget/lib/widget/host-bridge.ts b/widget/lib/widget/host-bridge.ts
deleted file mode 100644
index 7074f4f..0000000
--- a/widget/lib/widget/host-bridge.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { setWidgetConfig, type WidgetHostConfig } from "@/lib/widget/config";
-
-const INIT_MESSAGE_TYPE = "cs-agent:init";
-const OPEN_MESSAGE_TYPE = "cs-agent:open";
-const MINIMIZE_MESSAGE_TYPE = "cs-agent:minimize";
-const MAXIMIZED_MESSAGE_TYPE = "cs-agent:maximized";
-const READY_MESSAGE_TYPE = "cs-agent:ready";
-const REQUEST_MINIMIZE_MESSAGE_TYPE = "cs-agent:request-minimize";
-const REQUEST_CLOSE_MESSAGE_TYPE = "cs-agent:request-close";
-const REQUEST_TOGGLE_MAXIMIZE_MESSAGE_TYPE = "cs-agent:request-toggle-maximize";
-
-type HostBridgeOptions = {
- onOpen?: () => void;
- onMinimize?: () => void;
- onMaximizedChange?: (isMaximized: boolean) => void;
-};
-
-export function bindHostBridge(options: HostBridgeOptions = {}) {
- if (typeof window === "undefined") {
- return () => undefined;
- }
-
- if (window.parent && window.parent !== window) {
- window.parent.postMessage({ type: READY_MESSAGE_TYPE }, "*");
- }
-
- const handleMessage = (
- event: MessageEvent,
- ) => {
- const data = event.data as
- | {
- type?: string;
- payload?: WidgetHostConfig | { isMaximized?: boolean };
- }
- | undefined;
- if (!data?.type) {
- return;
- }
-
- if (data.type === INIT_MESSAGE_TYPE && data.payload) {
- setWidgetConfig(data.payload as WidgetHostConfig);
- return;
- }
-
- if (data.type === OPEN_MESSAGE_TYPE) {
- options.onOpen?.();
- return;
- }
-
- if (data.type === MINIMIZE_MESSAGE_TYPE) {
- options.onMinimize?.();
- return;
- }
-
- if (data.type === MAXIMIZED_MESSAGE_TYPE) {
- options.onMaximizedChange?.(
- Boolean((data.payload as { isMaximized?: boolean } | undefined)?.isMaximized),
- );
- }
- };
-
- window.addEventListener("message", handleMessage);
- return () => window.removeEventListener("message", handleMessage);
-}
-
-function postToParent(type: string) {
- if (typeof window === "undefined") {
- return;
- }
- if (window.parent && window.parent !== window) {
- window.parent.postMessage({ type }, "*");
- }
-}
-
-export function requestHostMinimize() {
- postToParent(REQUEST_MINIMIZE_MESSAGE_TYPE);
-}
-
-export function requestHostClose() {
- postToParent(REQUEST_CLOSE_MESSAGE_TYPE);
-}
-
-export function requestHostToggleMaximize() {
- postToParent(REQUEST_TOGGLE_MAXIMIZE_MESSAGE_TYPE);
-}
diff --git a/widget/lib/widget/sdk-template.js b/widget/lib/widget/sdk-template.js
deleted file mode 100644
index 3d2193c..0000000
--- a/widget/lib/widget/sdk-template.js
+++ /dev/null
@@ -1,270 +0,0 @@
-(function () {
- if (window.__CS_AGENT_WIDGET_LOADED__) {
- return;
- }
- window.__CS_AGENT_WIDGET_LOADED__ = true;
-
- var config = window.CSAgentConfig || {};
- var baseUrl = String(config.baseUrl || "").replace(/\/$/, "");
- if (!config.channelId || !baseUrl) {
- console.error("[cs-agent-widget] channelId and baseUrl are required");
- return;
- }
-
- function resolveWidgetBaseUrl() {
- var currentScript = document.currentScript;
- if (currentScript && currentScript.src) {
- return currentScript.src.replace(/\/sdk\/cs-agent-widget\.js(?:\?.*)?$/, "");
- }
- if (/\/widget$/.test(baseUrl)) {
- return baseUrl;
- }
- return baseUrl + "/widget";
- }
-
- var button = document.createElement("button");
- button.type = "button";
- button.dataset.csAgentWidget = "launcher";
- button.setAttribute("aria-label", config.title || "在线客服");
- button.textContent = config.title || "在线客服";
- button.style.position = "fixed";
- button.style.bottom = "24px";
- button.style.right = config.position === "left" ? "" : "24px";
- button.style.left = config.position === "left" ? "24px" : "";
- button.style.zIndex = "2147483000";
- button.style.border = "0";
- button.style.borderRadius = "999px";
- button.style.padding = "14px 18px";
- button.style.background = config.themeColor || "#0f6cbd";
- button.style.color = "#fff";
- button.style.font = "600 14px/1 sans-serif";
- button.style.boxShadow = "0 18px 40px rgba(15, 35, 65, 0.24)";
- button.style.cursor = "pointer";
-
- var widgetBaseUrl = resolveWidgetBaseUrl();
- var frameUrl = new URL(widgetBaseUrl + "/frame/");
- frameUrl.searchParams.set("channelId", config.channelId);
- frameUrl.searchParams.set("baseUrl", baseUrl);
- if (config.apiBaseUrl) frameUrl.searchParams.set("apiBaseUrl", config.apiBaseUrl);
- if (config.title) frameUrl.searchParams.set("title", config.title);
- if (config.subtitle) frameUrl.searchParams.set("subtitle", config.subtitle);
- if (config.position) frameUrl.searchParams.set("position", config.position);
- if (config.themeColor) frameUrl.searchParams.set("themeColor", config.themeColor);
- if (config.width) frameUrl.searchParams.set("width", config.width);
- var frame = null;
- var frameLoaded = false;
- var frameReady = false;
- var initSent = false;
- var isOpen = false;
- var isMaximized = false;
- var frameHideTimer = null;
- var frameDestroyTimer = null;
- var animationDuration = 260;
-
- function clearFrameTimers() {
- if (frameHideTimer) {
- window.clearTimeout(frameHideTimer);
- frameHideTimer = null;
- }
- if (frameDestroyTimer) {
- window.clearTimeout(frameDestroyTimer);
- frameDestroyTimer = null;
- }
- }
-
- function applyFrameLayout() {
- if (!frame) {
- return;
- }
-
- frame.style.position = "fixed";
- frame.style.border = "0";
- frame.style.overflow = "hidden";
- frame.style.background = "#fff";
- frame.style.zIndex = "2147483000";
- frame.style.boxShadow = "0 28px 80px rgba(15, 35, 65, 0.28)";
- frame.style.willChange = "top,right,bottom,left,width,height,opacity,transform,border-radius";
- frame.style.transition =
- "top 260ms cubic-bezier(0.22, 1, 0.36, 1), right 260ms cubic-bezier(0.22, 1, 0.36, 1), bottom 260ms cubic-bezier(0.22, 1, 0.36, 1), left 260ms cubic-bezier(0.22, 1, 0.36, 1), width 260ms cubic-bezier(0.22, 1, 0.36, 1), height 260ms cubic-bezier(0.22, 1, 0.36, 1), opacity 220ms ease, transform 260ms cubic-bezier(0.22, 1, 0.36, 1), border-radius 260ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 260ms ease";
- frame.style.transformOrigin =
- config.position === "left" ? "left bottom" : "right bottom";
-
- if (isMaximized) {
- frame.style.top = "20px";
- frame.style.right = "20px";
- frame.style.bottom = "20px";
- frame.style.left = "20px";
- frame.style.width = "calc(100vw - 40px)";
- frame.style.maxWidth = "none";
- frame.style.height = "calc(100vh - 40px)";
- frame.style.borderRadius = "24px";
- return;
- }
-
- frame.style.top = "";
- frame.style.bottom = "88px";
- frame.style.right = config.position === "left" ? "" : "24px";
- frame.style.left = config.position === "left" ? "24px" : "";
- frame.style.width = config.width || "380px";
- frame.style.maxWidth = "calc(100vw - 24px)";
- frame.style.height = "min(760px, calc(100vh - 112px))";
- frame.style.borderRadius = "28px";
- }
-
- function flushFrameState() {
- if (!frame || !frameLoaded || !frameReady) {
- return;
- }
-
- if (!initSent) {
- initSent = true;
- postToFrame({
- type: "cs-agent:init",
- payload: config,
- });
- }
-
- postToFrame({ type: isOpen ? "cs-agent:open" : "cs-agent:minimize" });
- postToFrame({
- type: "cs-agent:maximized",
- payload: { isMaximized: isMaximized },
- });
- }
-
- function postToFrame(message) {
- if (!frame || !frame.contentWindow) {
- return;
- }
- try {
- frame.contentWindow.postMessage(message, frameUrl.origin);
- } catch (error) {
- console.error("[cs-agent-widget] postMessage failed", error);
- }
- }
-
- function syncFrameVisibility() {
- if (!frame) {
- return;
- }
- clearFrameTimers();
- applyFrameLayout();
- frame.style.display = "block";
-
- if (isOpen) {
- frame.style.visibility = "visible";
- frame.style.pointerEvents = "auto";
- frameHideTimer = window.setTimeout(function () {
- if (!frame) {
- return;
- }
- frame.style.opacity = "1";
- frame.style.transform = "translate3d(0, 0, 0) scale(1)";
- }, 16);
- flushFrameState();
- return;
- }
-
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = isMaximized
- ? "translate3d(0, 10px, 0) scale(0.985)"
- : "translate3d(0, 16px, 0) scale(0.96)";
- frameHideTimer = window.setTimeout(function () {
- if (!frame || isOpen) {
- return;
- }
- frame.style.visibility = "hidden";
- }, animationDuration);
- flushFrameState();
- }
-
- function handleWindowMessage(event) {
- if (!frame || event.source !== frame.contentWindow) {
- return;
- }
-
- var data = event.data || {};
- if (data.type === "cs-agent:ready") {
- frameReady = true;
- flushFrameState();
- return;
- }
-
- if (data.type === "cs-agent:request-minimize") {
- isOpen = false;
- syncFrameVisibility();
- return;
- }
-
- if (data.type === "cs-agent:request-close") {
- destroyFrame();
- return;
- }
-
- if (data.type === "cs-agent:request-toggle-maximize") {
- isMaximized = !isMaximized;
- syncFrameVisibility();
- }
- }
-
- function destroyFrame() {
- if (!frame) {
- return;
- }
- clearFrameTimers();
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = "translate3d(0, 18px, 0) scale(0.94)";
- frame.style.visibility = "hidden";
- frameDestroyTimer = window.setTimeout(function () {
- if (!frame) {
- return;
- }
- if (frame.parentNode) {
- frame.parentNode.removeChild(frame);
- }
- frame = null;
- frameLoaded = false;
- frameReady = false;
- initSent = false;
- isOpen = false;
- isMaximized = false;
- clearFrameTimers();
- }, animationDuration);
- }
-
- function createFrame() {
- if (frame) {
- return frame;
- }
-
- frame = document.createElement("iframe");
- frame.dataset.csAgentWidget = "frame";
- frame.title = config.title || "在线客服";
- frame.src = frameUrl.toString();
- applyFrameLayout();
- frame.style.display = "block";
- frame.style.visibility = "hidden";
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = "translate3d(0, 18px, 0) scale(0.96)";
- frame.addEventListener("load", function () {
- frameLoaded = true;
- syncFrameVisibility();
- });
-
- document.body.appendChild(frame);
- return frame;
- }
-
- button.addEventListener("click", function () {
- if (!frame) {
- createFrame();
- }
- isOpen = !isOpen;
- syncFrameVisibility();
- });
-
- window.addEventListener("message", handleWindowMessage);
- document.body.appendChild(button);
-})();
diff --git a/widget/lib/widget/visitor.ts b/widget/lib/widget/visitor.ts
deleted file mode 100644
index 8c9df05..0000000
--- a/widget/lib/widget/visitor.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { generateUUID } from "@/lib/utils";
-
-const EXTERNAL_ID_KEY = "cs-agent:external-id";
-
-export function getOrCreateExternalId() {
- if (typeof window === "undefined") {
- return "";
- }
- const current = window.localStorage.getItem(EXTERNAL_ID_KEY);
- if (current) {
- return current;
- }
- const visitorId = `visitor_${generateUUID()}`;
- window.localStorage.setItem(EXTERNAL_ID_KEY, visitorId);
- return visitorId;
-}
diff --git a/widget/next.config.ts b/widget/next.config.ts
deleted file mode 100644
index 0197ef3..0000000
--- a/widget/next.config.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import type { NextConfig } from "next"
-import { PHASE_DEVELOPMENT_SERVER } from "next/constants"
-
-const backendBaseUrl =
- process.env.NEXT_PUBLIC_API_BASE_URL?.trim() || "http://127.0.0.1:8083"
-const productionBasePath = "/widget"
-
-export default function nextConfig(phase: string): NextConfig {
- if (phase === PHASE_DEVELOPMENT_SERVER) {
- return {
- reactStrictMode: true,
- trailingSlash: true,
- images: {
- unoptimized: true,
- },
- async rewrites() {
- return [
- {
- source: "/api/:path*",
- destination: `${backendBaseUrl}/api/:path*`,
- basePath: false,
- },
- {
- source: "/storage/:path*",
- destination: `${backendBaseUrl}/storage/:path*`,
- basePath: false,
- },
- ]
- },
- }
- }
-
- return {
- reactStrictMode: true,
- output: "export",
- basePath: productionBasePath,
- assetPrefix: `${productionBasePath}/`,
- trailingSlash: true,
- images: {
- unoptimized: true,
- },
- }
-}
diff --git a/widget/package.json b/widget/package.json
deleted file mode 100644
index 1b14b8e..0000000
--- a/widget/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "widget",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "dev": "PORT=4000 next dev",
- "build": "next build",
- "start": "next start",
- "lint": "eslint",
- "typecheck": "tsc --noEmit",
- "build:sdk": "node ./scripts/build-sdk.mjs"
- },
- "dependencies": {
- "@tiptap/extension-image": "^3.20.2",
- "@tiptap/extension-placeholder": "^3.20.2",
- "@tiptap/react": "^3.20.2",
- "@tiptap/starter-kit": "^3.20.2",
- "clsx": "^2.1.1",
- "lucide-react": "^0.577.0",
- "markdown-it": "^14.1.1",
- "next": "16.1.6",
- "react": "19.2.3",
- "react-dom": "19.2.3",
- "react-zoom-pan-pinch": "^3.7.0",
- "tailwind-merge": "^3.5.0",
- "zustand": "^5.0.12"
- },
- "devDependencies": {
- "@tailwindcss/postcss": "^4",
- "@types/markdown-it": "^14.1.2",
- "@types/node": "^20",
- "@types/react": "^19",
- "@types/react-dom": "^19",
- "eslint": "^9",
- "eslint-config-next": "16.1.6",
- "tailwindcss": "^4",
- "typescript": "^5"
- }
-}
diff --git a/widget/pnpm-lock.yaml b/widget/pnpm-lock.yaml
deleted file mode 100644
index 2b9d222..0000000
--- a/widget/pnpm-lock.yaml
+++ /dev/null
@@ -1,4765 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@tiptap/extension-image':
- specifier: ^3.20.2
- version: 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-placeholder':
- specifier: ^3.20.2
- version: 3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/react':
- specifier: ^3.20.2
- version: 3.20.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@tiptap/starter-kit':
- specifier: ^3.20.2
- version: 3.20.2
- clsx:
- specifier: ^2.1.1
- version: 2.1.1
- lucide-react:
- specifier: ^0.577.0
- version: 0.577.0(react@19.2.3)
- markdown-it:
- specifier: ^14.1.1
- version: 14.1.1
- next:
- specifier: 16.1.6
- version: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react:
- specifier: 19.2.3
- version: 19.2.3
- react-dom:
- specifier: 19.2.3
- version: 19.2.3(react@19.2.3)
- react-zoom-pan-pinch:
- specifier: ^3.7.0
- version: 3.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- tailwind-merge:
- specifier: ^3.5.0
- version: 3.5.0
- zustand:
- specifier: ^5.0.12
- version: 5.0.12(@types/react@19.2.14)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3))
- devDependencies:
- '@tailwindcss/postcss':
- specifier: ^4
- version: 4.2.1
- '@types/markdown-it':
- specifier: ^14.1.2
- version: 14.1.2
- '@types/node':
- specifier: ^20
- version: 20.19.37
- '@types/react':
- specifier: ^19
- version: 19.2.14
- '@types/react-dom':
- specifier: ^19
- version: 19.2.3(@types/react@19.2.14)
- eslint:
- specifier: ^9
- version: 9.39.4(jiti@2.6.1)
- eslint-config-next:
- specifier: 16.1.6
- version: 16.1.6(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- tailwindcss:
- specifier: ^4
- version: 4.2.1
- typescript:
- specifier: ^5
- version: 5.9.3
-
-packages:
-
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
-
- '@babel/code-frame@7.29.0':
- resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.29.0':
- resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.29.0':
- resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.29.1':
- resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.28.6':
- resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-globals@7.28.0':
- resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.28.6':
- resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.28.6':
- resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-string-parser@7.27.1':
- resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.28.5':
- resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.27.1':
- resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.28.6':
- resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.29.0':
- resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/template@7.28.6':
- resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.29.0':
- resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.29.0':
- resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
- engines: {node: '>=6.9.0'}
-
- '@emnapi/core@1.9.0':
- resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==}
-
- '@emnapi/runtime@1.9.0':
- resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==}
-
- '@emnapi/wasi-threads@1.2.0':
- resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}
-
- '@eslint-community/eslint-utils@4.9.1':
- resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
- '@eslint-community/regexpp@4.12.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/config-array@0.21.2':
- resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/config-helpers@0.4.2':
- resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/core@0.17.0':
- resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/eslintrc@3.3.5':
- resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.39.4':
- resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/object-schema@2.1.7':
- resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/plugin-kit@0.4.1':
- resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@floating-ui/core@1.7.5':
- resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
-
- '@floating-ui/dom@1.7.6':
- resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
-
- '@floating-ui/utils@0.2.11':
- resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
-
- '@humanfs/core@0.19.1':
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
- engines: {node: '>=18.18.0'}
-
- '@humanfs/node@0.16.7':
- resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
- engines: {node: '>=18.18.0'}
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/retry@0.4.3':
- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
- engines: {node: '>=18.18'}
-
- '@img/colour@1.1.0':
- resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
- engines: {node: '>=18'}
-
- '@img/sharp-darwin-arm64@0.34.5':
- resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-darwin-x64@0.34.5':
- resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-x64@1.2.4':
- resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-linux-arm64@1.2.4':
- resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linux-arm@1.2.4':
- resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
- cpu: [ppc64]
- os: [linux]
-
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
- cpu: [riscv64]
- os: [linux]
-
- '@img/sharp-libvips-linux-s390x@1.2.4':
- resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-libvips-linux-x64@1.2.4':
- resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linux-arm64@0.34.5':
- resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linux-arm@0.34.5':
- resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-linux-ppc64@0.34.5':
- resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ppc64]
- os: [linux]
-
- '@img/sharp-linux-riscv64@0.34.5':
- resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [riscv64]
- os: [linux]
-
- '@img/sharp-linux-s390x@0.34.5':
- resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-linux-x64@0.34.5':
- resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linuxmusl-arm64@0.34.5':
- resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linuxmusl-x64@0.34.5':
- resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-wasm32@0.34.5':
- resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
-
- '@img/sharp-win32-arm64@0.34.5':
- resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [win32]
-
- '@img/sharp-win32-ia32@0.34.5':
- resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
-
- '@img/sharp-win32-x64@0.34.5':
- resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
-
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
-
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
-
- '@jridgewell/trace-mapping@0.3.31':
- resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
-
- '@napi-rs/wasm-runtime@0.2.12':
- resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
-
- '@next/env@16.1.6':
- resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==}
-
- '@next/eslint-plugin-next@16.1.6':
- resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==}
-
- '@next/swc-darwin-arm64@16.1.6':
- resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@next/swc-darwin-x64@16.1.6':
- resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@next/swc-linux-arm64-gnu@16.1.6':
- resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-arm64-musl@16.1.6':
- resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-x64-gnu@16.1.6':
- resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-linux-x64-musl@16.1.6':
- resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-win32-arm64-msvc@16.1.6':
- resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@next/swc-win32-x64-msvc@16.1.6':
- resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@nolyfill/is-core-module@1.0.39':
- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
- engines: {node: '>=12.4.0'}
-
- '@remirror/core-constants@3.0.0':
- resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==}
-
- '@rtsao/scc@1.1.0':
- resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
-
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
-
- '@tailwindcss/node@4.2.1':
- resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==}
-
- '@tailwindcss/oxide-android-arm64@4.2.1':
- resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.2.1':
- resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.2.1':
- resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.2.1':
- resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1':
- resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==}
- engines: {node: '>= 20'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.2.1':
- resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-musl@4.2.1':
- resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-gnu@4.2.1':
- resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-musl@4.2.1':
- resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-wasm32-wasi@4.2.1':
- resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- bundledDependencies:
- - '@napi-rs/wasm-runtime'
- - '@emnapi/core'
- - '@emnapi/runtime'
- - '@tybys/wasm-util'
- - '@emnapi/wasi-threads'
- - tslib
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.2.1':
- resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [win32]
-
- '@tailwindcss/oxide-win32-x64-msvc@4.2.1':
- resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/oxide@4.2.1':
- resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==}
- engines: {node: '>= 20'}
-
- '@tailwindcss/postcss@4.2.1':
- resolution: {integrity: sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==}
-
- '@tiptap/core@3.20.2':
- resolution: {integrity: sha512-zKW4LqZt+aNdvz9o4R0/j+D+gfhwzuFItwh7wbqz8g8bWi0jaV95VybeVFVKeg/KGTc3sAa4mm+hGgvgrY+Gvg==}
- peerDependencies:
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-blockquote@3.20.2':
- resolution: {integrity: sha512-tkzZzBdwu8pP6pRfYjGanyj4aMSdcr4TS/Z9dcFxA8SYhmBXB4FYTbURME8Eg+n5VIOh1/2c4R2mbOkfQd4GtQ==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-bold@3.20.2':
- resolution: {integrity: sha512-NLqh6ewHcDDPveTCL2f6BQcsDI5lubNjiyzvuYr0ZO9AV5Fqw8TkYwoKNijiYlgGRtm+pZLhMnf45gbLJQoymg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-bubble-menu@3.20.2':
- resolution: {integrity: sha512-Np9jHUBWPnFJMy3Qhup3udARJQnWkbwVxVaHlJdgEy5Hfy/HE/EnItXAxXeFjVZ57cl+kJYamdn1t8VfMOV3mg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-bullet-list@3.20.2':
- resolution: {integrity: sha512-LHmp945at3YYl2VPIg0bopyJioi52xK+YRurOz8A440EgCdnAkFa0UDGHxK/e4Y0R2y3xbPl+VBl3HzZjXPFuw==}
- peerDependencies:
- '@tiptap/extension-list': ^3.20.2
-
- '@tiptap/extension-code-block@3.20.2':
- resolution: {integrity: sha512-BpClHuUrOYArL8skifo6RSlBiAVDYkGkq22zVb9lNfrrRqJIlPhwDI8tCZh1sHbgDQPukb4lE5VMPnsEv5M1tw==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-code@3.20.2':
- resolution: {integrity: sha512-4mwWtt88Cl7PT5IbQpwigPBlNmB3JUiOchPXJIfbGu7wUxAk7a37vhn8ptiM2IGKpBFum/1PZFUI+Ik7TLIZLg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-document@3.20.2':
- resolution: {integrity: sha512-HHlpUs1Y22YwDmJ0cmTGPrFPuHk8Q2wvYZeG5eFOEeBu7t4IiCU114slvIR+yrDZrzpPmwzMb8H71scR+moizg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-dropcursor@3.20.2':
- resolution: {integrity: sha512-LpBZOOgTrFWkYneOWOd0xyB7HUGIZqrgEhL+Beohzxkx63uNRC3PxFAAXhju6wxcvQ49e/WMg++Z8EDwHb6f2Q==}
- peerDependencies:
- '@tiptap/extensions': ^3.20.2
-
- '@tiptap/extension-floating-menu@3.20.2':
- resolution: {integrity: sha512-Ev9QuNmV/A2fMuu+XpEy1W+u8FOu75S7GVPtS+cYRQc/TYTKaxha0+j0eYvJzKLzKRguJNRlmPBDHGN7MnSY/w==}
- peerDependencies:
- '@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-gapcursor@3.20.2':
- resolution: {integrity: sha512-IfQuD5XctZa+Xxy3mdjo9NTYbiMFqGPuzyh2ypHUqyuvIwxOIRhxTFaCijOGVYn1g3BH8nzGMhZ5rnZ48zIb6Q==}
- peerDependencies:
- '@tiptap/extensions': ^3.20.2
-
- '@tiptap/extension-hard-break@3.20.2':
- resolution: {integrity: sha512-TdjJ54483D1PsGLOBQBvzTqIKc027hixP/xFul9KfXIpGG+YGqX0U2RO3oUyuv32fbU1ZVLMDfEBzR/ropsyDg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-heading@3.20.2':
- resolution: {integrity: sha512-XKpSEMcER00yfMXiASPpCHHa4Tw6G78AUELFt2PiS0tTWdxNpXZ8y29glyR4LO5eBxGjF1jncO49T1DzDh48TQ==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-horizontal-rule@3.20.2':
- resolution: {integrity: sha512-1Ds1xwl4XKWzXhZ8jG+G04BepExxuwtJuw+xbdMXkTD3YDE8KmbSrUIiLpA60Zq4qZmWIrX57F7mOBGaExyfCw==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-image@3.20.2':
- resolution: {integrity: sha512-STo7T3NQ1TcF93NXRQDhb5YkepBRpYHY54yfBUmHl5cygYZzOMaGlM0nh8NeX54mh3wJ6+nxpApuM3Jbmg0I+w==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-italic@3.20.2':
- resolution: {integrity: sha512-VAIXeJMx4g6WKqqNm8PYzoFrJaRNKLzLtqUXqYozKxnJLpF2HjsIrnBJV9PM+1FKK2Tic1UuowF4OI/6d162SA==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-link@3.20.2':
- resolution: {integrity: sha512-vnC72CFMUiCJuAt7Hi4T/hKvbY4DqBjqo9G6dkBfNJHXHmqGiGKvkgzm1m7P/R1EX1XYk8nifeCpW6q2uliFRQ==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-list-item@3.20.2':
- resolution: {integrity: sha512-6L+ZKOqD9jTmE313qFkrIk81jbk8v437zRa5Sa0/hyFMbupsNVKZoZZkzrq5vOkbz2oE0WpsFXIjcYaqAwJhyA==}
- peerDependencies:
- '@tiptap/extension-list': ^3.20.2
-
- '@tiptap/extension-list-keymap@3.20.2':
- resolution: {integrity: sha512-SKU+w93E9+TdSWeoJzjFLDbO+XC/QIRQ+PJ6Jruz1BJ6VXILmyVOw3jBwmiJjLo+5h4MNV2D/IHx1P7BpEkUhQ==}
- peerDependencies:
- '@tiptap/extension-list': ^3.20.2
-
- '@tiptap/extension-list@3.20.2':
- resolution: {integrity: sha512-x9h1fDeaLah60WJTb6517nRbAKcbdBsTpmglqxQ9c827PUOUyiVEAu2o2cFEuOMw6Htvty4obOKBUgYi8EAgDA==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/extension-ordered-list@3.20.2':
- resolution: {integrity: sha512-UmPrnvd9/cGcO2QQaESu57kXmkubxmazQmUTgRU2BiLMEWGPPvxnBbJkM/YYmYPFRCs+OTx+XO9ohCD1xqtQcQ==}
- peerDependencies:
- '@tiptap/extension-list': ^3.20.2
-
- '@tiptap/extension-paragraph@3.20.2':
- resolution: {integrity: sha512-gTWAUmvCnv7OThFsYdyhacL4TM+sJMC/UeuW+drWaTBbo7dvejzkl4hF5B0ytmF3d/ko1GNr4ldTikYZ2xypMw==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-placeholder@3.20.2':
- resolution: {integrity: sha512-QHjY44Hp4tJa1ouXf2LqHCUP+r6Md/xSRmwZ2utSTR3gD/lwe6nAFEfhu/rH+MvwKgIzvL87biOeqO3AlrJNGQ==}
- peerDependencies:
- '@tiptap/extensions': ^3.20.2
-
- '@tiptap/extension-strike@3.20.2':
- resolution: {integrity: sha512-Jivcc5Hgw2moIDfVoLEuJumDtw38k2mzEMYt3oZQnvE5d0ttXhWWR0LbLm5LBX3oxlc74I3NSi+Q4ixQHiDtvA==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-text@3.20.2':
- resolution: {integrity: sha512-I1rVt6JTi/itgsFqXp+JfxWn9fEewIxiIaaaMUmaCJ6HChQSvYlVWy1B/RixmbCCPaL/FxybEa/Tg9MugyOJYA==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extension-underline@3.20.2':
- resolution: {integrity: sha512-oVszIGkRtg8NLhop/t5kco6suWlDUKW9cqhL6wwd19aLztr+tMU/u8+kPG2cjjYZ+XoMZOoKfkOt7he2iU5/0A==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
-
- '@tiptap/extensions@3.20.2':
- resolution: {integrity: sha512-gzntns6z/kTgwrX89ydc3rNqDsv8D8sAkyl8HE9X+2D9wtdCgNljevIR6MBNcxG7bVm2+XnId1P9YciCZLuefg==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
-
- '@tiptap/pm@3.20.2':
- resolution: {integrity: sha512-tEMZlLy/6ms41PQtyjmniZ3tTd8elavd8htjYzHLPSHtz11zaYV9YjnmnwHK8gynhcSES1orO9z1U4nT4ZLpqg==}
-
- '@tiptap/react@3.20.2':
- resolution: {integrity: sha512-eOfKkbaf9Qvia1xkjRXbJYy8FW7ampMkLt8yVcDhQf2fyip56sY+1ZuOoeXl+/lyDYNoXwoHJZrEcdseDPe0xw==}
- peerDependencies:
- '@tiptap/core': ^3.20.2
- '@tiptap/pm': ^3.20.2
- '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
- '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
- react: ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
-
- '@tiptap/starter-kit@3.20.2':
- resolution: {integrity: sha512-QQ81QpwecXN3Rg0nWYC1nRCcWxlUtEua1X5j1NYUtY39SScuLbs3mMQ54P+u9ZeX31pzu/kuix5GQ0fw+SApOA==}
-
- '@tybys/wasm-util@0.10.1':
- resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
-
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
-
- '@types/json5@0.0.29':
- resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
-
- '@types/linkify-it@5.0.0':
- resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
-
- '@types/markdown-it@14.1.2':
- resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
-
- '@types/mdurl@2.0.0':
- resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
-
- '@types/node@20.19.37':
- resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==}
-
- '@types/react-dom@19.2.3':
- resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
- peerDependencies:
- '@types/react': ^19.2.0
-
- '@types/react@19.2.14':
- resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
-
- '@types/use-sync-external-store@0.0.6':
- resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
-
- '@typescript-eslint/eslint-plugin@8.57.0':
- resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.57.0
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/parser@8.57.0':
- resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/project-service@8.57.0':
- resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/scope-manager@8.57.0':
- resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.57.0':
- resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/type-utils@8.57.0':
- resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/types@8.57.0':
- resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.57.0':
- resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/utils@8.57.0':
- resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/visitor-keys@8.57.0':
- resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
- cpu: [arm]
- os: [android]
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
- cpu: [arm64]
- os: [android]
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
- cpu: [arm64]
- os: [darwin]
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
- cpu: [x64]
- os: [darwin]
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
- cpu: [x64]
- os: [freebsd]
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
- cpu: [arm]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
- cpu: [arm64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
- cpu: [ppc64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
- cpu: [s390x]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
- cpu: [arm64]
- os: [win32]
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
- cpu: [ia32]
- os: [win32]
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
- cpu: [x64]
- os: [win32]
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.16.0:
- resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.14.0:
- resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- aria-query@5.3.2:
- resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
- engines: {node: '>= 0.4'}
-
- array-buffer-byte-length@1.0.2:
- resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
- engines: {node: '>= 0.4'}
-
- array-includes@3.1.9:
- resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.findlastindex@1.2.6:
- resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flat@1.3.3:
- resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flatmap@1.3.3:
- resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
-
- arraybuffer.prototype.slice@1.0.4:
- resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
- engines: {node: '>= 0.4'}
-
- ast-types-flow@0.0.8:
- resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
-
- async-function@1.0.0:
- resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
- engines: {node: '>= 0.4'}
-
- available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
-
- axe-core@4.11.1:
- resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==}
- engines: {node: '>=4'}
-
- axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- balanced-match@4.0.4:
- resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
- engines: {node: 18 || 20 || >=22}
-
- baseline-browser-mapping@2.10.8:
- resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
-
- brace-expansion@5.0.4:
- resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
- engines: {node: 18 || 20 || >=22}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- browserslist@4.28.1:
- resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
-
- call-bind@1.0.8:
- resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
- engines: {node: '>= 0.4'}
-
- call-bound@1.0.4:
- resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
- engines: {node: '>= 0.4'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- caniuse-lite@1.0.30001779:
- resolution: {integrity: sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- crelt@1.0.6:
- resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- csstype@3.2.3:
- resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
-
- damerau-levenshtein@1.0.8:
- resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
-
- data-view-buffer@1.0.2:
- resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-length@1.0.2:
- resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
- engines: {node: '>= 0.4'}
-
- data-view-byte-offset@1.0.1:
- resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
- engines: {node: '>= 0.4'}
-
- debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
-
- detect-libc@2.1.2:
- resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
- engines: {node: '>=8'}
-
- doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
-
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
- electron-to-chromium@1.5.313:
- resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- enhanced-resolve@5.20.0:
- resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==}
- engines: {node: '>=10.13.0'}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- es-abstract@1.24.1:
- resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
- engines: {node: '>= 0.4'}
-
- es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-iterator-helpers@1.3.1:
- resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.1.0:
- resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
- engines: {node: '>= 0.4'}
-
- es-shim-unscopables@1.1.0:
- resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
- engines: {node: '>= 0.4'}
-
- es-to-primitive@1.3.0:
- resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
- engines: {node: '>= 0.4'}
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-config-next@16.1.6:
- resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==}
- peerDependencies:
- eslint: '>=9.0.0'
- typescript: '>=3.3.1'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- eslint-import-resolver-node@0.3.9:
- resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
-
- eslint-import-resolver-typescript@3.10.1:
- resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
-
- eslint-module-utils@2.12.1:
- resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
-
- eslint-plugin-import@2.32.0:
- resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
-
- eslint-plugin-jsx-a11y@6.10.2:
- resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
-
- eslint-plugin-react-hooks@7.0.1:
- resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
- engines: {node: '>=18'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
-
- eslint-plugin-react@7.37.5:
- resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
-
- eslint-scope@8.4.0:
- resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@4.2.1:
- resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint-visitor-keys@5.0.1:
- resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- eslint@9.39.4:
- resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- espree@10.4.0:
- resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- esquery@1.7.0:
- resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-equals@5.4.0:
- resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
- engines: {node: '>=6.0.0'}
-
- fast-glob@3.3.1:
- resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
- fastq@1.20.1:
- resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
-
- fdir@6.5.0:
- resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- picomatch: ^3 || ^4
- peerDependenciesMeta:
- picomatch:
- optional: true
-
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flatted@3.4.1:
- resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==}
-
- for-each@0.3.5:
- resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
- engines: {node: '>= 0.4'}
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- function.prototype.name@1.1.8:
- resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
- engines: {node: '>= 0.4'}
-
- functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
- generator-function@2.0.1:
- resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
- engines: {node: '>= 0.4'}
-
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
- get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
-
- get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
-
- get-symbol-description@1.1.0:
- resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
- engines: {node: '>= 0.4'}
-
- get-tsconfig@4.13.6:
- resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- globals@14.0.0:
- resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
- engines: {node: '>=18'}
-
- globals@16.4.0:
- resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
- engines: {node: '>=18'}
-
- globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
-
- gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- has-bigints@1.1.0:
- resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
- engines: {node: '>= 0.4'}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.2.0:
- resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- hermes-estree@0.25.1:
- resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
-
- hermes-parser@0.25.1:
- resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
- engines: {node: '>= 4'}
-
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- internal-slot@1.1.0:
- resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
- engines: {node: '>= 0.4'}
-
- is-array-buffer@3.0.5:
- resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
- engines: {node: '>= 0.4'}
-
- is-async-function@2.1.1:
- resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
- engines: {node: '>= 0.4'}
-
- is-bigint@1.1.0:
- resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
- engines: {node: '>= 0.4'}
-
- is-boolean-object@1.2.2:
- resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
- engines: {node: '>= 0.4'}
-
- is-bun-module@2.0.0:
- resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
- engines: {node: '>= 0.4'}
-
- is-data-view@1.0.2:
- resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
- engines: {node: '>= 0.4'}
-
- is-date-object@1.1.0:
- resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
- engines: {node: '>= 0.4'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-finalizationregistry@1.1.1:
- resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
- engines: {node: '>= 0.4'}
-
- is-generator-function@1.1.2:
- resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
- engines: {node: '>= 0.4'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
-
- is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.1.1:
- resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-regex@1.2.1:
- resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
- engines: {node: '>= 0.4'}
-
- is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.4:
- resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
- engines: {node: '>= 0.4'}
-
- is-string@1.1.1:
- resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
- engines: {node: '>= 0.4'}
-
- is-symbol@1.1.1:
- resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
- engines: {node: '>= 0.4'}
-
- is-typed-array@1.1.15:
- resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
- engines: {node: '>= 0.4'}
-
- is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
-
- is-weakref@1.1.1:
- resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
- engines: {node: '>= 0.4'}
-
- is-weakset@2.0.4:
- resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
- engines: {node: '>= 0.4'}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- iterator.prototype@1.1.5:
- resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
- engines: {node: '>= 0.4'}
-
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
- hasBin: true
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@4.1.1:
- resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
- hasBin: true
-
- jsesc@3.1.0:
- resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
- engines: {node: '>=6'}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- json5@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
- hasBin: true
-
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
- jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- language-subtag-registry@0.3.23:
- resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
-
- language-tags@1.0.9:
- resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
- engines: {node: '>=0.10'}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lightningcss-android-arm64@1.31.1:
- resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [android]
-
- lightningcss-darwin-arm64@1.31.1:
- resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.31.1:
- resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.31.1:
- resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.31.1:
- resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.31.1:
- resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-arm64-musl@1.31.1:
- resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-x64-gnu@1.31.1:
- resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-linux-x64-musl@1.31.1:
- resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-win32-arm64-msvc@1.31.1:
- resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.31.1:
- resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.31.1:
- resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==}
- engines: {node: '>= 12.0.0'}
-
- linkify-it@5.0.0:
- resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
-
- linkifyjs@4.3.2:
- resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- lucide-react@0.577.0:
- resolution: {integrity: sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- magic-string@0.30.21:
- resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
-
- markdown-it@14.1.1:
- resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
- hasBin: true
-
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- mdurl@2.0.0:
- resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- minimatch@10.2.4:
- resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
- engines: {node: 18 || 20 || >=22}
-
- minimatch@3.1.5:
- resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- napi-postinstall@0.3.4:
- resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- next@16.1.6:
- resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==}
- engines: {node: '>=20.9.0'}
- hasBin: true
- peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.51.1
- babel-plugin-react-compiler: '*'
- react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- sass: ^1.3.0
- peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- '@playwright/test':
- optional: true
- babel-plugin-react-compiler:
- optional: true
- sass:
- optional: true
-
- node-exports-info@1.6.0:
- resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
- engines: {node: '>= 0.4'}
-
- node-releases@2.0.36:
- resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.4:
- resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
- engines: {node: '>= 0.4'}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.7:
- resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
- engines: {node: '>= 0.4'}
-
- object.entries@1.1.9:
- resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
- engines: {node: '>= 0.4'}
-
- object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
-
- object.groupby@1.0.3:
- resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
- engines: {node: '>= 0.4'}
-
- object.values@1.2.1:
- resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
- engines: {node: '>= 0.4'}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- orderedmap@2.1.1:
- resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
-
- own-keys@1.0.1:
- resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
- engines: {node: '>= 0.4'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- picomatch@4.0.3:
- resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
- engines: {node: '>=12'}
-
- possible-typed-array-names@1.1.0:
- resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
- engines: {node: '>= 0.4'}
-
- postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.8:
- resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
- prosemirror-changeset@2.4.0:
- resolution: {integrity: sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==}
-
- prosemirror-collab@1.3.1:
- resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
-
- prosemirror-commands@1.7.1:
- resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
-
- prosemirror-dropcursor@1.8.2:
- resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
-
- prosemirror-gapcursor@1.4.1:
- resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==}
-
- prosemirror-history@1.5.0:
- resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
-
- prosemirror-inputrules@1.5.1:
- resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
-
- prosemirror-keymap@1.2.3:
- resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
-
- prosemirror-markdown@1.13.4:
- resolution: {integrity: sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==}
-
- prosemirror-menu@1.3.0:
- resolution: {integrity: sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==}
-
- prosemirror-model@1.25.4:
- resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==}
-
- prosemirror-schema-basic@1.2.4:
- resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==}
-
- prosemirror-schema-list@1.5.1:
- resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
-
- prosemirror-state@1.4.4:
- resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
-
- prosemirror-tables@1.8.5:
- resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
-
- prosemirror-trailing-node@3.0.0:
- resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==}
- peerDependencies:
- prosemirror-model: ^1.22.1
- prosemirror-state: ^1.4.2
- prosemirror-view: ^1.33.8
-
- prosemirror-transform@1.11.0:
- resolution: {integrity: sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==}
-
- prosemirror-view@1.41.6:
- resolution: {integrity: sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==}
-
- punycode.js@2.3.1:
- resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
- engines: {node: '>=6'}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- react-dom@19.2.3:
- resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
- peerDependencies:
- react: ^19.2.3
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
- react-zoom-pan-pinch@3.7.0:
- resolution: {integrity: sha512-UmReVZ0TxlKzxSbYiAj+LeGRW8s8LraAFTXRAxzMYnNRgGPsxCudwZKVkjvGmjtx7SW/hZamt69NUmGf4xrkXA==}
- engines: {node: '>=8', npm: '>=5'}
- peerDependencies:
- react: '*'
- react-dom: '*'
-
- react@19.2.3:
- resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
- engines: {node: '>=0.10.0'}
-
- reflect.getprototypeof@1.0.10:
- resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
- engines: {node: '>= 0.4'}
-
- regexp.prototype.flags@1.5.4:
- resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
- engines: {node: '>= 0.4'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
- resolve@1.22.11:
- resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
- engines: {node: '>= 0.4'}
- hasBin: true
-
- resolve@2.0.0-next.6:
- resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
- engines: {node: '>= 0.4'}
- hasBin: true
-
- reusify@1.1.0:
- resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- rope-sequence@1.3.4:
- resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- safe-array-concat@1.1.3:
- resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
- engines: {node: '>=0.4'}
-
- safe-push-apply@1.0.0:
- resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
- engines: {node: '>= 0.4'}
-
- safe-regex-test@1.1.0:
- resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
- engines: {node: '>= 0.4'}
-
- scheduler@0.27.0:
- resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.7.4:
- resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
- engines: {node: '>=10'}
- hasBin: true
-
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
-
- set-proto@1.0.0:
- resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
- engines: {node: '>= 0.4'}
-
- sharp@0.34.5:
- resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- side-channel-list@1.0.0:
- resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
- engines: {node: '>= 0.4'}
-
- side-channel-map@1.0.1:
- resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
- engines: {node: '>= 0.4'}
-
- side-channel-weakmap@1.0.2:
- resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
- engines: {node: '>= 0.4'}
-
- side-channel@1.1.0:
- resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
- engines: {node: '>= 0.4'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- stable-hash@0.0.5:
- resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
-
- stop-iteration-iterator@1.1.0:
- resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.includes@2.0.1:
- resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
- engines: {node: '>= 0.4'}
-
- string.prototype.matchall@4.0.12:
- resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
- engines: {node: '>= 0.4'}
-
- string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
-
- string.prototype.trim@1.2.10:
- resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.9:
- resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
-
- strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- styled-jsx@5.1.6:
- resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
-
- supports-color@7.2.0:
- 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'}
-
- tailwind-merge@3.5.0:
- resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==}
-
- tailwindcss@4.2.1:
- resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==}
-
- tapable@2.3.0:
- resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
- engines: {node: '>=6'}
-
- tinyglobby@0.2.15:
- resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
- engines: {node: '>=12.0.0'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- ts-api-utils@2.4.0:
- resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
- engines: {node: '>=18.12'}
- peerDependencies:
- typescript: '>=4.8.4'
-
- tsconfig-paths@3.15.0:
- resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- typed-array-buffer@1.0.3:
- resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-length@1.0.3:
- resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
- engines: {node: '>= 0.4'}
-
- typed-array-byte-offset@1.0.4:
- resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.7:
- resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
- engines: {node: '>= 0.4'}
-
- typescript-eslint@8.57.0:
- resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.0.0'
-
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- uc.micro@2.1.0:
- resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
-
- unbox-primitive@1.1.0:
- resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
- engines: {node: '>= 0.4'}
-
- undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
-
- unrs-resolver@1.11.1:
- resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
-
- update-browserslist-db@1.2.3:
- resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- use-sync-external-store@1.6.0:
- resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- w3c-keyname@2.2.8:
- resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
-
- which-boxed-primitive@1.1.1:
- resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
- engines: {node: '>= 0.4'}
-
- which-builtin-type@1.2.1:
- resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
- engines: {node: '>= 0.4'}
-
- which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
-
- which-typed-array@1.1.20:
- resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
- engines: {node: '>= 0.4'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- zod-validation-error@4.0.2:
- resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- zod: ^3.25.0 || ^4.0.0
-
- zod@4.3.6:
- resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
-
- zustand@5.0.12:
- resolution: {integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==}
- engines: {node: '>=12.20.0'}
- peerDependencies:
- '@types/react': '>=18.0.0'
- immer: '>=9.0.6'
- react: '>=18.0.0'
- use-sync-external-store: '>=1.2.0'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- immer:
- optional: true
- react:
- optional: true
- use-sync-external-store:
- optional: true
-
-snapshots:
-
- '@alloc/quick-lru@5.2.0': {}
-
- '@babel/code-frame@7.29.0':
- dependencies:
- '@babel/helper-validator-identifier': 7.28.5
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.29.0': {}
-
- '@babel/core@7.29.0':
- dependencies:
- '@babel/code-frame': 7.29.0
- '@babel/generator': 7.29.1
- '@babel/helper-compilation-targets': 7.28.6
- '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
- '@babel/helpers': 7.28.6
- '@babel/parser': 7.29.0
- '@babel/template': 7.28.6
- '@babel/traverse': 7.29.0
- '@babel/types': 7.29.0
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.29.1':
- dependencies:
- '@babel/parser': 7.29.0
- '@babel/types': 7.29.0
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
- jsesc: 3.1.0
-
- '@babel/helper-compilation-targets@7.28.6':
- dependencies:
- '@babel/compat-data': 7.29.0
- '@babel/helper-validator-option': 7.27.1
- browserslist: 4.28.1
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-globals@7.28.0': {}
-
- '@babel/helper-module-imports@7.28.6':
- dependencies:
- '@babel/traverse': 7.29.0
- '@babel/types': 7.29.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-module-imports': 7.28.6
- '@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.29.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.28.5': {}
-
- '@babel/helper-validator-option@7.27.1': {}
-
- '@babel/helpers@7.28.6':
- dependencies:
- '@babel/template': 7.28.6
- '@babel/types': 7.29.0
-
- '@babel/parser@7.29.0':
- dependencies:
- '@babel/types': 7.29.0
-
- '@babel/template@7.28.6':
- dependencies:
- '@babel/code-frame': 7.29.0
- '@babel/parser': 7.29.0
- '@babel/types': 7.29.0
-
- '@babel/traverse@7.29.0':
- dependencies:
- '@babel/code-frame': 7.29.0
- '@babel/generator': 7.29.1
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.29.0
- '@babel/template': 7.28.6
- '@babel/types': 7.29.0
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.29.0':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.28.5
-
- '@emnapi/core@1.9.0':
- dependencies:
- '@emnapi/wasi-threads': 1.2.0
- tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.9.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@emnapi/wasi-threads@1.2.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))':
- dependencies:
- eslint: 9.39.4(jiti@2.6.1)
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.2': {}
-
- '@eslint/config-array@0.21.2':
- dependencies:
- '@eslint/object-schema': 2.1.7
- debug: 4.4.3
- minimatch: 3.1.5
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/config-helpers@0.4.2':
- dependencies:
- '@eslint/core': 0.17.0
-
- '@eslint/core@0.17.0':
- dependencies:
- '@types/json-schema': 7.0.15
-
- '@eslint/eslintrc@3.3.5':
- dependencies:
- ajv: 6.14.0
- debug: 4.4.3
- espree: 10.4.0
- globals: 14.0.0
- ignore: 5.3.2
- import-fresh: 3.3.1
- js-yaml: 4.1.1
- minimatch: 3.1.5
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@9.39.4': {}
-
- '@eslint/object-schema@2.1.7': {}
-
- '@eslint/plugin-kit@0.4.1':
- dependencies:
- '@eslint/core': 0.17.0
- levn: 0.4.1
-
- '@floating-ui/core@1.7.5':
- dependencies:
- '@floating-ui/utils': 0.2.11
- optional: true
-
- '@floating-ui/dom@1.7.6':
- dependencies:
- '@floating-ui/core': 1.7.5
- '@floating-ui/utils': 0.2.11
- optional: true
-
- '@floating-ui/utils@0.2.11':
- optional: true
-
- '@humanfs/core@0.19.1': {}
-
- '@humanfs/node@0.16.7':
- dependencies:
- '@humanfs/core': 0.19.1
- '@humanwhocodes/retry': 0.4.3
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/retry@0.4.3': {}
-
- '@img/colour@1.1.0':
- optional: true
-
- '@img/sharp-darwin-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.2.4
- optional: true
-
- '@img/sharp-darwin-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.2.4
- optional: true
-
- '@img/sharp-libvips-darwin-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-darwin-x64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-ppc64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-riscv64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-s390x@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linux-x64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-x64@1.2.4':
- optional: true
-
- '@img/sharp-linux-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.2.4
- optional: true
-
- '@img/sharp-linux-arm@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.2.4
- optional: true
-
- '@img/sharp-linux-ppc64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-ppc64': 1.2.4
- optional: true
-
- '@img/sharp-linux-riscv64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-riscv64': 1.2.4
- optional: true
-
- '@img/sharp-linux-s390x@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.2.4
- optional: true
-
- '@img/sharp-linux-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.2.4
- optional: true
-
- '@img/sharp-linuxmusl-arm64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
- optional: true
-
- '@img/sharp-linuxmusl-x64@0.34.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
- optional: true
-
- '@img/sharp-wasm32@0.34.5':
- dependencies:
- '@emnapi/runtime': 1.9.0
- optional: true
-
- '@img/sharp-win32-arm64@0.34.5':
- optional: true
-
- '@img/sharp-win32-ia32@0.34.5':
- optional: true
-
- '@img/sharp-win32-x64@0.34.5':
- optional: true
-
- '@jridgewell/gen-mapping@0.3.13':
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.5.5': {}
-
- '@jridgewell/trace-mapping@0.3.31':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
-
- '@napi-rs/wasm-runtime@0.2.12':
- dependencies:
- '@emnapi/core': 1.9.0
- '@emnapi/runtime': 1.9.0
- '@tybys/wasm-util': 0.10.1
- optional: true
-
- '@next/env@16.1.6': {}
-
- '@next/eslint-plugin-next@16.1.6':
- dependencies:
- fast-glob: 3.3.1
-
- '@next/swc-darwin-arm64@16.1.6':
- optional: true
-
- '@next/swc-darwin-x64@16.1.6':
- optional: true
-
- '@next/swc-linux-arm64-gnu@16.1.6':
- optional: true
-
- '@next/swc-linux-arm64-musl@16.1.6':
- optional: true
-
- '@next/swc-linux-x64-gnu@16.1.6':
- optional: true
-
- '@next/swc-linux-x64-musl@16.1.6':
- optional: true
-
- '@next/swc-win32-arm64-msvc@16.1.6':
- optional: true
-
- '@next/swc-win32-x64-msvc@16.1.6':
- optional: true
-
- '@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.20.1
-
- '@nolyfill/is-core-module@1.0.39': {}
-
- '@remirror/core-constants@3.0.0': {}
-
- '@rtsao/scc@1.1.0': {}
-
- '@swc/helpers@0.5.15':
- dependencies:
- tslib: 2.8.1
-
- '@tailwindcss/node@4.2.1':
- dependencies:
- '@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.20.0
- jiti: 2.6.1
- lightningcss: 1.31.1
- magic-string: 0.30.21
- source-map-js: 1.2.1
- tailwindcss: 4.2.1
-
- '@tailwindcss/oxide-android-arm64@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-wasm32-wasi@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.2.1':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.2.1':
- optional: true
-
- '@tailwindcss/oxide@4.2.1':
- optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.2.1
- '@tailwindcss/oxide-darwin-arm64': 4.2.1
- '@tailwindcss/oxide-darwin-x64': 4.2.1
- '@tailwindcss/oxide-freebsd-x64': 4.2.1
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1
- '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1
- '@tailwindcss/oxide-linux-arm64-musl': 4.2.1
- '@tailwindcss/oxide-linux-x64-gnu': 4.2.1
- '@tailwindcss/oxide-linux-x64-musl': 4.2.1
- '@tailwindcss/oxide-wasm32-wasi': 4.2.1
- '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1
- '@tailwindcss/oxide-win32-x64-msvc': 4.2.1
-
- '@tailwindcss/postcss@4.2.1':
- dependencies:
- '@alloc/quick-lru': 5.2.0
- '@tailwindcss/node': 4.2.1
- '@tailwindcss/oxide': 4.2.1
- postcss: 8.5.8
- tailwindcss: 4.2.1
-
- '@tiptap/core@3.20.2(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/pm': 3.20.2
-
- '@tiptap/extension-blockquote@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-bold@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-bubble-menu@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
- optional: true
-
- '@tiptap/extension-bullet-list@3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extension-list': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-code-block@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
-
- '@tiptap/extension-code@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-document@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-dropcursor@3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extensions': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-floating-menu@3.20.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
- optional: true
-
- '@tiptap/extension-gapcursor@3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extensions': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-hard-break@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-heading@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-horizontal-rule@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
-
- '@tiptap/extension-image@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-italic@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-link@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
- linkifyjs: 4.3.2
-
- '@tiptap/extension-list-item@3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extension-list': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-list-keymap@3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extension-list': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
-
- '@tiptap/extension-ordered-list@3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extension-list': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-paragraph@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-placeholder@3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/extensions': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-strike@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-text@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extension-underline@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
-
- '@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
-
- '@tiptap/pm@3.20.2':
- dependencies:
- prosemirror-changeset: 2.4.0
- prosemirror-collab: 1.3.1
- prosemirror-commands: 1.7.1
- prosemirror-dropcursor: 1.8.2
- prosemirror-gapcursor: 1.4.1
- prosemirror-history: 1.5.0
- prosemirror-inputrules: 1.5.1
- prosemirror-keymap: 1.2.3
- prosemirror-markdown: 1.13.4
- prosemirror-menu: 1.3.0
- prosemirror-model: 1.25.4
- prosemirror-schema-basic: 1.2.4
- prosemirror-schema-list: 1.5.1
- prosemirror-state: 1.4.4
- prosemirror-tables: 1.8.5
- prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6)
- prosemirror-transform: 1.11.0
- prosemirror-view: 1.41.6
-
- '@tiptap/react@3.20.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@types/use-sync-external-store': 0.0.6
- fast-equals: 5.4.0
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- use-sync-external-store: 1.6.0(react@19.2.3)
- optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/extension-floating-menu': 3.20.2(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- transitivePeerDependencies:
- - '@floating-ui/dom'
-
- '@tiptap/starter-kit@3.20.2':
- dependencies:
- '@tiptap/core': 3.20.2(@tiptap/pm@3.20.2)
- '@tiptap/extension-blockquote': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-bold': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-bullet-list': 3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-code': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-code-block': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/extension-document': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-dropcursor': 3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-gapcursor': 3.20.2(@tiptap/extensions@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-hard-break': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-heading': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-horizontal-rule': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/extension-italic': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-link': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/extension-list': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/extension-list-item': 3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-list-keymap': 3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-ordered-list': 3.20.2(@tiptap/extension-list@3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2))
- '@tiptap/extension-paragraph': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-strike': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-text': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extension-underline': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))
- '@tiptap/extensions': 3.20.2(@tiptap/core@3.20.2(@tiptap/pm@3.20.2))(@tiptap/pm@3.20.2)
- '@tiptap/pm': 3.20.2
-
- '@tybys/wasm-util@0.10.1':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@types/estree@1.0.8': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/json5@0.0.29': {}
-
- '@types/linkify-it@5.0.0': {}
-
- '@types/markdown-it@14.1.2':
- dependencies:
- '@types/linkify-it': 5.0.0
- '@types/mdurl': 2.0.0
-
- '@types/mdurl@2.0.0': {}
-
- '@types/node@20.19.37':
- dependencies:
- undici-types: 6.21.0
-
- '@types/react-dom@19.2.3(@types/react@19.2.14)':
- dependencies:
- '@types/react': 19.2.14
-
- '@types/react@19.2.14':
- dependencies:
- csstype: 3.2.3
-
- '@types/use-sync-external-store@0.0.6': {}
-
- '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/type-utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.57.0
- eslint: 9.39.4(jiti@2.6.1)
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.4.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.57.0
- debug: 4.4.3
- eslint: 9.39.4(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.57.0
- debug: 4.4.3
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@8.57.0':
- dependencies:
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/visitor-keys': 8.57.0
-
- '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)':
- dependencies:
- typescript: 5.9.3
-
- '@typescript-eslint/type-utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- debug: 4.4.3
- eslint: 9.39.4(jiti@2.6.1)
- ts-api-utils: 2.4.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@8.57.0': {}
-
- '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)':
- dependencies:
- '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/visitor-keys': 8.57.0
- debug: 4.4.3
- minimatch: 10.2.4
- semver: 7.7.4
- tinyglobby: 0.2.15
- ts-api-utils: 2.4.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3)
- eslint: 9.39.4(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/visitor-keys@8.57.0':
- dependencies:
- '@typescript-eslint/types': 8.57.0
- eslint-visitor-keys: 5.0.1
-
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- dependencies:
- '@napi-rs/wasm-runtime': 0.2.12
- optional: true
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- optional: true
-
- acorn-jsx@5.3.2(acorn@8.16.0):
- dependencies:
- acorn: 8.16.0
-
- acorn@8.16.0: {}
-
- ajv@6.14.0:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- argparse@2.0.1: {}
-
- aria-query@5.3.2: {}
-
- array-buffer-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- is-array-buffer: 3.0.5
-
- array-includes@3.1.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- is-string: 1.1.1
- math-intrinsics: 1.1.0
-
- array.prototype.findlast@1.2.5:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.findlastindex@1.2.6:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.flat@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.flatmap@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.tosorted@1.1.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-shim-unscopables: 1.1.0
-
- arraybuffer.prototype.slice@1.0.4:
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- is-array-buffer: 3.0.5
-
- ast-types-flow@0.0.8: {}
-
- async-function@1.0.0: {}
-
- available-typed-arrays@1.0.7:
- dependencies:
- possible-typed-array-names: 1.1.0
-
- axe-core@4.11.1: {}
-
- axobject-query@4.1.0: {}
-
- balanced-match@1.0.2: {}
-
- balanced-match@4.0.4: {}
-
- baseline-browser-mapping@2.10.8: {}
-
- brace-expansion@1.1.12:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- brace-expansion@5.0.4:
- dependencies:
- balanced-match: 4.0.4
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- browserslist@4.28.1:
- dependencies:
- baseline-browser-mapping: 2.10.8
- caniuse-lite: 1.0.30001779
- electron-to-chromium: 1.5.313
- node-releases: 2.0.36
- update-browserslist-db: 1.2.3(browserslist@4.28.1)
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
-
- call-bind@1.0.8:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- get-intrinsic: 1.3.0
- set-function-length: 1.2.2
-
- call-bound@1.0.4:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- get-intrinsic: 1.3.0
-
- callsites@3.1.0: {}
-
- caniuse-lite@1.0.30001779: {}
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- client-only@0.0.1: {}
-
- clsx@2.1.1: {}
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.4: {}
-
- concat-map@0.0.1: {}
-
- convert-source-map@2.0.0: {}
-
- crelt@1.0.6: {}
-
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- csstype@3.2.3: {}
-
- damerau-levenshtein@1.0.8: {}
-
- data-view-buffer@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- data-view-byte-length@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- data-view-byte-offset@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-data-view: 1.0.2
-
- debug@3.2.7:
- dependencies:
- ms: 2.1.3
-
- debug@4.4.3:
- dependencies:
- ms: 2.1.3
-
- deep-is@0.1.4: {}
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.1
- es-errors: 1.3.0
- gopd: 1.2.0
-
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.4
- has-property-descriptors: 1.0.2
- object-keys: 1.1.1
-
- detect-libc@2.1.2: {}
-
- doctrine@2.1.0:
- dependencies:
- esutils: 2.0.3
-
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
- electron-to-chromium@1.5.313: {}
-
- emoji-regex@9.2.2: {}
-
- enhanced-resolve@5.20.0:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.3.0
-
- entities@4.5.0: {}
-
- es-abstract@1.24.1:
- dependencies:
- array-buffer-byte-length: 1.0.2
- arraybuffer.prototype.slice: 1.0.4
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- data-view-buffer: 1.0.2
- data-view-byte-length: 1.0.2
- data-view-byte-offset: 1.0.1
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-set-tostringtag: 2.1.0
- es-to-primitive: 1.3.0
- function.prototype.name: 1.1.8
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- get-symbol-description: 1.1.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- internal-slot: 1.1.0
- is-array-buffer: 3.0.5
- is-callable: 1.2.7
- is-data-view: 1.0.2
- is-negative-zero: 2.0.3
- is-regex: 1.2.1
- is-set: 2.0.3
- is-shared-array-buffer: 1.0.4
- is-string: 1.1.1
- is-typed-array: 1.1.15
- is-weakref: 1.1.1
- math-intrinsics: 1.1.0
- object-inspect: 1.13.4
- object-keys: 1.1.1
- object.assign: 4.1.7
- own-keys: 1.0.1
- regexp.prototype.flags: 1.5.4
- safe-array-concat: 1.1.3
- safe-push-apply: 1.0.0
- safe-regex-test: 1.1.0
- set-proto: 1.0.0
- stop-iteration-iterator: 1.1.0
- string.prototype.trim: 1.2.10
- string.prototype.trimend: 1.0.9
- string.prototype.trimstart: 1.0.8
- typed-array-buffer: 1.0.3
- typed-array-byte-length: 1.0.3
- typed-array-byte-offset: 1.0.4
- typed-array-length: 1.0.7
- unbox-primitive: 1.1.0
- which-typed-array: 1.1.20
-
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-iterator-helpers@1.3.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-set-tostringtag: 2.1.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- iterator.prototype: 1.1.5
- math-intrinsics: 1.1.0
- safe-array-concat: 1.1.3
-
- es-object-atoms@1.1.1:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.1.0:
- dependencies:
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- es-shim-unscopables@1.1.0:
- dependencies:
- hasown: 2.0.2
-
- es-to-primitive@1.3.0:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.1.0
- is-symbol: 1.1.1
-
- escalade@3.2.0: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-config-next@16.1.6(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@next/eslint-plugin-next': 16.1.6
- eslint: 9.39.4(jiti@2.6.1)
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
- eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1))
- eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1))
- eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1))
- globals: 16.4.0
- typescript-eslint: 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - '@typescript-eslint/parser'
- - eslint-import-resolver-webpack
- - eslint-plugin-import-x
- - supports-color
-
- eslint-import-resolver-node@0.3.9:
- dependencies:
- debug: 3.2.7
- is-core-module: 2.16.1
- resolve: 1.22.11
- transitivePeerDependencies:
- - supports-color
-
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- '@nolyfill/is-core-module': 1.0.39
- debug: 4.4.3
- eslint: 9.39.4(jiti@2.6.1)
- get-tsconfig: 4.13.6
- is-bun-module: 2.0.0
- stable-hash: 0.0.5
- tinyglobby: 0.2.15
- unrs-resolver: 1.11.1
- optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
- transitivePeerDependencies:
- - supports-color
-
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- debug: 3.2.7
- optionalDependencies:
- '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.4(jiti@2.6.1)
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1))
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- '@rtsao/scc': 1.1.0
- array-includes: 3.1.9
- array.prototype.findlastindex: 1.2.6
- array.prototype.flat: 1.3.3
- array.prototype.flatmap: 1.3.3
- debug: 3.2.7
- doctrine: 2.1.0
- eslint: 9.39.4(jiti@2.6.1)
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
- hasown: 2.0.2
- is-core-module: 2.16.1
- is-glob: 4.0.3
- minimatch: 3.1.5
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.1
- semver: 6.3.1
- string.prototype.trimend: 1.0.9
- tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- aria-query: 5.3.2
- array-includes: 3.1.9
- array.prototype.flatmap: 1.3.3
- ast-types-flow: 0.0.8
- axe-core: 4.11.1
- axobject-query: 4.1.0
- damerau-levenshtein: 1.0.8
- emoji-regex: 9.2.2
- eslint: 9.39.4(jiti@2.6.1)
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- language-tags: 1.0.9
- minimatch: 3.1.5
- object.fromentries: 2.0.8
- safe-regex-test: 1.1.0
- string.prototype.includes: 2.0.1
-
- eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- '@babel/core': 7.29.0
- '@babel/parser': 7.29.0
- eslint: 9.39.4(jiti@2.6.1)
- hermes-parser: 0.25.1
- zod: 4.3.6
- zod-validation-error: 4.0.2(zod@4.3.6)
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)):
- dependencies:
- array-includes: 3.1.9
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.3
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.3.1
- eslint: 9.39.4(jiti@2.6.1)
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.5
- object.entries: 1.1.9
- object.fromentries: 2.0.8
- object.values: 1.2.1
- prop-types: 15.8.1
- resolve: 2.0.0-next.6
- semver: 6.3.1
- string.prototype.matchall: 4.0.12
- string.prototype.repeat: 1.0.0
-
- eslint-scope@8.4.0:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@4.2.1: {}
-
- eslint-visitor-keys@5.0.1: {}
-
- eslint@9.39.4(jiti@2.6.1):
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1))
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.21.2
- '@eslint/config-helpers': 0.4.2
- '@eslint/core': 0.17.0
- '@eslint/eslintrc': 3.3.5
- '@eslint/js': 9.39.4
- '@eslint/plugin-kit': 0.4.1
- '@humanfs/node': 0.16.7
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.8
- ajv: 6.14.0
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.3
- escape-string-regexp: 4.0.0
- eslint-scope: 8.4.0
- eslint-visitor-keys: 4.2.1
- espree: 10.4.0
- esquery: 1.7.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- lodash.merge: 4.6.2
- minimatch: 3.1.5
- natural-compare: 1.4.0
- optionator: 0.9.4
- optionalDependencies:
- jiti: 2.6.1
- transitivePeerDependencies:
- - supports-color
-
- espree@10.4.0:
- dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
- eslint-visitor-keys: 4.2.1
-
- esquery@1.7.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
- esutils@2.0.3: {}
-
- fast-deep-equal@3.1.3: {}
-
- fast-equals@5.4.0: {}
-
- fast-glob@3.3.1:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.8
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
- fastq@1.20.1:
- dependencies:
- reusify: 1.1.0
-
- fdir@6.5.0(picomatch@4.0.3):
- optionalDependencies:
- picomatch: 4.0.3
-
- file-entry-cache@8.0.0:
- dependencies:
- flat-cache: 4.0.1
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- flat-cache@4.0.1:
- dependencies:
- flatted: 3.4.1
- keyv: 4.5.4
-
- flatted@3.4.1: {}
-
- for-each@0.3.5:
- dependencies:
- is-callable: 1.2.7
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.8:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- functions-have-names: 1.2.3
- hasown: 2.0.2
- is-callable: 1.2.7
-
- functions-have-names@1.2.3: {}
-
- generator-function@2.0.1: {}
-
- gensync@1.0.0-beta.2: {}
-
- get-intrinsic@1.3.0:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- function-bind: 1.1.2
- get-proto: 1.0.1
- gopd: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- math-intrinsics: 1.1.0
-
- get-proto@1.0.1:
- dependencies:
- dunder-proto: 1.0.1
- es-object-atoms: 1.1.1
-
- get-symbol-description@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
-
- get-tsconfig@4.13.6:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- globals@14.0.0: {}
-
- globals@16.4.0: {}
-
- globalthis@1.0.4:
- dependencies:
- define-properties: 1.2.1
- gopd: 1.2.0
-
- gopd@1.2.0: {}
-
- graceful-fs@4.2.11: {}
-
- has-bigints@1.1.0: {}
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.1
-
- has-proto@1.2.0:
- dependencies:
- dunder-proto: 1.0.1
-
- has-symbols@1.1.0: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.1.0
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- hermes-estree@0.25.1: {}
-
- hermes-parser@0.25.1:
- dependencies:
- hermes-estree: 0.25.1
-
- ignore@5.3.2: {}
-
- ignore@7.0.5: {}
-
- import-fresh@3.3.1:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- imurmurhash@0.1.4: {}
-
- internal-slot@1.1.0:
- dependencies:
- es-errors: 1.3.0
- hasown: 2.0.2
- side-channel: 1.1.0
-
- is-array-buffer@3.0.5:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- is-async-function@2.1.1:
- dependencies:
- async-function: 1.0.0
- call-bound: 1.0.4
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
-
- is-bigint@1.1.0:
- dependencies:
- has-bigints: 1.1.0
-
- is-boolean-object@1.2.2:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-bun-module@2.0.0:
- dependencies:
- semver: 7.7.4
-
- is-callable@1.2.7: {}
-
- is-core-module@2.16.1:
- dependencies:
- hasown: 2.0.2
-
- is-data-view@1.0.2:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- is-typed-array: 1.1.15
-
- is-date-object@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-extglob@2.1.1: {}
-
- is-finalizationregistry@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
- is-generator-function@1.1.2:
- dependencies:
- call-bound: 1.0.4
- generator-function: 2.0.1
- get-proto: 1.0.1
- has-tostringtag: 1.0.2
- safe-regex-test: 1.1.0
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-map@2.0.3: {}
-
- is-negative-zero@2.0.3: {}
-
- is-number-object@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-number@7.0.0: {}
-
- is-regex@1.2.1:
- dependencies:
- call-bound: 1.0.4
- gopd: 1.2.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
- is-set@2.0.3: {}
-
- is-shared-array-buffer@1.0.4:
- dependencies:
- call-bound: 1.0.4
-
- is-string@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
- is-symbol@1.1.1:
- dependencies:
- call-bound: 1.0.4
- has-symbols: 1.1.0
- safe-regex-test: 1.1.0
-
- is-typed-array@1.1.15:
- dependencies:
- which-typed-array: 1.1.20
-
- is-weakmap@2.0.2: {}
-
- is-weakref@1.1.1:
- dependencies:
- call-bound: 1.0.4
-
- is-weakset@2.0.4:
- dependencies:
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
-
- isarray@2.0.5: {}
-
- isexe@2.0.0: {}
-
- iterator.prototype@1.1.5:
- dependencies:
- define-data-property: 1.1.4
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- has-symbols: 1.1.0
- set-function-name: 2.0.2
-
- jiti@2.6.1: {}
-
- js-tokens@4.0.0: {}
-
- js-yaml@4.1.1:
- dependencies:
- argparse: 2.0.1
-
- jsesc@3.1.0: {}
-
- json-buffer@3.0.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- json5@1.0.2:
- dependencies:
- minimist: 1.2.8
-
- json5@2.2.3: {}
-
- jsx-ast-utils@3.3.5:
- dependencies:
- array-includes: 3.1.9
- array.prototype.flat: 1.3.3
- object.assign: 4.1.7
- object.values: 1.2.1
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- language-subtag-registry@0.3.23: {}
-
- language-tags@1.0.9:
- dependencies:
- language-subtag-registry: 0.3.23
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- lightningcss-android-arm64@1.31.1:
- optional: true
-
- lightningcss-darwin-arm64@1.31.1:
- optional: true
-
- lightningcss-darwin-x64@1.31.1:
- optional: true
-
- lightningcss-freebsd-x64@1.31.1:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.31.1:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.31.1:
- optional: true
-
- lightningcss-linux-arm64-musl@1.31.1:
- optional: true
-
- lightningcss-linux-x64-gnu@1.31.1:
- optional: true
-
- lightningcss-linux-x64-musl@1.31.1:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.31.1:
- optional: true
-
- lightningcss-win32-x64-msvc@1.31.1:
- optional: true
-
- lightningcss@1.31.1:
- dependencies:
- detect-libc: 2.1.2
- optionalDependencies:
- lightningcss-android-arm64: 1.31.1
- lightningcss-darwin-arm64: 1.31.1
- lightningcss-darwin-x64: 1.31.1
- lightningcss-freebsd-x64: 1.31.1
- lightningcss-linux-arm-gnueabihf: 1.31.1
- lightningcss-linux-arm64-gnu: 1.31.1
- lightningcss-linux-arm64-musl: 1.31.1
- lightningcss-linux-x64-gnu: 1.31.1
- lightningcss-linux-x64-musl: 1.31.1
- lightningcss-win32-arm64-msvc: 1.31.1
- lightningcss-win32-x64-msvc: 1.31.1
-
- linkify-it@5.0.0:
- dependencies:
- uc.micro: 2.1.0
-
- linkifyjs@4.3.2: {}
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- lodash.merge@4.6.2: {}
-
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
-
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
- lucide-react@0.577.0(react@19.2.3):
- dependencies:
- react: 19.2.3
-
- magic-string@0.30.21:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
- markdown-it@14.1.1:
- dependencies:
- argparse: 2.0.1
- entities: 4.5.0
- linkify-it: 5.0.0
- mdurl: 2.0.0
- punycode.js: 2.3.1
- uc.micro: 2.1.0
-
- math-intrinsics@1.1.0: {}
-
- mdurl@2.0.0: {}
-
- merge2@1.4.1: {}
-
- micromatch@4.0.8:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- minimatch@10.2.4:
- dependencies:
- brace-expansion: 5.0.4
-
- minimatch@3.1.5:
- dependencies:
- brace-expansion: 1.1.12
-
- minimist@1.2.8: {}
-
- ms@2.1.3: {}
-
- nanoid@3.3.11: {}
-
- napi-postinstall@0.3.4: {}
-
- natural-compare@1.4.0: {}
-
- next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
- dependencies:
- '@next/env': 16.1.6
- '@swc/helpers': 0.5.15
- baseline-browser-mapping: 2.10.8
- caniuse-lite: 1.0.30001779
- postcss: 8.4.31
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.3)
- optionalDependencies:
- '@next/swc-darwin-arm64': 16.1.6
- '@next/swc-darwin-x64': 16.1.6
- '@next/swc-linux-arm64-gnu': 16.1.6
- '@next/swc-linux-arm64-musl': 16.1.6
- '@next/swc-linux-x64-gnu': 16.1.6
- '@next/swc-linux-x64-musl': 16.1.6
- '@next/swc-win32-arm64-msvc': 16.1.6
- '@next/swc-win32-x64-msvc': 16.1.6
- sharp: 0.34.5
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
-
- node-exports-info@1.6.0:
- dependencies:
- array.prototype.flatmap: 1.3.3
- es-errors: 1.3.0
- object.entries: 1.1.9
- semver: 6.3.1
-
- node-releases@2.0.36: {}
-
- object-assign@4.1.1: {}
-
- object-inspect@1.13.4: {}
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.7:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
- has-symbols: 1.1.0
- object-keys: 1.1.1
-
- object.entries@1.1.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- object.fromentries@2.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-object-atoms: 1.1.1
-
- object.groupby@1.0.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
- object.values@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- 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
-
- orderedmap@2.1.1: {}
-
- own-keys@1.0.1:
- dependencies:
- get-intrinsic: 1.3.0
- object-keys: 1.1.1
- safe-push-apply: 1.0.0
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- path-exists@4.0.0: {}
-
- path-key@3.1.1: {}
-
- path-parse@1.0.7: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- picomatch@4.0.3: {}
-
- possible-typed-array-names@1.1.0: {}
-
- postcss@8.4.31:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.8:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- prelude-ls@1.2.1: {}
-
- prop-types@15.8.1:
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
-
- prosemirror-changeset@2.4.0:
- dependencies:
- prosemirror-transform: 1.11.0
-
- prosemirror-collab@1.3.1:
- dependencies:
- prosemirror-state: 1.4.4
-
- prosemirror-commands@1.7.1:
- dependencies:
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
-
- prosemirror-dropcursor@1.8.2:
- dependencies:
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
- prosemirror-view: 1.41.6
-
- prosemirror-gapcursor@1.4.1:
- dependencies:
- prosemirror-keymap: 1.2.3
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-view: 1.41.6
-
- prosemirror-history@1.5.0:
- dependencies:
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
- prosemirror-view: 1.41.6
- rope-sequence: 1.3.4
-
- prosemirror-inputrules@1.5.1:
- dependencies:
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
-
- prosemirror-keymap@1.2.3:
- dependencies:
- prosemirror-state: 1.4.4
- w3c-keyname: 2.2.8
-
- prosemirror-markdown@1.13.4:
- dependencies:
- '@types/markdown-it': 14.1.2
- markdown-it: 14.1.1
- prosemirror-model: 1.25.4
-
- prosemirror-menu@1.3.0:
- dependencies:
- crelt: 1.0.6
- prosemirror-commands: 1.7.1
- prosemirror-history: 1.5.0
- prosemirror-state: 1.4.4
-
- prosemirror-model@1.25.4:
- dependencies:
- orderedmap: 2.1.1
-
- prosemirror-schema-basic@1.2.4:
- dependencies:
- prosemirror-model: 1.25.4
-
- prosemirror-schema-list@1.5.1:
- dependencies:
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
-
- prosemirror-state@1.4.4:
- dependencies:
- prosemirror-model: 1.25.4
- prosemirror-transform: 1.11.0
- prosemirror-view: 1.41.6
-
- prosemirror-tables@1.8.5:
- dependencies:
- prosemirror-keymap: 1.2.3
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
- prosemirror-view: 1.41.6
-
- prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6):
- dependencies:
- '@remirror/core-constants': 3.0.0
- escape-string-regexp: 4.0.0
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-view: 1.41.6
-
- prosemirror-transform@1.11.0:
- dependencies:
- prosemirror-model: 1.25.4
-
- prosemirror-view@1.41.6:
- dependencies:
- prosemirror-model: 1.25.4
- prosemirror-state: 1.4.4
- prosemirror-transform: 1.11.0
-
- punycode.js@2.3.1: {}
-
- punycode@2.3.1: {}
-
- queue-microtask@1.2.3: {}
-
- react-dom@19.2.3(react@19.2.3):
- dependencies:
- react: 19.2.3
- scheduler: 0.27.0
-
- react-is@16.13.1: {}
-
- react-zoom-pan-pinch@3.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
- dependencies:
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
-
- react@19.2.3: {}
-
- reflect.getprototypeof@1.0.10:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- which-builtin-type: 1.2.1
-
- regexp.prototype.flags@1.5.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-errors: 1.3.0
- get-proto: 1.0.1
- gopd: 1.2.0
- set-function-name: 2.0.2
-
- resolve-from@4.0.0: {}
-
- resolve-pkg-maps@1.0.0: {}
-
- resolve@1.22.11:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- resolve@2.0.0-next.6:
- dependencies:
- es-errors: 1.3.0
- is-core-module: 2.16.1
- node-exports-info: 1.6.0
- object-keys: 1.1.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- reusify@1.1.0: {}
-
- rope-sequence@1.3.4: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- safe-array-concat@1.1.3:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- isarray: 2.0.5
-
- safe-push-apply@1.0.0:
- dependencies:
- es-errors: 1.3.0
- isarray: 2.0.5
-
- safe-regex-test@1.1.0:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-regex: 1.2.1
-
- scheduler@0.27.0: {}
-
- semver@6.3.1: {}
-
- semver@7.7.4: {}
-
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
-
- set-function-name@2.0.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
-
- set-proto@1.0.0:
- dependencies:
- dunder-proto: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
-
- sharp@0.34.5:
- dependencies:
- '@img/colour': 1.1.0
- detect-libc: 2.1.2
- semver: 7.7.4
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.5
- '@img/sharp-darwin-x64': 0.34.5
- '@img/sharp-libvips-darwin-arm64': 1.2.4
- '@img/sharp-libvips-darwin-x64': 1.2.4
- '@img/sharp-libvips-linux-arm': 1.2.4
- '@img/sharp-libvips-linux-arm64': 1.2.4
- '@img/sharp-libvips-linux-ppc64': 1.2.4
- '@img/sharp-libvips-linux-riscv64': 1.2.4
- '@img/sharp-libvips-linux-s390x': 1.2.4
- '@img/sharp-libvips-linux-x64': 1.2.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
- '@img/sharp-libvips-linuxmusl-x64': 1.2.4
- '@img/sharp-linux-arm': 0.34.5
- '@img/sharp-linux-arm64': 0.34.5
- '@img/sharp-linux-ppc64': 0.34.5
- '@img/sharp-linux-riscv64': 0.34.5
- '@img/sharp-linux-s390x': 0.34.5
- '@img/sharp-linux-x64': 0.34.5
- '@img/sharp-linuxmusl-arm64': 0.34.5
- '@img/sharp-linuxmusl-x64': 0.34.5
- '@img/sharp-wasm32': 0.34.5
- '@img/sharp-win32-arm64': 0.34.5
- '@img/sharp-win32-ia32': 0.34.5
- '@img/sharp-win32-x64': 0.34.5
- optional: true
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
- side-channel-list@1.0.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-map@1.0.1:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
-
- side-channel-weakmap@1.0.2:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- object-inspect: 1.13.4
- side-channel-map: 1.0.1
-
- side-channel@1.1.0:
- dependencies:
- es-errors: 1.3.0
- object-inspect: 1.13.4
- side-channel-list: 1.0.0
- side-channel-map: 1.0.1
- side-channel-weakmap: 1.0.2
-
- source-map-js@1.2.1: {}
-
- stable-hash@0.0.5: {}
-
- stop-iteration-iterator@1.1.0:
- dependencies:
- es-errors: 1.3.0
- internal-slot: 1.1.0
-
- string.prototype.includes@2.0.1:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
- string.prototype.matchall@4.0.12:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- gopd: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- regexp.prototype.flags: 1.5.4
- set-function-name: 2.0.2
- side-channel: 1.1.0
-
- string.prototype.repeat@1.0.0:
- dependencies:
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
- string.prototype.trim@1.2.10:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-data-property: 1.1.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-object-atoms: 1.1.1
- has-property-descriptors: 1.0.2
-
- string.prototype.trimend@1.0.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- string.prototype.trimstart@1.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- strip-bom@3.0.0: {}
-
- strip-json-comments@3.1.1: {}
-
- styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.3):
- dependencies:
- client-only: 0.0.1
- react: 19.2.3
- optionalDependencies:
- '@babel/core': 7.29.0
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- tailwind-merge@3.5.0: {}
-
- tailwindcss@4.2.1: {}
-
- tapable@2.3.0: {}
-
- tinyglobby@0.2.15:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- ts-api-utils@2.4.0(typescript@5.9.3):
- dependencies:
- typescript: 5.9.3
-
- tsconfig-paths@3.15.0:
- dependencies:
- '@types/json5': 0.0.29
- json5: 1.0.2
- minimist: 1.2.8
- strip-bom: 3.0.0
-
- tslib@2.8.1: {}
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- typed-array-buffer@1.0.3:
- dependencies:
- call-bound: 1.0.4
- es-errors: 1.3.0
- is-typed-array: 1.1.15
-
- typed-array-byte-length@1.0.3:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
-
- typed-array-byte-offset@1.0.4:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- has-proto: 1.2.0
- is-typed-array: 1.1.15
- reflect.getprototypeof: 1.0.10
-
- typed-array-length@1.0.7:
- dependencies:
- call-bind: 1.0.8
- for-each: 0.3.5
- gopd: 1.2.0
- is-typed-array: 1.1.15
- possible-typed-array-names: 1.1.0
- reflect.getprototypeof: 1.0.10
-
- typescript-eslint@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3):
- dependencies:
- '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)
- eslint: 9.39.4(jiti@2.6.1)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
-
- typescript@5.9.3: {}
-
- uc.micro@2.1.0: {}
-
- unbox-primitive@1.1.0:
- dependencies:
- call-bound: 1.0.4
- has-bigints: 1.1.0
- has-symbols: 1.1.0
- which-boxed-primitive: 1.1.1
-
- undici-types@6.21.0: {}
-
- unrs-resolver@1.11.1:
- dependencies:
- napi-postinstall: 0.3.4
- optionalDependencies:
- '@unrs/resolver-binding-android-arm-eabi': 1.11.1
- '@unrs/resolver-binding-android-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-x64': 1.11.1
- '@unrs/resolver-binding-freebsd-x64': 1.11.1
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
- '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-musl': 1.11.1
- '@unrs/resolver-binding-wasm32-wasi': 1.11.1
- '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
- '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
- '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
-
- update-browserslist-db@1.2.3(browserslist@4.28.1):
- dependencies:
- browserslist: 4.28.1
- escalade: 3.2.0
- picocolors: 1.1.1
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- use-sync-external-store@1.6.0(react@19.2.3):
- dependencies:
- react: 19.2.3
-
- w3c-keyname@2.2.8: {}
-
- which-boxed-primitive@1.1.1:
- dependencies:
- is-bigint: 1.1.0
- is-boolean-object: 1.2.2
- is-number-object: 1.1.1
- is-string: 1.1.1
- is-symbol: 1.1.1
-
- which-builtin-type@1.2.1:
- dependencies:
- call-bound: 1.0.4
- function.prototype.name: 1.1.8
- has-tostringtag: 1.0.2
- is-async-function: 2.1.1
- is-date-object: 1.1.0
- is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.2
- is-regex: 1.2.1
- is-weakref: 1.1.1
- isarray: 2.0.5
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.20
-
- which-collection@1.0.2:
- dependencies:
- is-map: 2.0.3
- is-set: 2.0.3
- is-weakmap: 2.0.2
- is-weakset: 2.0.4
-
- which-typed-array@1.1.20:
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.8
- call-bound: 1.0.4
- for-each: 0.3.5
- get-proto: 1.0.1
- gopd: 1.2.0
- has-tostringtag: 1.0.2
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
-
- yallist@3.1.1: {}
-
- yocto-queue@0.1.0: {}
-
- zod-validation-error@4.0.2(zod@4.3.6):
- dependencies:
- zod: 4.3.6
-
- zod@4.3.6: {}
-
- zustand@5.0.12(@types/react@19.2.14)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)):
- optionalDependencies:
- '@types/react': 19.2.14
- react: 19.2.3
- use-sync-external-store: 1.6.0(react@19.2.3)
diff --git a/widget/pnpm-workspace.yaml b/widget/pnpm-workspace.yaml
deleted file mode 100644
index 8b16180..0000000
--- a/widget/pnpm-workspace.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-onlyBuiltDependencies:
- - sharp
- - unrs-resolver
diff --git a/widget/postcss.config.mjs b/widget/postcss.config.mjs
deleted file mode 100644
index 61e3684..0000000
--- a/widget/postcss.config.mjs
+++ /dev/null
@@ -1,7 +0,0 @@
-const config = {
- plugins: {
- "@tailwindcss/postcss": {},
- },
-};
-
-export default config;
diff --git a/widget/public/images/logo.png b/widget/public/images/logo.png
deleted file mode 100644
index c34fe4c..0000000
Binary files a/widget/public/images/logo.png and /dev/null differ
diff --git a/widget/public/sdk/cs-agent-widget.js b/widget/public/sdk/cs-agent-widget.js
deleted file mode 100644
index 3d2193c..0000000
--- a/widget/public/sdk/cs-agent-widget.js
+++ /dev/null
@@ -1,270 +0,0 @@
-(function () {
- if (window.__CS_AGENT_WIDGET_LOADED__) {
- return;
- }
- window.__CS_AGENT_WIDGET_LOADED__ = true;
-
- var config = window.CSAgentConfig || {};
- var baseUrl = String(config.baseUrl || "").replace(/\/$/, "");
- if (!config.channelId || !baseUrl) {
- console.error("[cs-agent-widget] channelId and baseUrl are required");
- return;
- }
-
- function resolveWidgetBaseUrl() {
- var currentScript = document.currentScript;
- if (currentScript && currentScript.src) {
- return currentScript.src.replace(/\/sdk\/cs-agent-widget\.js(?:\?.*)?$/, "");
- }
- if (/\/widget$/.test(baseUrl)) {
- return baseUrl;
- }
- return baseUrl + "/widget";
- }
-
- var button = document.createElement("button");
- button.type = "button";
- button.dataset.csAgentWidget = "launcher";
- button.setAttribute("aria-label", config.title || "在线客服");
- button.textContent = config.title || "在线客服";
- button.style.position = "fixed";
- button.style.bottom = "24px";
- button.style.right = config.position === "left" ? "" : "24px";
- button.style.left = config.position === "left" ? "24px" : "";
- button.style.zIndex = "2147483000";
- button.style.border = "0";
- button.style.borderRadius = "999px";
- button.style.padding = "14px 18px";
- button.style.background = config.themeColor || "#0f6cbd";
- button.style.color = "#fff";
- button.style.font = "600 14px/1 sans-serif";
- button.style.boxShadow = "0 18px 40px rgba(15, 35, 65, 0.24)";
- button.style.cursor = "pointer";
-
- var widgetBaseUrl = resolveWidgetBaseUrl();
- var frameUrl = new URL(widgetBaseUrl + "/frame/");
- frameUrl.searchParams.set("channelId", config.channelId);
- frameUrl.searchParams.set("baseUrl", baseUrl);
- if (config.apiBaseUrl) frameUrl.searchParams.set("apiBaseUrl", config.apiBaseUrl);
- if (config.title) frameUrl.searchParams.set("title", config.title);
- if (config.subtitle) frameUrl.searchParams.set("subtitle", config.subtitle);
- if (config.position) frameUrl.searchParams.set("position", config.position);
- if (config.themeColor) frameUrl.searchParams.set("themeColor", config.themeColor);
- if (config.width) frameUrl.searchParams.set("width", config.width);
- var frame = null;
- var frameLoaded = false;
- var frameReady = false;
- var initSent = false;
- var isOpen = false;
- var isMaximized = false;
- var frameHideTimer = null;
- var frameDestroyTimer = null;
- var animationDuration = 260;
-
- function clearFrameTimers() {
- if (frameHideTimer) {
- window.clearTimeout(frameHideTimer);
- frameHideTimer = null;
- }
- if (frameDestroyTimer) {
- window.clearTimeout(frameDestroyTimer);
- frameDestroyTimer = null;
- }
- }
-
- function applyFrameLayout() {
- if (!frame) {
- return;
- }
-
- frame.style.position = "fixed";
- frame.style.border = "0";
- frame.style.overflow = "hidden";
- frame.style.background = "#fff";
- frame.style.zIndex = "2147483000";
- frame.style.boxShadow = "0 28px 80px rgba(15, 35, 65, 0.28)";
- frame.style.willChange = "top,right,bottom,left,width,height,opacity,transform,border-radius";
- frame.style.transition =
- "top 260ms cubic-bezier(0.22, 1, 0.36, 1), right 260ms cubic-bezier(0.22, 1, 0.36, 1), bottom 260ms cubic-bezier(0.22, 1, 0.36, 1), left 260ms cubic-bezier(0.22, 1, 0.36, 1), width 260ms cubic-bezier(0.22, 1, 0.36, 1), height 260ms cubic-bezier(0.22, 1, 0.36, 1), opacity 220ms ease, transform 260ms cubic-bezier(0.22, 1, 0.36, 1), border-radius 260ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 260ms ease";
- frame.style.transformOrigin =
- config.position === "left" ? "left bottom" : "right bottom";
-
- if (isMaximized) {
- frame.style.top = "20px";
- frame.style.right = "20px";
- frame.style.bottom = "20px";
- frame.style.left = "20px";
- frame.style.width = "calc(100vw - 40px)";
- frame.style.maxWidth = "none";
- frame.style.height = "calc(100vh - 40px)";
- frame.style.borderRadius = "24px";
- return;
- }
-
- frame.style.top = "";
- frame.style.bottom = "88px";
- frame.style.right = config.position === "left" ? "" : "24px";
- frame.style.left = config.position === "left" ? "24px" : "";
- frame.style.width = config.width || "380px";
- frame.style.maxWidth = "calc(100vw - 24px)";
- frame.style.height = "min(760px, calc(100vh - 112px))";
- frame.style.borderRadius = "28px";
- }
-
- function flushFrameState() {
- if (!frame || !frameLoaded || !frameReady) {
- return;
- }
-
- if (!initSent) {
- initSent = true;
- postToFrame({
- type: "cs-agent:init",
- payload: config,
- });
- }
-
- postToFrame({ type: isOpen ? "cs-agent:open" : "cs-agent:minimize" });
- postToFrame({
- type: "cs-agent:maximized",
- payload: { isMaximized: isMaximized },
- });
- }
-
- function postToFrame(message) {
- if (!frame || !frame.contentWindow) {
- return;
- }
- try {
- frame.contentWindow.postMessage(message, frameUrl.origin);
- } catch (error) {
- console.error("[cs-agent-widget] postMessage failed", error);
- }
- }
-
- function syncFrameVisibility() {
- if (!frame) {
- return;
- }
- clearFrameTimers();
- applyFrameLayout();
- frame.style.display = "block";
-
- if (isOpen) {
- frame.style.visibility = "visible";
- frame.style.pointerEvents = "auto";
- frameHideTimer = window.setTimeout(function () {
- if (!frame) {
- return;
- }
- frame.style.opacity = "1";
- frame.style.transform = "translate3d(0, 0, 0) scale(1)";
- }, 16);
- flushFrameState();
- return;
- }
-
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = isMaximized
- ? "translate3d(0, 10px, 0) scale(0.985)"
- : "translate3d(0, 16px, 0) scale(0.96)";
- frameHideTimer = window.setTimeout(function () {
- if (!frame || isOpen) {
- return;
- }
- frame.style.visibility = "hidden";
- }, animationDuration);
- flushFrameState();
- }
-
- function handleWindowMessage(event) {
- if (!frame || event.source !== frame.contentWindow) {
- return;
- }
-
- var data = event.data || {};
- if (data.type === "cs-agent:ready") {
- frameReady = true;
- flushFrameState();
- return;
- }
-
- if (data.type === "cs-agent:request-minimize") {
- isOpen = false;
- syncFrameVisibility();
- return;
- }
-
- if (data.type === "cs-agent:request-close") {
- destroyFrame();
- return;
- }
-
- if (data.type === "cs-agent:request-toggle-maximize") {
- isMaximized = !isMaximized;
- syncFrameVisibility();
- }
- }
-
- function destroyFrame() {
- if (!frame) {
- return;
- }
- clearFrameTimers();
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = "translate3d(0, 18px, 0) scale(0.94)";
- frame.style.visibility = "hidden";
- frameDestroyTimer = window.setTimeout(function () {
- if (!frame) {
- return;
- }
- if (frame.parentNode) {
- frame.parentNode.removeChild(frame);
- }
- frame = null;
- frameLoaded = false;
- frameReady = false;
- initSent = false;
- isOpen = false;
- isMaximized = false;
- clearFrameTimers();
- }, animationDuration);
- }
-
- function createFrame() {
- if (frame) {
- return frame;
- }
-
- frame = document.createElement("iframe");
- frame.dataset.csAgentWidget = "frame";
- frame.title = config.title || "在线客服";
- frame.src = frameUrl.toString();
- applyFrameLayout();
- frame.style.display = "block";
- frame.style.visibility = "hidden";
- frame.style.pointerEvents = "none";
- frame.style.opacity = "0";
- frame.style.transform = "translate3d(0, 18px, 0) scale(0.96)";
- frame.addEventListener("load", function () {
- frameLoaded = true;
- syncFrameVisibility();
- });
-
- document.body.appendChild(frame);
- return frame;
- }
-
- button.addEventListener("click", function () {
- if (!frame) {
- createFrame();
- }
- isOpen = !isOpen;
- syncFrameVisibility();
- });
-
- window.addEventListener("message", handleWindowMessage);
- document.body.appendChild(button);
-})();
diff --git a/widget/scripts/build-sdk.mjs b/widget/scripts/build-sdk.mjs
deleted file mode 100644
index 8d204c4..0000000
--- a/widget/scripts/build-sdk.mjs
+++ /dev/null
@@ -1,14 +0,0 @@
-import { cp, mkdir } from "node:fs/promises";
-import path from "node:path";
-import { fileURLToPath } from "node:url";
-
-const currentDir = path.dirname(fileURLToPath(import.meta.url));
-const rootDir = path.resolve(currentDir, "..");
-const source = path.join(rootDir, "lib", "widget", "sdk-template.js");
-const targetDir = path.join(rootDir, "public", "sdk");
-const target = path.join(targetDir, "cs-agent-widget.js");
-
-await mkdir(targetDir, { recursive: true });
-await cp(source, target);
-
-console.log(`sdk written to ${target}`);
diff --git a/widget/tsconfig.json b/widget/tsconfig.json
deleted file mode 100644
index 3a13f90..0000000
--- a/widget/tsconfig.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2017",
- "lib": ["dom", "dom.iterable", "esnext"],
- "allowJs": true,
- "skipLibCheck": true,
- "strict": true,
- "noEmit": true,
- "esModuleInterop": true,
- "module": "esnext",
- "moduleResolution": "bundler",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "jsx": "react-jsx",
- "incremental": true,
- "plugins": [
- {
- "name": "next"
- }
- ],
- "paths": {
- "@/*": ["./*"]
- }
- },
- "include": [
- "next-env.d.ts",
- "**/*.ts",
- "**/*.tsx",
- ".next/types/**/*.ts",
- ".next/dev/types/**/*.ts",
- "**/*.mts"
- ],
- "exclude": ["node_modules"]
-}