diff --git a/app/(app)/challenges/[id]/_components/header/index.tsx b/app/(app)/challenges/[id]/_components/header/index.tsx
new file mode 100644
index 0000000..2835939
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/header/index.tsx
@@ -0,0 +1,43 @@
+"use client";
+
+import DifficultyBadge from "@/components/question/difficulty-badge";
+import SolvedStatusBadge from "@/components/question/solved-status-badge";
+import { Badge } from "@/components/ui/badge";
+import { graphql } from "@/gql";
+import { getQuestionSolvedStatus } from "@/lib/solved-status";
+import { useSuspenseQuery } from "@apollo/client/react";
+
+export const QUESTION_HEADER = graphql(`
+ query QuestionHeader($id: ID!) {
+ question(id: $id) {
+ id
+ title
+ difficulty
+ category
+
+ ...QuestionSolvedStatus
+ }
+ }
+`);
+
+export default function Header({ id }: { id: string }) {
+ const { data } = useSuspenseQuery(QUESTION_HEADER, { variables: { id } });
+ const { title, difficulty, category } = data.question;
+
+ const solvedStatus = getQuestionSolvedStatus(data.question);
+
+ return (
+
+ {/* Header */}
+
+ {title}
+
+
+ {category}
+
+
+
+
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/header/skeleton.tsx b/app/(app)/challenges/[id]/_components/header/skeleton.tsx
new file mode 100644
index 0000000..4c7be98
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/header/skeleton.tsx
@@ -0,0 +1,11 @@
+import { Skeleton } from "@/components/ui/skeleton";
+
+export default function HeaderSkeleton() {
+ return (
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/compare-answer.tsx b/app/(app)/challenges/[id]/_components/ide/compare-answer.tsx
new file mode 100644
index 0000000..0bb2c63
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/compare-answer.tsx
@@ -0,0 +1,150 @@
+"use client";
+
+import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
+import { graphql } from "@/gql";
+import { SubmissionStatus } from "@/gql/graphql";
+import { compareCSV, tableToCSV } from "@/lib/csv-utils";
+import { useSuspenseQuery } from "@apollo/client/react";
+import { EditorState, EditorView } from "@uiw/react-codemirror";
+import { AlertCircle, CheckCircle, Pencil, XCircle } from "lucide-react";
+import CodeMirrorMerge from "react-codemirror-merge";
+
+export interface CompareAnswerProps {
+ id: string;
+}
+
+export const COMPARE_ANSWER_QUERY = graphql(`
+ query CompareAnswer($id: ID!) {
+ question(id: $id) {
+ id
+ referenceAnswerResult {
+ columns
+ rows
+ }
+ lastSubmission {
+ id
+ status
+ queryResult {
+ columns
+ rows
+ }
+ error
+ }
+ }
+ }
+`);
+
+const Original = CodeMirrorMerge.Original;
+const Modified = CodeMirrorMerge.Modified;
+
+export default function CompareAnswer({ id }: CompareAnswerProps) {
+ const { data } = useSuspenseQuery(COMPARE_ANSWER_QUERY, {
+ variables: { id },
+ fetchPolicy: "cache-and-network",
+ });
+
+ const { referenceAnswerResult, lastSubmission } = data.question;
+
+ // 如果沒有提交答案
+ if (!lastSubmission) {
+ return (
+
+
+ 您尚未提交答案
+
+ 在左邊的 SQL 編輯器送出你的答案後,你就能在這邊看到與正確答案的比較。
+
+
+ );
+ }
+
+ // 如果有語法錯誤
+ if (lastSubmission.error) {
+ return (
+
+
+ 無法比較答案
+
+ 您的 SQL 查詢有語法錯誤,請先修正錯誤後再進行比較。
+
+
+ );
+ }
+
+ // 如果沒有查詢結果
+ if (!lastSubmission.queryResult) {
+ return (
+
+
+ 無法比較答案
+
+ 您的查詢沒有回傳結果,無法進行比較。
+
+
+ );
+ }
+
+ // 轉換為 CSV 格式
+ const correctAnswerCSV = tableToCSV(
+ referenceAnswerResult.columns,
+ referenceAnswerResult.rows,
+ );
+
+ const myAnswerCSV = tableToCSV(
+ lastSubmission.queryResult.columns,
+ lastSubmission.queryResult.rows,
+ );
+
+ // 如果答案正確,顯示成功訊息
+ if (
+ lastSubmission.status === SubmissionStatus.Success
+ || compareCSV(correctAnswerCSV, myAnswerCSV)
+ ) {
+ return (
+
+
+ 答案正確
+
+ 恭喜!您的查詢結果與正確答案完全一致。
+
+
+ );
+ }
+
+ // 顯示比較界面
+ return (
+
+
+
+ 答案不正確
+
+ 您的查詢結果與正確答案不符,請查看下方的比較結果。
+
+
+
+
+
+ 答案比較 (左側:正確答案,右側:您的答案)
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/correct-answer.tsx b/app/(app)/challenges/[id]/_components/ide/correct-answer.tsx
new file mode 100644
index 0000000..aee1752
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/correct-answer.tsx
@@ -0,0 +1,28 @@
+import AnswerTable from "@/components/answer/table";
+import { graphql } from "@/gql";
+import { useSuspenseQuery } from "@apollo/client/react";
+
+export interface CorrectAnswerProps {
+ id: string;
+}
+
+const CORRECT_ANSWER_QUERY = graphql(`
+ query CorrectAnswer($id: ID!) {
+ question(id: $id) {
+ id
+ referenceAnswerResult {
+ columns
+ rows
+ }
+ }
+ }
+`);
+
+export default function CorrectAnswer({ id }: CorrectAnswerProps) {
+ const { data } = useSuspenseQuery(CORRECT_ANSWER_QUERY, {
+ variables: { id },
+ });
+ const { columns, rows } = data.question.referenceAnswerResult;
+
+ return ;
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/description.tsx b/app/(app)/challenges/[id]/_components/ide/description.tsx
new file mode 100644
index 0000000..5bc2098
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/description.tsx
@@ -0,0 +1,25 @@
+import { graphql } from "@/gql";
+import { useSuspenseQuery } from "@apollo/client/react";
+import { Remark } from "react-remark";
+
+const QUESTION_DESCRIPTION = graphql(`
+ query QuestionDescription($id: ID!) {
+ question(id: $id) {
+ id
+ description
+ }
+ }
+`);
+
+export default function QuestionDescription({ id }: { id: string }) {
+ const { data } = useSuspenseQuery(QUESTION_DESCRIPTION, {
+ variables: { id },
+ });
+ const { description } = data.question;
+
+ return (
+
+ {description}
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/index.tsx b/app/(app)/challenges/[id]/_components/ide/index.tsx
new file mode 100644
index 0000000..cab0c55
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/index.tsx
@@ -0,0 +1,142 @@
+"use client";
+
+import { Skeleton } from "@/components/ui/skeleton";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { graphql } from "@/gql";
+import { useMutation } from "@apollo/client/react";
+import { Suspense, useState } from "react";
+import { toast } from "sonner";
+import { QUESTION_HEADER } from "../header";
+import CompareAnswer, { COMPARE_ANSWER_QUERY } from "./compare-answer";
+import CorrectAnswer from "./correct-answer";
+import QuestionDescription from "./description";
+import MyAnswer, { MY_ANSWER } from "./my-answer";
+import { SQLEditor } from "./sql-editor";
+import SubmissionHistory, { SUBMISSION_HISTORY } from "./submission-history";
+
+export interface PracticeIDEProps {
+ id: string;
+}
+
+const SUBMIT_ANSWER = graphql(`
+ mutation SubmitAnswer($id: ID!, $answer: String!) {
+ submitAnswer(id: $id, answer: $answer) {
+ error
+ }
+ }
+`);
+
+export default function PracticeIDE({ id }: PracticeIDEProps) {
+ const [activeTab, setActiveTab] = useState("my-answer");
+ const [disabled, setDisabled] = useState(false);
+ const [submitAnswer] = useMutation(SUBMIT_ANSWER, {
+ refetchQueries: getRefetchQueries(activeTab),
+ onCompleted(data) {
+ toast.success("答案送出成功", {
+ description: data.submitAnswer.error ? "不過答案可能有語法錯誤,請到「我的答案」查看。" : undefined,
+ });
+ },
+ onError(error) {
+ toast.error("無法送出答案", {
+ description: error.message,
+ });
+ },
+ });
+
+ const handleSubmit = async (answer: string) => {
+ const loading = toast.loading("正在送出答案");
+ await submitAnswer({
+ variables: {
+ id,
+ answer,
+ },
+ });
+ toast.dismiss(loading);
+ };
+
+ return (
+
+ {/* Left */}
+
+ }>
+ {/* Description */}
+
+
+ {/* SQL Editor */}
+ {
+ toast.info("hint", {
+ description: hint,
+ });
+
+ setDisabled(true);
+ setTimeout(() => {
+ setDisabled(false);
+ }, 1000);
+ }}
+ />
+
+
+
+ {/* Answer Tabs */}
+
{
+ setActiveTab(value);
+ }}
+ >
+
+ 我的答案
+ 正確答案
+ 比較答案
+ 提交記錄
+
+
+ }>
+
+
+
+
+ }>
+
+
+
+
+ }>
+
+
+
+
+ }>
+
+
+
+
+
+ );
+}
+
+function getRefetchQueries(activeTab: string) {
+ const baseQueries = [QUESTION_HEADER];
+
+ switch (activeTab) {
+ case "my-answer":
+ return [MY_ANSWER, ...baseQueries];
+ case "correct-answer":
+ return baseQueries;
+ case "compare-answer":
+ return [COMPARE_ANSWER_QUERY, ...baseQueries];
+ case "submission-history":
+ return [SUBMISSION_HISTORY, ...baseQueries];
+ default:
+ return baseQueries;
+ }
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/my-answer.tsx b/app/(app)/challenges/[id]/_components/ide/my-answer.tsx
new file mode 100644
index 0000000..34bb161
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/my-answer.tsx
@@ -0,0 +1,90 @@
+import AnswerTable from "@/components/answer/table";
+import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
+import { graphql } from "@/gql";
+import { SubmissionStatus } from "@/gql/graphql";
+import { useSuspenseQuery } from "@apollo/client/react";
+import { AlertCircle, CheckCircle, Pencil, XCircle } from "lucide-react";
+
+export interface MyAnswerProps {
+ id: string;
+}
+
+export const MY_ANSWER = graphql(`
+ query MyAnswer($id: ID!) {
+ question(id: $id) {
+ id
+ lastSubmission {
+ id
+ status
+ queryResult {
+ columns
+ rows
+ }
+ error
+ }
+ }
+ }
+`);
+
+export default function MyAnswer({ id }: MyAnswerProps) {
+ const { data } = useSuspenseQuery(MY_ANSWER, {
+ variables: { id },
+ fetchPolicy: "cache-and-network",
+ });
+
+ if (!data.question.lastSubmission) {
+ return (
+
+
+ 您尚未提交答案
+
+ 在左邊的 SQL 編輯器送出你的答案後,你就能在這邊看到查詢結果。
+
+
+ );
+ }
+
+ if (data.question.lastSubmission.error) {
+ const { error } = data.question.lastSubmission;
+ return (
+
+
+ 您的答案有語法錯誤
+ {error}
+
+ );
+ }
+
+ return (
+
+ {data.question.lastSubmission.status === SubmissionStatus.Success
+ ? (
+
+
+ 答案正確
+
+ 恭喜!您的 SQL 查詢已成功執行並返回正確結果。
+
+
+ )
+ : (
+
+
+ 答案錯誤
+
+ 您的查詢結果與預期答案不符,請檢查您的 SQL 語句。
+
+
+ )}
+
+ {data.question.lastSubmission.queryResult
+ ? (
+
+ )
+ :
無查詢結果
}
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/sql-editor.tsx b/app/(app)/challenges/[id]/_components/ide/sql-editor.tsx
new file mode 100644
index 0000000..83d01ea
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/sql-editor.tsx
@@ -0,0 +1,48 @@
+import { graphql } from "@/gql";
+import { useSuspenseQuery } from "@apollo/client/react";
+import { AutocompletedSQLEditor } from "../sql-editor";
+
+const SQL_EDITOR_CONTEXT = graphql(`
+ query SqlEditorContext($id: ID!) {
+ question(id: $id) {
+ id
+ database {
+ id
+ ...DatabaseStructure
+ }
+ lastSubmission {
+ id
+ submittedCode
+ }
+ }
+ }
+`);
+
+interface SQLEditorProps {
+ id: string;
+ disabled: boolean;
+ onSubmit: (value: string) => void;
+ onHint: (value: string) => void;
+}
+
+export function SQLEditor({
+ id,
+ disabled,
+ onSubmit,
+ onHint,
+}: SQLEditorProps) {
+ const { data } = useSuspenseQuery(SQL_EDITOR_CONTEXT, {
+ variables: { id },
+ });
+ const { database, lastSubmission } = data.question;
+
+ return (
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/ide/submission-history.tsx b/app/(app)/challenges/[id]/_components/ide/submission-history.tsx
new file mode 100644
index 0000000..2deb474
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/ide/submission-history.tsx
@@ -0,0 +1,158 @@
+import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
+import { Badge } from "@/components/ui/badge";
+import { Button } from "@/components/ui/button";
+import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
+import { graphql } from "@/gql";
+import { SubmissionStatus } from "@/gql/graphql";
+import { useSuspenseQuery } from "@apollo/client/react";
+import { ChevronDown, ChevronRight, Pencil } from "lucide-react";
+import { useState } from "react";
+
+export const SUBMISSION_HISTORY = graphql(`
+ query SubmissionHistory($id: ID!) {
+ question(id: $id) {
+ id
+ userSubmissions {
+ id
+ status
+ submittedCode
+ submittedAt
+ }
+ }
+ }
+`);
+
+interface SubmissionHistoryProps {
+ id: string;
+}
+
+function formatDate(dateString: string) {
+ const date = new Date(dateString);
+ return date.toLocaleString("zh-TW", {
+ year: "numeric",
+ month: "2-digit",
+ day: "2-digit",
+ hour: "2-digit",
+ minute: "2-digit",
+ second: "2-digit",
+ });
+}
+
+function CodePreview({
+ code,
+ maxLength = 100,
+}: {
+ code: string;
+ maxLength?: number;
+}) {
+ const [expanded, setExpanded] = useState(false);
+ const shouldTruncate = code.length > maxLength;
+ const displayCode = expanded || !shouldTruncate ? code : code.slice(0, maxLength) + "...";
+
+ return (
+
+
+ {displayCode}
+
+ {shouldTruncate && (
+
+ )}
+
+ );
+}
+
+export default function SubmissionHistory({ id }: SubmissionHistoryProps) {
+ const { data } = useSuspenseQuery(SUBMISSION_HISTORY, {
+ variables: { id },
+ fetchPolicy: "cache-and-network",
+ });
+
+ const submissions = data?.question?.userSubmissions || [];
+
+ if (submissions.length === 0) {
+ return (
+
+
+ 尚無提交記錄
+
+ 完成第一次提交後,您的記錄將會顯示在這裡
+
+
+ );
+ }
+
+ return (
+
+
+
+
+ 狀態
+ 提交時間
+ 程式碼
+
+
+
+ {submissions.map((submission) => (
+
+
+
+
+
+ {formatDate(submission.submittedAt)}
+
+
+
+
+
+ ))}
+
+
+
+ );
+}
+
+function StatusBadge({ status }: { status: SubmissionStatus }) {
+ switch (status) {
+ case SubmissionStatus.Success:
+ return (
+
+ 通過
+
+ );
+ case SubmissionStatus.Failed:
+ return 錯誤;
+ case SubmissionStatus.Pending:
+ return 執行中;
+ default:
+ return {status};
+ }
+}
diff --git a/app/(app)/challenges/[id]/_components/sql-editor/editor.tsx b/app/(app)/challenges/[id]/_components/sql-editor/editor.tsx
new file mode 100644
index 0000000..4c70d09
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/sql-editor/editor.tsx
@@ -0,0 +1,95 @@
+import { Button } from "@/components/ui/button";
+import { sql, SQLite } from "@codemirror/lang-sql";
+import CodeMirror, { type ReactCodeMirrorRef } from "@uiw/react-codemirror";
+import { Code, Lightbulb, Play } from "lucide-react";
+import { useRef } from "react";
+import { toast } from "sonner";
+
+export interface SQLEditorProps {
+ disabled?: boolean;
+ onSubmit?: (value: string) => void;
+ onHint?: (value: string) => void;
+ schema?: Record;
+ defaultValue?: string;
+}
+
+export default function SQLEditor({
+ onSubmit,
+ onHint,
+ schema,
+ disabled,
+ defaultValue,
+}: SQLEditorProps) {
+ const codeMirrorRef = useRef(null);
+
+ const handleSubmit = () => {
+ onSubmit?.(codeMirrorRef.current?.view?.state?.doc.toString() ?? "");
+ };
+
+ const handleHint = () => {
+ onHint?.(codeMirrorRef.current?.view?.state?.doc.toString() ?? "");
+ };
+
+ const handleFormat = async () => {
+ const { formatDialect, sqlite: formatterSqlite } = await import(
+ "sql-formatter"
+ );
+
+ const currentCode = codeMirrorRef.current?.view?.state.doc.toString() ?? "";
+ const formattedCode = formatDialect(currentCode, {
+ dialect: formatterSqlite,
+ });
+
+ codeMirrorRef.current?.view?.dispatch({
+ changes: { from: 0, to: currentCode.length, insert: formattedCode },
+ });
+
+ toast.success("成功格式化 SQL 程式碼");
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/(app)/challenges/[id]/_components/sql-editor/index.tsx b/app/(app)/challenges/[id]/_components/sql-editor/index.tsx
new file mode 100644
index 0000000..bdeb1b4
--- /dev/null
+++ b/app/(app)/challenges/[id]/_components/sql-editor/index.tsx
@@ -0,0 +1,31 @@
+import { type FragmentType, graphql, readFragment } from "@/gql";
+import SQLEditor, { type SQLEditorProps } from "./editor";
+
+export interface AutocompletedSQLEditorProps extends Omit {
+ structureFragment: FragmentType;
+}
+
+const DATABASE_STRUCTURE = graphql(`
+ fragment DatabaseStructure on Database {
+ id
+ structure {
+ tables {
+ columns
+ name
+ }
+ }
+ }
+`);
+
+export function AutocompletedSQLEditor({
+ structureFragment,
+ ...sqlEditorProps
+}: AutocompletedSQLEditorProps) {
+ const structure = readFragment(DATABASE_STRUCTURE, structureFragment);
+ const schema = structure.structure.tables.reduce((acc, table) => {
+ acc[table.name] = table.columns;
+ return acc;
+ }, {} as Record);
+
+ return ;
+}
diff --git a/app/(app)/challenges/[id]/page.tsx b/app/(app)/challenges/[id]/page.tsx
index b2a9141..3b31b31 100644
--- a/app/(app)/challenges/[id]/page.tsx
+++ b/app/(app)/challenges/[id]/page.tsx
@@ -1,9 +1,29 @@
import type { Metadata } from "next";
+import { Suspense } from "react";
+import Header from "./_components/header";
+import HeaderSkeleton from "./_components/header/skeleton";
+import PracticeIDE from "./_components/ide";
export const metadata: Metadata = {
title: "挑戰題目",
};
-export default function ChallengePage(/* _props: { params: Promise<{ id: string }> } */) {
- return ChallengePage
;
+export default async function ChallengePage({
+ params,
+}: {
+ params: Promise<{ id: string }>;
+}) {
+ const { id } = await params;
+
+ return (
+
+ );
}
diff --git a/app/(app)/challenges/_filter/index.tsx b/app/(app)/challenges/_components/filter/index.tsx
similarity index 100%
rename from app/(app)/challenges/_filter/index.tsx
rename to app/(app)/challenges/_components/filter/index.tsx
diff --git a/app/(app)/challenges/_filter/search.tsx b/app/(app)/challenges/_components/filter/search.tsx
similarity index 100%
rename from app/(app)/challenges/_filter/search.tsx
rename to app/(app)/challenges/_components/filter/search.tsx
diff --git a/app/(app)/challenges/_filter/tag.tsx b/app/(app)/challenges/_components/filter/tag.tsx
similarity index 90%
rename from app/(app)/challenges/_filter/tag.tsx
rename to app/(app)/challenges/_components/filter/tag.tsx
index 96cf81e..da64387 100644
--- a/app/(app)/challenges/_filter/tag.tsx
+++ b/app/(app)/challenges/_components/filter/tag.tsx
@@ -1,12 +1,14 @@
+import { difficultyTranslation } from "@/components/question/difficulty-badge";
+import { solvedStatusTranslation } from "@/components/question/solved-status-badge";
import { Checkbox } from "@/components/ui/checkbox";
import { Label } from "@/components/ui/label";
import { QuestionDifficulty } from "@/gql/graphql";
+import type { SolvedStatus } from "@/lib/solved-status";
import { FilterIcon } from "lucide-react";
-import { type Difficulty, difficultyTranslation, type SolvedStatus, solvedStatusTranslation } from "../model";
export interface TagState {
solvedStatus: SolvedStatus[];
- difficulty: Difficulty[];
+ difficulty: QuestionDifficulty[];
}
export interface TagFilterSectionProps {
@@ -22,11 +24,11 @@ export default function TagFilterSection({
return value.solvedStatus.includes(solvedStatus);
};
- const getDifficulty = (difficulty: Difficulty) => {
+ const getDifficulty = (difficulty: QuestionDifficulty) => {
return value.difficulty.includes(difficulty);
};
- const handleDifficultyChange = (difficulty: Difficulty) => {
+ const handleDifficultyChange = (difficulty: QuestionDifficulty) => {
return (checked: boolean) => {
onChange({
...value,
diff --git a/app/(app)/challenges/_header/index.tsx b/app/(app)/challenges/_components/header/index.tsx
similarity index 100%
rename from app/(app)/challenges/_header/index.tsx
rename to app/(app)/challenges/_components/header/index.tsx
diff --git a/app/(app)/challenges/_header/skeleton.tsx b/app/(app)/challenges/_components/header/skeleton.tsx
similarity index 100%
rename from app/(app)/challenges/_header/skeleton.tsx
rename to app/(app)/challenges/_components/header/skeleton.tsx
diff --git a/app/(app)/challenges/content.tsx b/app/(app)/challenges/_components/questions-list.tsx
similarity index 83%
rename from app/(app)/challenges/content.tsx
rename to app/(app)/challenges/_components/questions-list.tsx
index 8947079..fc8c024 100644
--- a/app/(app)/challenges/content.tsx
+++ b/app/(app)/challenges/_components/questions-list.tsx
@@ -2,17 +2,16 @@
import { useDebouncedValue } from "foxact/use-debounced-value";
import { Suspense, useState } from "react";
-import type { TagState } from "./_filter/tag";
+import type { TagState } from "./filter/tag";
+import QuestionCard from "@/components/question/question-card";
import { Button } from "@/components/ui/button";
import { Skeleton } from "@/components/ui/skeleton";
import { graphql } from "@/gql";
import { QuestionDifficulty, type QuestionWhereInput } from "@/gql/graphql";
+import { getQuestionSolvedStatus, type SolvedStatus } from "@/lib/solved-status";
import { useSuspenseQuery } from "@apollo/client/react";
-import FilterSection from "./_filter";
-import QuestionCard from "./_question";
-import { getQuestionSolvedStatus } from "./_question/solved-status";
-import type { SolvedStatus } from "./model";
+import FilterSection from "./filter";
export const LIST_QUESTIONS = graphql(`
query ListQuestions($where: QuestionWhereInput, $after: Cursor) {
@@ -32,7 +31,7 @@ export const LIST_QUESTIONS = graphql(`
}
`);
-export default function ChallengePageContent() {
+export default function QuestionsList() {
const [search, setSearch] = useState("");
const [tags, setTags] = useState({
solvedStatus: ["solved", "unsolved", "not-tried"],
@@ -47,18 +46,20 @@ export default function ChallengePageContent() {
const deferredSearch = useDebouncedValue(search, 200);
const where: QuestionWhereInput = {
- or: [
- {
- titleContainsFold: deferredSearch,
- },
- {
- descriptionContainsFold: deferredSearch,
- },
- {
- categoryContainsFold: deferredSearch,
- },
- ],
- difficultyIn: tags.difficulty,
+ or: deferredSearch
+ ? [
+ {
+ titleContainsFold: deferredSearch,
+ },
+ {
+ descriptionContainsFold: deferredSearch,
+ },
+ {
+ categoryContainsFold: deferredSearch,
+ },
+ ]
+ : undefined,
+ difficultyIn: tags.difficulty.length > 0 ? tags.difficulty : undefined,
};
return (
diff --git a/app/(app)/challenges/model.ts b/app/(app)/challenges/model.ts
deleted file mode 100644
index 925e14e..0000000
--- a/app/(app)/challenges/model.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { QuestionDifficulty } from "@/gql/graphql";
-
-/**
- * 解題狀態
- */
-export type SolvedStatus = "solved" | "unsolved" | "not-tried";
-
-/**
- * 難度
- */
-export type Difficulty = QuestionDifficulty;
-
-export const solvedStatusTranslation: Record = {
- solved: "✅ 已經解決",
- unsolved: "尚未解決",
- "not-tried": "還沒嘗試",
-};
-
-export const difficultyTranslation: Record = {
- [QuestionDifficulty.Easy]: "簡單",
- [QuestionDifficulty.Medium]: "中等",
- [QuestionDifficulty.Hard]: "困難",
- [QuestionDifficulty.Unspecified]: "未指定",
-};
diff --git a/app/(app)/challenges/page.tsx b/app/(app)/challenges/page.tsx
index c416b3f..ad1b3b6 100644
--- a/app/(app)/challenges/page.tsx
+++ b/app/(app)/challenges/page.tsx
@@ -1,8 +1,8 @@
import type { Metadata } from "next";
import { Suspense } from "react";
-import Header from "./_header";
-import HeaderSkeleton from "./_header/skeleton";
-import ChallengePageContent from "./content";
+import Header from "./_components/header";
+import HeaderSkeleton from "./_components/header/skeleton";
+import QuestionsList from "./_components/questions-list";
export const metadata: Metadata = {
title: "挑戰題目",
@@ -15,7 +15,7 @@ export default function ChallengesPage() {
-
+
);
}
diff --git a/app/(app)/statistics/board/completed-questions.tsx b/app/(app)/statistics/_components/board/completed-questions.tsx
similarity index 100%
rename from app/(app)/statistics/board/completed-questions.tsx
rename to app/(app)/statistics/_components/board/completed-questions.tsx
diff --git a/app/(app)/statistics/board/index.tsx b/app/(app)/statistics/_components/board/index.tsx
similarity index 100%
rename from app/(app)/statistics/board/index.tsx
rename to app/(app)/statistics/_components/board/index.tsx
diff --git a/app/(app)/statistics/statistics/points.tsx b/app/(app)/statistics/_components/statistics/points.tsx
similarity index 100%
rename from app/(app)/statistics/statistics/points.tsx
rename to app/(app)/statistics/_components/statistics/points.tsx
diff --git a/app/(app)/statistics/statistics/resolved-questions.tsx b/app/(app)/statistics/_components/statistics/resolved-questions.tsx
similarity index 100%
rename from app/(app)/statistics/statistics/resolved-questions.tsx
rename to app/(app)/statistics/_components/statistics/resolved-questions.tsx
diff --git a/app/(app)/statistics/page.tsx b/app/(app)/statistics/page.tsx
index 91c238a..3b99410 100644
--- a/app/(app)/statistics/page.tsx
+++ b/app/(app)/statistics/page.tsx
@@ -2,9 +2,9 @@ import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
import { Pickaxe } from "lucide-react";
import type { Metadata } from "next";
import { Suspense } from "react";
-import Board from "./board";
-import Points from "./statistics/points";
-import ResolvedQuestions from "./statistics/resolved-questions";
+import Board from "./_components/board";
+import Points from "./_components/statistics/points";
+import ResolvedQuestions from "./_components/statistics/resolved-questions";
export const metadata: Metadata = {
title: "統計資料",
@@ -33,7 +33,14 @@ export default function StatisticsPage() {
+
+
+ 排行榜
@@ -43,13 +50,6 @@ export default function StatisticsPage() {
-
-
);
diff --git a/components/answer/table.tsx b/components/answer/table.tsx
new file mode 100644
index 0000000..3ead464
--- /dev/null
+++ b/components/answer/table.tsx
@@ -0,0 +1,38 @@
+import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table";
+
+export interface AnswerTableProps {
+ columns: string[];
+ rows: string[][];
+}
+
+export default function AnswerTable({ columns, rows }: AnswerTableProps) {
+ return (
+
+
+
+ {columns.map((column) => {column})}
+
+
+
+
+ {rows.length > 0
+ ? rows.map((row, rowIndex) => (
+
+ {row.map((cell, cellIndex) => (
+
+ {cell}
+
+ ))}
+
+ ))
+ : (
+
+
+ 查詢沒有回傳任何資料列
+
+
+ )}
+
+
+ );
+}
diff --git a/components/app-navbar.tsx b/components/app-navbar.tsx
index 7ae54cd..4409f36 100644
--- a/components/app-navbar.tsx
+++ b/components/app-navbar.tsx
@@ -22,7 +22,6 @@ function NavItem({ icon, label, active = false }: NavItemProps) {
className={cn(
`
flex h-auto w-full items-center justify-start gap-3 rounded px-3 py-2
- text-sm
md:w-auto md:justify-center
`,
active && "bg-primary text-primary-foreground",
diff --git a/components/question/difficulty-badge.tsx b/components/question/difficulty-badge.tsx
new file mode 100644
index 0000000..d729e77
--- /dev/null
+++ b/components/question/difficulty-badge.tsx
@@ -0,0 +1,28 @@
+import { QuestionDifficulty } from "@/gql/graphql";
+import { Badge } from "../ui/badge";
+
+const badgeColor: Record = {
+ [QuestionDifficulty.Easy]: "bg-green-800",
+ [QuestionDifficulty.Medium]: "bg-yellow-800",
+ [QuestionDifficulty.Hard]: "bg-red-800",
+ [QuestionDifficulty.Unspecified]: "bg-gray-800",
+};
+
+export const difficultyTranslation: Record = {
+ [QuestionDifficulty.Easy]: "簡單",
+ [QuestionDifficulty.Medium]: "中等",
+ [QuestionDifficulty.Hard]: "困難",
+ [QuestionDifficulty.Unspecified]: "未指定",
+};
+
+export default function DifficultyBadge({
+ difficulty,
+}: {
+ difficulty: QuestionDifficulty;
+}) {
+ return (
+
+ {difficultyTranslation[difficulty]}
+
+ );
+}
diff --git a/app/(app)/challenges/_question/index.tsx b/components/question/question-card.tsx
similarity index 64%
rename from app/(app)/challenges/_question/index.tsx
rename to components/question/question-card.tsx
index 322dbe7..d49fa9f 100644
--- a/app/(app)/challenges/_question/index.tsx
+++ b/components/question/question-card.tsx
@@ -1,10 +1,10 @@
import { Badge } from "@/components/ui/badge";
import { type FragmentType, graphql, readFragment } from "@/gql";
-import { QuestionDifficulty } from "@/gql/graphql";
+import { getQuestionSolvedStatus } from "@/lib/solved-status";
import { SwordIcon } from "lucide-react";
import Link from "next/link";
-import { difficultyTranslation, type SolvedStatus, solvedStatusTranslation } from "../model";
-import { getQuestionSolvedStatus } from "./solved-status";
+import DifficultyBadge from "./difficulty-badge";
+import SolvedStatusBadge from "./solved-status-badge";
const QUESTION_CARD_FRAGMENT = graphql(`
fragment QuestionCard on Question {
@@ -18,19 +18,6 @@ const QUESTION_CARD_FRAGMENT = graphql(`
}
`);
-const solvedStatusColor: Record = {
- solved: "bg-green-800",
- unsolved: "bg-yellow-800",
- "not-tried": "bg-gray-800",
-};
-
-const badgeColor: Record = {
- [QuestionDifficulty.Easy]: "bg-green-800",
- [QuestionDifficulty.Medium]: "bg-yellow-800",
- [QuestionDifficulty.Hard]: "bg-red-800",
- [QuestionDifficulty.Unspecified]: "bg-gray-800",
-};
-
export default function QuestionCard({
fragment,
}: {
@@ -49,12 +36,8 @@ export default function QuestionCard({
{descriptionFirstLine}
-
- {solvedStatusTranslation[solvedStatus]}
-
-
- {difficultyTranslation[question.difficulty]}
-
+
+
{question.category}
diff --git a/components/question/solved-status-badge.tsx b/components/question/solved-status-badge.tsx
new file mode 100644
index 0000000..b2bc1dd
--- /dev/null
+++ b/components/question/solved-status-badge.tsx
@@ -0,0 +1,26 @@
+import type { SolvedStatus } from "@/lib/solved-status";
+import { Badge } from "../ui/badge";
+
+const solvedStatusColor: Record = {
+ solved: "bg-green-800",
+ unsolved: "bg-yellow-800",
+ "not-tried": "bg-gray-800",
+};
+
+export const solvedStatusTranslation: Record = {
+ solved: "✅ 已經解決",
+ unsolved: "尚未解決",
+ "not-tried": "還沒嘗試",
+};
+
+export default function SolvedStatusBadge({
+ solvedStatus,
+}: {
+ solvedStatus: SolvedStatus;
+}) {
+ return (
+
+ {solvedStatusTranslation[solvedStatus]}
+
+ );
+}
diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx
new file mode 100644
index 0000000..02a9354
--- /dev/null
+++ b/components/ui/tabs.tsx
@@ -0,0 +1,84 @@
+"use client";
+
+import * as TabsPrimitive from "@radix-ui/react-tabs";
+import * as React from "react";
+
+import { cn } from "@/lib/utils";
+
+function Tabs({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function TabsList({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function TabsTrigger({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function TabsContent({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export { Tabs, TabsContent, TabsList, TabsTrigger };
diff --git a/gql/gql.ts b/gql/gql.ts
index d66b51d..d533d4d 100644
--- a/gql/gql.ts
+++ b/gql/gql.ts
@@ -14,25 +14,43 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
* Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size
*/
type Documents = {
+ "\n query QuestionHeader($id: ID!) {\n question(id: $id) {\n id\n title\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n }\n": typeof types.QuestionHeaderDocument,
+ "\n query CompareAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n": typeof types.CompareAnswerDocument,
+ "\n query CorrectAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n }\n }\n": typeof types.CorrectAnswerDocument,
+ "\n query QuestionDescription($id: ID!) {\n question(id: $id) {\n id\n description\n }\n }\n": typeof types.QuestionDescriptionDocument,
+ "\n mutation SubmitAnswer($id: ID!, $answer: String!) {\n submitAnswer(id: $id, answer: $answer) {\n error\n }\n }\n": typeof types.SubmitAnswerDocument,
+ "\n query MyAnswer($id: ID!) {\n question(id: $id) {\n id\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n": typeof types.MyAnswerDocument,
+ "\n query SqlEditorContext($id: ID!) {\n question(id: $id) {\n id\n database {\n id\n ...DatabaseStructure\n }\n lastSubmission {\n id\n submittedCode\n }\n }\n }\n": typeof types.SqlEditorContextDocument,
+ "\n query SubmissionHistory($id: ID!) {\n question(id: $id) {\n id\n userSubmissions {\n id\n status\n submittedCode\n submittedAt\n }\n }\n }\n": typeof types.SubmissionHistoryDocument,
+ "\n fragment DatabaseStructure on Database {\n id\n structure {\n tables {\n columns\n name\n }\n }\n }\n": typeof types.DatabaseStructureFragmentDoc,
"\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n": typeof types.ChallengeStatisticsDocument,
- "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n": typeof types.QuestionCardFragmentDoc,
- "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n": typeof types.QuestionSolvedStatusFragmentDoc,
"\n query ListQuestions($where: QuestionWhereInput, $after: Cursor) {\n questions(where: $where, first: 10, after: $after) {\n edges {\n node {\n id\n ...QuestionCard\n ...QuestionSolvedStatus\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n": typeof types.ListQuestionsDocument,
"\n query CompletedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n": typeof types.CompletedQuestionsDocument,
"\n query Points {\n me {\n id\n totalPoints\n\n points(first: 5) {\n edges {\n node {\n id\n ...PointFragment\n }\n }\n }\n }\n }\n": typeof types.PointsDocument,
"\n fragment PointFragment on Point {\n description\n points\n }\n": typeof types.PointFragmentFragmentDoc,
"\n query ResolvedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n": typeof types.ResolvedQuestionsDocument,
+ "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n": typeof types.QuestionCardFragmentDoc,
+ "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n": typeof types.QuestionSolvedStatusFragmentDoc,
"\n query BasicUserInfo {\n me {\n id\n name\n email\n avatar\n\n group {\n name\n }\n }\n }\n": typeof types.BasicUserInfoDocument,
};
const documents: Documents = {
+ "\n query QuestionHeader($id: ID!) {\n question(id: $id) {\n id\n title\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n }\n": types.QuestionHeaderDocument,
+ "\n query CompareAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n": types.CompareAnswerDocument,
+ "\n query CorrectAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n }\n }\n": types.CorrectAnswerDocument,
+ "\n query QuestionDescription($id: ID!) {\n question(id: $id) {\n id\n description\n }\n }\n": types.QuestionDescriptionDocument,
+ "\n mutation SubmitAnswer($id: ID!, $answer: String!) {\n submitAnswer(id: $id, answer: $answer) {\n error\n }\n }\n": types.SubmitAnswerDocument,
+ "\n query MyAnswer($id: ID!) {\n question(id: $id) {\n id\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n": types.MyAnswerDocument,
+ "\n query SqlEditorContext($id: ID!) {\n question(id: $id) {\n id\n database {\n id\n ...DatabaseStructure\n }\n lastSubmission {\n id\n submittedCode\n }\n }\n }\n": types.SqlEditorContextDocument,
+ "\n query SubmissionHistory($id: ID!) {\n question(id: $id) {\n id\n userSubmissions {\n id\n status\n submittedCode\n submittedAt\n }\n }\n }\n": types.SubmissionHistoryDocument,
+ "\n fragment DatabaseStructure on Database {\n id\n structure {\n tables {\n columns\n name\n }\n }\n }\n": types.DatabaseStructureFragmentDoc,
"\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n": types.ChallengeStatisticsDocument,
- "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n": types.QuestionCardFragmentDoc,
- "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n": types.QuestionSolvedStatusFragmentDoc,
"\n query ListQuestions($where: QuestionWhereInput, $after: Cursor) {\n questions(where: $where, first: 10, after: $after) {\n edges {\n node {\n id\n ...QuestionCard\n ...QuestionSolvedStatus\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n": types.ListQuestionsDocument,
"\n query CompletedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n": types.CompletedQuestionsDocument,
"\n query Points {\n me {\n id\n totalPoints\n\n points(first: 5) {\n edges {\n node {\n id\n ...PointFragment\n }\n }\n }\n }\n }\n": types.PointsDocument,
"\n fragment PointFragment on Point {\n description\n points\n }\n": types.PointFragmentFragmentDoc,
"\n query ResolvedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n": types.ResolvedQuestionsDocument,
+ "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n": types.QuestionCardFragmentDoc,
+ "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n": types.QuestionSolvedStatusFragmentDoc,
"\n query BasicUserInfo {\n me {\n id\n name\n email\n avatar\n\n group {\n name\n }\n }\n }\n": types.BasicUserInfoDocument,
};
@@ -53,15 +71,43 @@ export function graphql(source: string): unknown;
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
-export function graphql(source: "\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n"): (typeof documents)["\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n"];
+export function graphql(source: "\n query QuestionHeader($id: ID!) {\n question(id: $id) {\n id\n title\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n }\n"): (typeof documents)["\n query QuestionHeader($id: ID!) {\n question(id: $id) {\n id\n title\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
-export function graphql(source: "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n"): (typeof documents)["\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n"];
+export function graphql(source: "\n query CompareAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n"): (typeof documents)["\n query CompareAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
-export function graphql(source: "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n"): (typeof documents)["\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n"];
+export function graphql(source: "\n query CorrectAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n }\n }\n"): (typeof documents)["\n query CorrectAnswer($id: ID!) {\n question(id: $id) {\n id\n referenceAnswerResult {\n columns\n rows\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query QuestionDescription($id: ID!) {\n question(id: $id) {\n id\n description\n }\n }\n"): (typeof documents)["\n query QuestionDescription($id: ID!) {\n question(id: $id) {\n id\n description\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n mutation SubmitAnswer($id: ID!, $answer: String!) {\n submitAnswer(id: $id, answer: $answer) {\n error\n }\n }\n"): (typeof documents)["\n mutation SubmitAnswer($id: ID!, $answer: String!) {\n submitAnswer(id: $id, answer: $answer) {\n error\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query MyAnswer($id: ID!) {\n question(id: $id) {\n id\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n"): (typeof documents)["\n query MyAnswer($id: ID!) {\n question(id: $id) {\n id\n lastSubmission {\n id\n status\n queryResult {\n columns\n rows\n }\n error\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query SqlEditorContext($id: ID!) {\n question(id: $id) {\n id\n database {\n id\n ...DatabaseStructure\n }\n lastSubmission {\n id\n submittedCode\n }\n }\n }\n"): (typeof documents)["\n query SqlEditorContext($id: ID!) {\n question(id: $id) {\n id\n database {\n id\n ...DatabaseStructure\n }\n lastSubmission {\n id\n submittedCode\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query SubmissionHistory($id: ID!) {\n question(id: $id) {\n id\n userSubmissions {\n id\n status\n submittedCode\n submittedAt\n }\n }\n }\n"): (typeof documents)["\n query SubmissionHistory($id: ID!) {\n question(id: $id) {\n id\n userSubmissions {\n id\n status\n submittedCode\n submittedAt\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n fragment DatabaseStructure on Database {\n id\n structure {\n tables {\n columns\n name\n }\n }\n }\n"): (typeof documents)["\n fragment DatabaseStructure on Database {\n id\n structure {\n tables {\n columns\n name\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n"): (typeof documents)["\n query ChallengeStatistics {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n attemptedQuestions\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -82,6 +128,14 @@ export function graphql(source: "\n fragment PointFragment on Point {\n desc
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n query ResolvedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n"): (typeof documents)["\n query ResolvedQuestions {\n me {\n id\n submissionStatistics {\n totalQuestions\n solvedQuestions\n }\n }\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n"): (typeof documents)["\n fragment QuestionCard on Question {\n id\n title\n description\n difficulty\n category\n\n ...QuestionSolvedStatus\n }\n"];
+/**
+ * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
+ */
+export function graphql(source: "\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n"): (typeof documents)["\n fragment QuestionSolvedStatus on Question {\n solved\n attempted\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
diff --git a/gql/graphql.ts b/gql/graphql.ts
index e0c5da2..661276f 100644
--- a/gql/graphql.ts
+++ b/gql/graphql.ts
@@ -103,6 +103,18 @@ export type Database = Node & {
/** SQL schema */
schema: Scalars['String']['output'];
slug: Scalars['String']['output'];
+ structure: DatabaseStructure;
+};
+
+export type DatabaseStructure = {
+ __typename?: 'DatabaseStructure';
+ tables: Array;
+};
+
+export type DatabaseTable = {
+ __typename?: 'DatabaseTable';
+ columns: Array;
+ name: Scalars['String']['output'];
};
/**
@@ -806,6 +818,8 @@ export type Question = Node & {
/** Question difficulty, e.g. 'easy' */
difficulty: QuestionDifficulty;
id: Scalars['ID']['output'];
+ /** Get the last submission for this question. */
+ lastSubmission?: Maybe;
/** Reference answer */
referenceAnswer: Scalars['String']['output'];
referenceAnswerResult: SqlExecutionResult;
@@ -814,7 +828,7 @@ export type Question = Node & {
submissions: SubmissionConnection;
/** Question title */
title: Scalars['String']['output'];
- /** List of your submissions for this question. */
+ /** List of your submissions for this question, ordered by submitted at descending. */
userSubmissions: Array;
};
@@ -1452,17 +1466,75 @@ export type UserWhereInput = {
updatedAtNotIn?: InputMaybe>;
};
-export type ChallengeStatisticsQueryVariables = Exact<{ [key: string]: never; }>;
+export type QuestionHeaderQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
-export type ChallengeStatisticsQuery = { __typename?: 'Query', me: { __typename?: 'User', id: string, submissionStatistics: { __typename?: 'SubmissionStatistics', totalQuestions: number, solvedQuestions: number, attemptedQuestions: number } } };
+export type QuestionHeaderQuery = { __typename?: 'Query', question: (
+ { __typename?: 'Question', id: string, title: string, difficulty: QuestionDifficulty, category: string }
+ & { ' $fragmentRefs'?: { 'QuestionSolvedStatusFragment': QuestionSolvedStatusFragment } }
+ ) };
-export type QuestionCardFragment = (
- { __typename?: 'Question', id: string, title: string, description: string, difficulty: QuestionDifficulty, category: string }
- & { ' $fragmentRefs'?: { 'QuestionSolvedStatusFragment': QuestionSolvedStatusFragment } }
-) & { ' $fragmentName'?: 'QuestionCardFragment' };
+export type CompareAnswerQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
-export type QuestionSolvedStatusFragment = { __typename?: 'Question', solved: boolean, attempted: boolean } & { ' $fragmentName'?: 'QuestionSolvedStatusFragment' };
+
+export type CompareAnswerQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, referenceAnswerResult: { __typename?: 'SQLExecutionResult', columns: Array, rows: Array> }, lastSubmission?: { __typename?: 'Submission', id: string, status: SubmissionStatus, error?: string | null, queryResult?: { __typename?: 'UserSQLExecutionResult', columns: Array, rows: Array> } | null } | null } };
+
+export type CorrectAnswerQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type CorrectAnswerQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, referenceAnswerResult: { __typename?: 'SQLExecutionResult', columns: Array, rows: Array> } } };
+
+export type QuestionDescriptionQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type QuestionDescriptionQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, description: string } };
+
+export type SubmitAnswerMutationVariables = Exact<{
+ id: Scalars['ID']['input'];
+ answer: Scalars['String']['input'];
+}>;
+
+
+export type SubmitAnswerMutation = { __typename?: 'Mutation', submitAnswer: { __typename?: 'SubmissionResult', error?: string | null } };
+
+export type MyAnswerQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type MyAnswerQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, lastSubmission?: { __typename?: 'Submission', id: string, status: SubmissionStatus, error?: string | null, queryResult?: { __typename?: 'UserSQLExecutionResult', columns: Array, rows: Array> } | null } | null } };
+
+export type SqlEditorContextQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type SqlEditorContextQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, database: (
+ { __typename?: 'Database', id: string }
+ & { ' $fragmentRefs'?: { 'DatabaseStructureFragment': DatabaseStructureFragment } }
+ ), lastSubmission?: { __typename?: 'Submission', id: string, submittedCode: string } | null } };
+
+export type SubmissionHistoryQueryVariables = Exact<{
+ id: Scalars['ID']['input'];
+}>;
+
+
+export type SubmissionHistoryQuery = { __typename?: 'Query', question: { __typename?: 'Question', id: string, userSubmissions: Array<{ __typename?: 'Submission', id: string, status: SubmissionStatus, submittedCode: string, submittedAt: string }> } };
+
+export type DatabaseStructureFragment = { __typename?: 'Database', id: string, structure: { __typename?: 'DatabaseStructure', tables: Array<{ __typename?: 'DatabaseTable', columns: Array, name: string }> } } & { ' $fragmentName'?: 'DatabaseStructureFragment' };
+
+export type ChallengeStatisticsQueryVariables = Exact<{ [key: string]: never; }>;
+
+
+export type ChallengeStatisticsQuery = { __typename?: 'Query', me: { __typename?: 'User', id: string, submissionStatistics: { __typename?: 'SubmissionStatistics', totalQuestions: number, solvedQuestions: number, attemptedQuestions: number } } };
export type ListQuestionsQueryVariables = Exact<{
where?: InputMaybe;
@@ -1495,14 +1567,30 @@ export type ResolvedQuestionsQueryVariables = Exact<{ [key: string]: never; }>;
export type ResolvedQuestionsQuery = { __typename?: 'Query', me: { __typename?: 'User', id: string, submissionStatistics: { __typename?: 'SubmissionStatistics', totalQuestions: number, solvedQuestions: number } } };
+export type QuestionCardFragment = (
+ { __typename?: 'Question', id: string, title: string, description: string, difficulty: QuestionDifficulty, category: string }
+ & { ' $fragmentRefs'?: { 'QuestionSolvedStatusFragment': QuestionSolvedStatusFragment } }
+) & { ' $fragmentName'?: 'QuestionCardFragment' };
+
+export type QuestionSolvedStatusFragment = { __typename?: 'Question', solved: boolean, attempted: boolean } & { ' $fragmentName'?: 'QuestionSolvedStatusFragment' };
+
export type BasicUserInfoQueryVariables = Exact<{ [key: string]: never; }>;
export type BasicUserInfoQuery = { __typename?: 'Query', me: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, group: { __typename?: 'Group', name: string } } };
+export const DatabaseStructureFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DatabaseStructure"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Database"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"structure"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const PointFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PointFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Point"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"points"}}]}}]} as unknown as DocumentNode;
export const QuestionSolvedStatusFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionSolvedStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"solved"}},{"kind":"Field","name":{"kind":"Name","value":"attempted"}}]}}]} as unknown as DocumentNode;
export const QuestionCardFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionCard"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"difficulty"}},{"kind":"Field","name":{"kind":"Name","value":"category"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"QuestionSolvedStatus"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionSolvedStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"solved"}},{"kind":"Field","name":{"kind":"Name","value":"attempted"}}]}}]} as unknown as DocumentNode;
-export const PointFragmentFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PointFragment"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Point"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"points"}}]}}]} as unknown as DocumentNode;
+export const QuestionHeaderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"QuestionHeader"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"difficulty"}},{"kind":"Field","name":{"kind":"Name","value":"category"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"QuestionSolvedStatus"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionSolvedStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"solved"}},{"kind":"Field","name":{"kind":"Name","value":"attempted"}}]}}]} as unknown as DocumentNode;
+export const CompareAnswerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CompareAnswer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"referenceAnswerResult"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"rows"}}]}},{"kind":"Field","name":{"kind":"Name","value":"lastSubmission"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"queryResult"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"rows"}}]}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const CorrectAnswerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CorrectAnswer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"referenceAnswerResult"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"rows"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const QuestionDescriptionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"QuestionDescription"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]} as unknown as DocumentNode;
+export const SubmitAnswerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SubmitAnswer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"answer"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"submitAnswer"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"answer"},"value":{"kind":"Variable","name":{"kind":"Name","value":"answer"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]} as unknown as DocumentNode;
+export const MyAnswerDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MyAnswer"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"lastSubmission"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"queryResult"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"rows"}}]}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const SqlEditorContextDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SqlEditorContext"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"database"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"DatabaseStructure"}}]}},{"kind":"Field","name":{"kind":"Name","value":"lastSubmission"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submittedCode"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"DatabaseStructure"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Database"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"structure"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"columns"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const SubmissionHistoryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SubmissionHistory"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"question"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"userSubmissions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"submittedCode"}},{"kind":"Field","name":{"kind":"Name","value":"submittedAt"}}]}}]}}]}}]} as unknown as DocumentNode;
export const ChallengeStatisticsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ChallengeStatistics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"me"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submissionStatistics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalQuestions"}},{"kind":"Field","name":{"kind":"Name","value":"solvedQuestions"}},{"kind":"Field","name":{"kind":"Name","value":"attemptedQuestions"}}]}}]}}]}}]} as unknown as DocumentNode;
export const ListQuestionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ListQuestions"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"where"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"QuestionWhereInput"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"after"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Cursor"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"questions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"Variable","name":{"kind":"Name","value":"where"}}},{"kind":"Argument","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"after"},"value":{"kind":"Variable","name":{"kind":"Name","value":"after"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"QuestionCard"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"QuestionSolvedStatus"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionSolvedStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"solved"}},{"kind":"Field","name":{"kind":"Name","value":"attempted"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"QuestionCard"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Question"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"difficulty"}},{"kind":"Field","name":{"kind":"Name","value":"category"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"QuestionSolvedStatus"}}]}}]} as unknown as DocumentNode;
export const CompletedQuestionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CompletedQuestions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"me"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submissionStatistics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalQuestions"}},{"kind":"Field","name":{"kind":"Name","value":"solvedQuestions"}}]}}]}}]}}]} as unknown as DocumentNode;
diff --git a/lib/apollo.rsc.ts b/lib/apollo.rsc.ts
new file mode 100644
index 0000000..9f319a4
--- /dev/null
+++ b/lib/apollo.rsc.ts
@@ -0,0 +1,10 @@
+import { registerApolloClient } from "@apollo/client-integration-nextjs";
+import { headers } from "next/headers";
+import { makeClient } from "./apollo";
+
+export const { getClient, query, PreloadQuery } = registerApolloClient(async () => {
+ const header = await headers();
+ const token = header.get("Authorization")?.split(" ")[1];
+
+ return makeClient({ token });
+});
diff --git a/lib/csv-utils.ts b/lib/csv-utils.ts
new file mode 100644
index 0000000..47a8b96
--- /dev/null
+++ b/lib/csv-utils.ts
@@ -0,0 +1,48 @@
+/**
+ * 將表格數據轉換為 CSV 格式
+ */
+export function tableToCSV(columns: string[], rows: string[][]): string {
+ // 轉義 CSV 欄位中的特殊字符
+ const escapeCSVField = (field: string): string => {
+ // 如果欄位包含逗號、雙引號、換行符或回車符,需要用雙引號包圍
+ if (field.includes(",") || field.includes("\"") || field.includes("\n") || field.includes("\r")) {
+ // 將雙引號轉義為兩個雙引號
+ return `"${field.replace(/"/g, "\"\"")}"`;
+ }
+ return field;
+ };
+
+ // 處理標題行
+ const headerRow = columns.map(escapeCSVField).join(",");
+
+ // 處理數據行
+ const dataRows = rows.map(row => row.map(escapeCSVField).join(","));
+
+ // 組合所有行
+ return [headerRow, ...dataRows].join("\n");
+}
+
+/**
+ * 比較兩個 CSV 字符串是否相等(忽略行順序)
+ */
+export function compareCSV(csv1: string, csv2: string): boolean {
+ // 分割成行並排序(除了標題行)
+ const lines1 = csv1.trim().split("\n");
+ const lines2 = csv2.trim().split("\n");
+
+ // 如果行數不同,直接返回 false
+ if (lines1.length !== lines2.length) {
+ return false;
+ }
+
+ // 比較標題行
+ if (lines1[0] !== lines2[0]) {
+ return false;
+ }
+
+ // 比較數據行(排序後比較,因為 SQL 結果順序可能不同)
+ const dataLines1 = lines1.slice(1).sort();
+ const dataLines2 = lines2.slice(1).sort();
+
+ return dataLines1.every((line, index) => line === dataLines2[index]);
+}
diff --git a/app/(app)/challenges/_question/solved-status.ts b/lib/solved-status.ts
similarity index 89%
rename from app/(app)/challenges/_question/solved-status.ts
rename to lib/solved-status.ts
index 975d931..07f5852 100644
--- a/app/(app)/challenges/_question/solved-status.ts
+++ b/lib/solved-status.ts
@@ -1,5 +1,6 @@
import { type FragmentType, graphql, readFragment } from "@/gql";
-import type { SolvedStatus } from "../model";
+
+export type SolvedStatus = "solved" | "unsolved" | "not-tried";
export const QUESTION_SOLVED_STATUS_FRAGMENT = graphql(`
fragment QuestionSolvedStatus on Question {
diff --git a/package.json b/package.json
index faf0c59..7433a9b 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@apollo/client": "4.0.5",
"@apollo/client-integration-nextjs": "^0.13.1",
"@bprogress/next": "^3.2.12",
+ "@codemirror/lang-sql": "^6.10.0",
"@graphql-codegen/client-preset": "^5.0.1",
"@hookform/resolvers": "^5.2.2",
"@radix-ui/react-alert-dialog": "^1.1.15",
@@ -30,27 +31,31 @@
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "^1.2.3",
+ "@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-toggle": "^1.1.10",
"@radix-ui/react-toggle-group": "^1.1.11",
"@radix-ui/react-tooltip": "^1.2.8",
- "@swc-contrib/plugin-graphql-codegen-client-preset": "^0.6.0",
+ "@swc-contrib/plugin-graphql-codegen-client-preset": "^0.7.0",
"@tailwindcss/typography": "^0.5.18",
"@tanstack/react-table": "^8.21.3",
+ "@uiw/react-codemirror": "^4.25.2",
"babel-plugin-react-compiler": "19.1.0-rc.3",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"foxact": "^0.2.49",
"graphql": "^16.11.0",
"lucide-react": "^0.544.0",
- "next": "15.6.0-canary.20",
+ "next": "15.6.0-canary.26",
"next-themes": "^0.4.6",
- "react": "19.2.0-canary-d415fd3e-20250919",
- "react-dom": "19.2.0-canary-d415fd3e-20250919",
+ "react": "19.2.0-canary-83c88ad4-20250923",
+ "react-codemirror-merge": "^4.25.2",
+ "react-dom": "19.2.0-canary-83c88ad4-20250923",
"react-hook-form": "^7.63.0",
"react-remark": "^2.1.0",
"remark": "^15.0.1",
"remark-html": "^16.0.1",
"sonner": "^2.0.7",
+ "sql-formatter": "^15.6.9",
"tailwind-merge": "^3.3.1",
"zod": "^4.1.11"
},
@@ -65,14 +70,14 @@
"@types/node": "^24.5.2",
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
- "@typescript-eslint/parser": "^8.44.0",
+ "@typescript-eslint/parser": "^8.44.1",
"dprint": "^0.50.2",
"eslint": "^9.36.0",
- "eslint-config-next": "15.5.3",
+ "eslint-config-next": "15.5.4",
"eslint-plugin-better-tailwindcss": "^3.7.9",
"eslint-plugin-react-hooks": "^5.2.0",
"tailwindcss": "^4.1.13",
- "tw-animate-css": "^1.3.8",
+ "tw-animate-css": "^1.4.0",
"typescript": "^5.9.2"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7b0c09a..a51f6ab 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,70 +15,79 @@ importers:
dependencies:
'@apollo/client':
specifier: 4.0.5
- version: 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)
+ version: 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)
'@apollo/client-integration-nextjs':
specifier: ^0.13.1
- version: 0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(next@15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919))(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)
+ version: 0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(next@15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923))(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)
'@bprogress/next':
specifier: ^3.2.12
- version: 3.2.12(next@15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919))(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 3.2.12(next@15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923))(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@codemirror/lang-sql':
+ specifier: ^6.10.0
+ version: 6.10.0
'@graphql-codegen/client-preset':
specifier: ^5.0.1
version: 5.0.1(graphql@16.11.0)
'@hookform/resolvers':
specifier: ^5.2.2
- version: 5.2.2(react-hook-form@7.63.0(react@19.2.0-canary-d415fd3e-20250919))
+ version: 5.2.2(react-hook-form@7.63.0(react@19.2.0-canary-83c88ad4-20250923))
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-avatar':
specifier: ^1.1.10
- version: 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
- version: 1.3.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.3.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-collapsible':
specifier: ^1.1.12
- version: 1.1.12(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.12(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-label':
specifier: ^2.1.7
- version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-progress':
specifier: ^1.1.7
- version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-select':
specifier: ^2.2.6
- version: 2.2.6(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 2.2.6(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-separator':
specifier: ^1.1.7
- version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-slot':
specifier: ^1.2.3
- version: 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-tabs':
+ specifier: ^1.1.13
+ version: 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-toggle':
specifier: ^1.1.10
- version: 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-toggle-group':
specifier: ^1.1.11
- version: 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
'@swc-contrib/plugin-graphql-codegen-client-preset':
- specifier: ^0.6.0
- version: 0.6.0
+ specifier: ^0.7.0
+ version: 0.7.0
'@tailwindcss/typography':
specifier: ^0.5.18
version: 0.5.18(tailwindcss@4.1.13)
'@tanstack/react-table':
specifier: ^8.21.3
- version: 8.21.3(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 8.21.3(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@uiw/react-codemirror':
+ specifier: ^4.25.2
+ version: 4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.18.7)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.3)(codemirror@6.0.2)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
babel-plugin-react-compiler:
specifier: 19.1.0-rc.3
version: 19.1.0-rc.3
@@ -90,31 +99,34 @@ importers:
version: 2.1.1
foxact:
specifier: ^0.2.49
- version: 0.2.49(react@19.2.0-canary-d415fd3e-20250919)
+ version: 0.2.49(react@19.2.0-canary-83c88ad4-20250923)
graphql:
specifier: ^16.11.0
version: 16.11.0
lucide-react:
specifier: ^0.544.0
- version: 0.544.0(react@19.2.0-canary-d415fd3e-20250919)
+ version: 0.544.0(react@19.2.0-canary-83c88ad4-20250923)
next:
- specifier: 15.6.0-canary.20
- version: 15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ specifier: 15.6.0-canary.26
+ version: 15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
next-themes:
specifier: ^0.4.6
- version: 0.4.6(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 0.4.6(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
react:
- specifier: 19.2.0-canary-d415fd3e-20250919
- version: 19.2.0-canary-d415fd3e-20250919
+ specifier: 19.2.0-canary-83c88ad4-20250923
+ version: 19.2.0-canary-83c88ad4-20250923
+ react-codemirror-merge:
+ specifier: ^4.25.2
+ version: 4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.18.7)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.3)(codemirror@6.0.2)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
react-dom:
- specifier: 19.2.0-canary-d415fd3e-20250919
- version: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ specifier: 19.2.0-canary-83c88ad4-20250923
+ version: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
react-hook-form:
specifier: ^7.63.0
- version: 7.63.0(react@19.2.0-canary-d415fd3e-20250919)
+ version: 7.63.0(react@19.2.0-canary-83c88ad4-20250923)
react-remark:
specifier: ^2.1.0
- version: 2.1.0(react@19.2.0-canary-d415fd3e-20250919)
+ version: 2.1.0(react@19.2.0-canary-83c88ad4-20250923)
remark:
specifier: ^15.0.1
version: 15.0.1
@@ -123,7 +135,10 @@ importers:
version: 16.0.1
sonner:
specifier: ^2.0.7
- version: 2.0.7(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ version: 2.0.7(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ sql-formatter:
+ specifier: ^15.6.9
+ version: 15.6.9
tailwind-merge:
specifier: ^3.3.1
version: 3.3.1
@@ -162,8 +177,8 @@ importers:
specifier: ^19.1.9
version: 19.1.9(@types/react@19.1.13)
'@typescript-eslint/parser':
- specifier: ^8.44.0
- version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ specifier: ^8.44.1
+ version: 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
dprint:
specifier: ^0.50.2
version: 0.50.2
@@ -171,8 +186,8 @@ importers:
specifier: ^9.36.0
version: 9.36.0(jiti@2.5.1)
eslint-config-next:
- specifier: 15.5.3
- version: 15.5.3(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ specifier: 15.5.4
+ version: 15.5.4(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
eslint-plugin-better-tailwindcss:
specifier: ^3.7.9
version: 3.7.9(eslint@9.36.0(jiti@2.5.1))(tailwindcss@4.1.13)
@@ -183,8 +198,8 @@ importers:
specifier: ^4.1.13
version: 4.1.13
tw-animate-css:
- specifier: ^1.3.8
- version: 1.3.8
+ specifier: ^1.4.0
+ version: 1.4.0
typescript:
specifier: ^5.9.2
version: 5.9.2
@@ -352,6 +367,36 @@ packages:
react: '>=18.0.0'
react-dom: '>=18.0.0'
+ '@codemirror/autocomplete@6.18.7':
+ resolution: {integrity: sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==}
+
+ '@codemirror/commands@6.8.1':
+ resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==}
+
+ '@codemirror/lang-sql@6.10.0':
+ resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==}
+
+ '@codemirror/language@6.11.3':
+ resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==}
+
+ '@codemirror/lint@6.8.5':
+ resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==}
+
+ '@codemirror/merge@6.10.2':
+ resolution: {integrity: sha512-rmHzVkt5FnCtsi0IgvDIDjh/J4LmbfOboB7FMvVl21IHO0p1QM6jSwjkBjBD3D+c+T79OabEqoduCqvJCBV8Yg==}
+
+ '@codemirror/search@6.5.11':
+ resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==}
+
+ '@codemirror/state@6.5.2':
+ resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==}
+
+ '@codemirror/theme-one-dark@6.1.3':
+ resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==}
+
+ '@codemirror/view@6.38.3':
+ resolution: {integrity: sha512-x2t87+oqwB1mduiQZ6huIghjMt4uZKFEdj66IcXw7+a5iBEvv9lh7EWDRHI7crnD4BMGpnyq/RzmCGbiEZLcvQ==}
+
'@dprint/darwin-arm64@0.50.2':
resolution: {integrity: sha512-4d08INZlTxbPW9LK9W8+93viN543/qA2Kxn4azVnPW/xCb2Im03UqJBz8mMm3nJZdtNnK3uTVG3ib1VW+XJisw==}
cpu: [arm64]
@@ -1019,63 +1064,75 @@ packages:
'@jridgewell/trace-mapping@0.3.30':
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
+ '@lezer/common@1.2.3':
+ resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
+
+ '@lezer/highlight@1.2.1':
+ resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
+
+ '@lezer/lr@1.4.2':
+ resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
+
'@mapbox/hast-util-table-cell-style@0.2.1':
resolution: {integrity: sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==}
engines: {node: '>=12'}
+ '@marijn/find-cluster-break@1.0.2':
+ resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
+
'@napi-rs/wasm-runtime@0.2.12':
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
- '@next/env@15.6.0-canary.20':
- resolution: {integrity: sha512-+ljGWYCPxG5SNlTecwlcVcBnARQNv/CjzD73VlJg2oMvRnVrLCr+1zrjY1KnOVF4KsDxVTCD52V92YeAaJojNw==}
+ '@next/env@15.6.0-canary.26':
+ resolution: {integrity: sha512-ibIVqw+wrrZGMardMj2AazLYY19gj7toP3d8JtXqPdcDDD1saQFO6GZj5Y/JU3eg90THC8QV2dNGnypZSWI3Cw==}
- '@next/eslint-plugin-next@15.5.3':
- resolution: {integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==}
+ '@next/eslint-plugin-next@15.5.4':
+ resolution: {integrity: sha512-SR1vhXNNg16T4zffhJ4TS7Xn7eq4NfKfcOsRwea7RIAHrjRpI9ALYbamqIJqkAhowLlERffiwk0FMvTLNdnVtw==}
- '@next/swc-darwin-arm64@15.6.0-canary.20':
- resolution: {integrity: sha512-UFv71kNjbKhzdd7nd6f4UKALqKzal/f+dZ9X/ld9rfUmE/sVsCpBqbzu/Uw8KtGVwz1TKcsuR5A+p79SRhY39Q==}
+ '@next/swc-darwin-arm64@15.6.0-canary.26':
+ resolution: {integrity: sha512-2lXa1ekJ5eW8COFO2OZW4RRTnSv9vfV1ehTe8Wh0Y7CbFVpTIVfj3BdReVDRFNL3RA+bOtl5EIkYr2bc3fxhuQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.6.0-canary.20':
- resolution: {integrity: sha512-Re+46/ZpzquBczPruty09ywO/uTVo2i6yeCr1+x7YpgEj/7jevIIOr9qHoWtTxdceco8+NwmjyPX3jKwqK/IEQ==}
+ '@next/swc-darwin-x64@15.6.0-canary.26':
+ resolution: {integrity: sha512-F/VXCekWTMkr2eI9iFJkLRobuDYh3k9ayRM2sC553ywDdlHVh2/nnG78ZpW1BA5Ex0kDTgZCX4TYZmu8YOoBvQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.6.0-canary.20':
- resolution: {integrity: sha512-NdReZ2W87z8HttNuWgDPlcpBkQdzaG0WfB2KCwH17mT3NNhaZ3WCrRfp1FICiMIB/TjNi8ewjqYb+7J4vrslBg==}
+ '@next/swc-linux-arm64-gnu@15.6.0-canary.26':
+ resolution: {integrity: sha512-ThgMJEiAiCnPMZHfYQYT4Q/1HuPRLy+3NYEzb8VPkosj9PbvkTaU1jDcehMkbcp9GHo2GKsRCaDtKCtR4elwng==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.6.0-canary.20':
- resolution: {integrity: sha512-3ItqqT6eRyz3tTtO0H+s/ZnmHWLioNxvNQ+NrCopprMQX4aCqT14g8juSCWyCxUpUCJewu1qzH1b8MG/w49ynA==}
+ '@next/swc-linux-arm64-musl@15.6.0-canary.26':
+ resolution: {integrity: sha512-/2mPvac9So9L7gUNYObjGZZmzGJhJA17844GOw7AXYqwpctrEqMXfZC3MyjL3qodE/Pq42nr3JscWbHVYdngMQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.6.0-canary.20':
- resolution: {integrity: sha512-4MwMRDSdkDk1URFfq8Jh4N2Ck6BY9QjSVukV0PqaF1BIncOdSd+OhdmawAI5h3GAmyhkEXajmqGz33U66uEHAg==}
+ '@next/swc-linux-x64-gnu@15.6.0-canary.26':
+ resolution: {integrity: sha512-j6k+ysuUKQRlLBcsgtuTWsvHUjLark5/E3AOahpCJrbk1TstVSSnBrmxxOO3AYVc7WiVU1Dfidt6rxftAgXj1g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.6.0-canary.20':
- resolution: {integrity: sha512-XLGkiwp5z7BUd6DbpAkU+Y12JbckzEhwcRmPC9LMWgPzZovsFscjrDyTmYuyRMqaq2qKP+TmXWBwkHvalH8JEw==}
+ '@next/swc-linux-x64-musl@15.6.0-canary.26':
+ resolution: {integrity: sha512-/jzrFp3tlseZQ5tVV5vkt23gRbA9dg7qQOKAY4WQJMHgY5qGYlZg57ilJs//hhhjIi/YuJIgnMz3aQCtbZB+3Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.6.0-canary.20':
- resolution: {integrity: sha512-rRmwdrIt4g/oX9m/oOiOvXf35cwmyDUbAgSJeE/sB5QZYz7dOgx7Cfj3K5YJJ8fYPCVIO9cALQCeWZuvIrVCBw==}
+ '@next/swc-win32-arm64-msvc@15.6.0-canary.26':
+ resolution: {integrity: sha512-fKShJdiS68jaMqk+F2qKTOZXx2u0qiyYE1Zc9w52RxM1woZCh8egTWzfDd2BDCtdA31sYinONhS8O1a5UDJl3g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.6.0-canary.20':
- resolution: {integrity: sha512-3jfmbFAOLgRvqs5TKclq3u25lS7ctB/RwLiflbCq8pd9rmu0kIoUlFQP8kiX67bNLSv/p6tWYCd1XMEbyMRn2w==}
+ '@next/swc-win32-x64-msvc@15.6.0-canary.26':
+ resolution: {integrity: sha512-quHb3NOvrf2PCxw7Ex5lmD01gFc08NdxTaYufgwSG3ByhKQrQ0CKtmht5j8RswZNQ1xMqP+Bsw6cDP75mRP4CQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1502,6 +1559,19 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-tabs@1.1.13':
+ resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-toggle-group@1.1.11':
resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==}
peerDependencies:
@@ -1650,8 +1720,8 @@ packages:
'@standard-schema/utils@0.3.0':
resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
- '@swc-contrib/plugin-graphql-codegen-client-preset@0.6.0':
- resolution: {integrity: sha512-E3PUJ6HV708XOmfsCF11xAY15hNQyFqwWS5s0Z4sKb4nWbGs8OoXl0prCSLrilUXFhcyFLdk4PEhsPO6n7rQfA==}
+ '@swc-contrib/plugin-graphql-codegen-client-preset@0.7.0':
+ resolution: {integrity: sha512-AlkZn9tnprQ2sAJHsDWzARcXb6yI8E4YGcCVzcH7EF+eGkX6a59wH0HNexCRJdULafMjA9Zb6xv7z2RUJb/7Jg==}
engines: {node: '>=16'}
'@swc/helpers@0.5.15':
@@ -1767,8 +1837,8 @@ packages:
peerDependencies:
graphql: ^16.0.0
- '@tybys/wasm-util@0.10.0':
- resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==}
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@@ -1814,94 +1884,86 @@ packages:
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
- '@typescript-eslint/eslint-plugin@8.43.0':
- resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==}
+ '@typescript-eslint/eslint-plugin@8.44.1':
+ resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.43.0
+ '@typescript-eslint/parser': ^8.44.1
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.44.0':
- resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==}
+ '@typescript-eslint/parser@8.44.1':
+ resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.43.0':
- resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/project-service@8.44.0':
- resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==}
+ '@typescript-eslint/project-service@8.44.1':
+ resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.43.0':
- resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==}
+ '@typescript-eslint/scope-manager@8.44.1':
+ resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/scope-manager@8.44.0':
- resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.43.0':
- resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==}
+ '@typescript-eslint/tsconfig-utils@8.44.1':
+ resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/tsconfig-utils@8.44.0':
- resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
-
- '@typescript-eslint/type-utils@8.43.0':
- resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==}
+ '@typescript-eslint/type-utils@8.44.1':
+ resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.43.0':
- resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/types@8.44.0':
- resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.43.0':
- resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==}
+ '@typescript-eslint/types@8.44.1':
+ resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/typescript-estree@8.44.0':
- resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==}
+ '@typescript-eslint/typescript-estree@8.44.1':
+ resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.43.0':
- resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==}
+ '@typescript-eslint/utils@8.44.1':
+ resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.43.0':
- resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==}
+ '@typescript-eslint/visitor-keys@8.44.1':
+ resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/visitor-keys@8.44.0':
- resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@uiw/codemirror-extensions-basic-setup@4.25.2':
+ resolution: {integrity: sha512-s2fbpdXrSMWEc86moll/d007ZFhu6jzwNu5cWv/2o7egymvLeZO52LWkewgbr+BUCGWGPsoJVWeaejbsb/hLcw==}
+ peerDependencies:
+ '@codemirror/autocomplete': '>=6.0.0'
+ '@codemirror/commands': '>=6.0.0'
+ '@codemirror/language': '>=6.0.0'
+ '@codemirror/lint': '>=6.0.0'
+ '@codemirror/search': '>=6.0.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+
+ '@uiw/react-codemirror@4.25.2':
+ resolution: {integrity: sha512-XP3R1xyE0CP6Q0iR0xf3ed+cJzJnfmbLelgJR6osVVtMStGGZP3pGQjjwDRYptmjGHfEELUyyBLdY25h0BQg7w==}
+ peerDependencies:
+ '@babel/runtime': '>=7.11.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/theme-one-dark': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+ codemirror: '>=6.0.0'
+ react: '>=17.0.0'
+ react-dom: '>=17.0.0'
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
@@ -2265,6 +2327,9 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ codemirror@6.0.2:
+ resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==}
+
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -2281,6 +2346,9 @@ packages:
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
common-tags@1.8.2:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
@@ -2312,6 +2380,9 @@ packages:
typescript:
optional: true
+ crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
@@ -2432,6 +2503,9 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
+ discontinuous-range@1.0.0:
+ resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==}
+
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -2518,8 +2592,8 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
- eslint-config-next@15.5.3:
- resolution: {integrity: sha512-e6j+QhQFOr5pfsc8VJbuTD9xTXJaRvMHYjEeLPA2pFkheNlgPLCkxdvhxhfuM4KGcqSZj2qEnpHisdTVs3BxuQ==}
+ eslint-config-next@15.5.4:
+ resolution: {integrity: sha512-BzgVVuT3kfJes8i2GHenC1SRJ+W3BTML11lAOYFOOPzrk2xp66jBOAGEFRw+3LkYCln5UzvFsLhojrshb5Zfaw==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
typescript: '>=3.3.1'
@@ -3426,6 +3500,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ moo@0.5.2:
+ resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==}
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -3446,14 +3523,18 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ nearley@2.20.1:
+ resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==}
+ hasBin: true
+
next-themes@0.4.6:
resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
peerDependencies:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
- next@15.6.0-canary.20:
- resolution: {integrity: sha512-FzC5rYa5JgeITRnWX69kqrwM2xgaDlSO1EoPDtmMewpAH/H5Yh1D7+MaYQr+cyfDM0luSpqD6PJd2ej8950RTw==}
+ next@15.6.0-canary.26:
+ resolution: {integrity: sha512-Tcyaz63vs5e+R//hJbz9aJddqwPoEPynP2rUxEgLuW5ti8OW15TsydM7YRA5SH9JwElICql2VtKIUlVxs6EPuA==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -3675,10 +3756,28 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- react-dom@19.2.0-canary-d415fd3e-20250919:
- resolution: {integrity: sha512-x6oMy2coDRpRxmci7mbUm8a3SbuMFKAq+4RsnkcdTx9O+9CZh/av8lOSwoNQq83to4exCR5wxBZYeBr7jloZbA==}
+ railroad-diagrams@1.0.0:
+ resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==}
+
+ randexp@0.4.6:
+ resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==}
+ engines: {node: '>=0.12'}
+
+ react-codemirror-merge@4.25.2:
+ resolution: {integrity: sha512-+AXsrV/uXocJvZajjbvXkuys18XFqb09a8BbvZT5DQ3CdMVkf9qISrpEJfX1eJumFdJ3EHtd9jm4Th9icENspg==}
peerDependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ '@babel/runtime': '>=7.11.0'
+ '@codemirror/state': '>=6.0.0'
+ '@codemirror/theme-one-dark': '>=6.0.0'
+ '@codemirror/view': '>=6.0.0'
+ codemirror: '>=6.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ react-dom@19.2.0-canary-83c88ad4-20250923:
+ resolution: {integrity: sha512-czem6qxnoCIwp9iUE0KmouyA8DnAa3adstGvsTKeFjouDezsWkuLfrx5yAoLB0fmnb6KwRLwP/zZe0+g1NrXHg==}
+ peerDependencies:
+ react: 19.2.0-canary-83c88ad4-20250923
react-hook-form@7.63.0:
resolution: {integrity: sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA==}
@@ -3725,8 +3824,8 @@ packages:
'@types/react':
optional: true
- react@19.2.0-canary-d415fd3e-20250919:
- resolution: {integrity: sha512-gNQ6vJjVZ73TiwaX9tRjGj5039lEQuGlkkncdLkA4XLsIyttTY8bmDEq1JtcQdybxsM7/WE1hgT8Xi/nk2LBrw==}
+ react@19.2.0-canary-83c88ad4-20250923:
+ resolution: {integrity: sha512-7bFyC2OmB4ZXAsryQr2XU4o9VFPq4GAbwNgwgBnetk0oNfVxCimGdDqxbEKNy6uKR9gXIfiQRcgSWyv4/gYaOw==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -3801,6 +3900,10 @@ packages:
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
engines: {node: '>=18'}
+ ret@0.1.15:
+ resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+ engines: {node: '>=0.12'}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -3829,8 +3932,8 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- scheduler@0.27.0-canary-d415fd3e-20250919:
- resolution: {integrity: sha512-0lNnfpCOaj3cae33jshLBYVKRkLY6ga5JGrSVQX9M+q5Lkoor8PTFNTLNW4s7WlDui78ntyJrOrjirwoBaCWvw==}
+ scheduler@0.27.0-canary-83c88ad4-20250923:
+ resolution: {integrity: sha512-WF3tVgwfkZEYnXSRYmsnJ1DzVACMFIeoT6caE5I0rvFTZ7HXNoXqPCzLqF7viyXRwkLwWuhieCdDkHi+I4EtgQ==}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
@@ -3935,6 +4038,10 @@ packages:
sponge-case@1.0.1:
resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==}
+ sql-formatter@15.6.9:
+ resolution: {integrity: sha512-r9VKnkRfKW7jbhTgytwbM+JqmFclQYN9L58Z3UTktuy9V1f1Y+rGK3t70Truh2wIOJzvZkzobAQ2PwGjjXsr6Q==}
+ hasBin: true
+
stable-hash@0.0.5:
resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
@@ -3995,6 +4102,9 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+
style-to-object@0.3.0:
resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==}
@@ -4105,8 +4215,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tw-animate-css@1.3.8:
- resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==}
+ tw-animate-css@1.4.0:
+ resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
@@ -4268,6 +4378,9 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+ w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
web-namespaces@1.1.4:
resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==}
@@ -4390,31 +4503,31 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@apollo/client-integration-nextjs@0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(next@15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919))(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)':
+ '@apollo/client-integration-nextjs@0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(next@15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923))(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)':
dependencies:
- '@apollo/client': 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)
- '@apollo/client-react-streaming': 0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)
- next: 15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@apollo/client': 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)
+ '@apollo/client-react-streaming': 0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)
+ next: 15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
rxjs: 7.8.2
transitivePeerDependencies:
- '@types/react'
- graphql
- react-dom
- '@apollo/client-react-streaming@0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)':
+ '@apollo/client-react-streaming@0.13.1(@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2))(@types/react@19.1.13)(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)':
dependencies:
- '@apollo/client': 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)
+ '@apollo/client': 4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)
'@types/react-dom': 19.1.9(@types/react@19.1.13)
'@wry/equality': 0.5.7
graphql: 16.11.0
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
rxjs: 7.8.2
transitivePeerDependencies:
- '@types/react'
- '@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)(rxjs@7.8.2)':
+ '@apollo/client@4.0.5(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)(rxjs@7.8.2)':
dependencies:
'@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0)
'@wry/caches': 1.0.1
@@ -4427,8 +4540,8 @@ snapshots:
tslib: 2.8.1
optionalDependencies:
graphql-ws: 6.0.6(graphql@16.11.0)(ws@8.18.3)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
'@ardatan/relay-compiler@12.0.3(graphql@16.11.0)':
dependencies:
@@ -4562,19 +4675,89 @@ snapshots:
'@bprogress/core@1.3.4': {}
- '@bprogress/next@3.2.12(next@15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919))(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@bprogress/next@3.2.12(next@15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923))(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@bprogress/core': 1.3.4
- '@bprogress/react': 1.2.7(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- next: 15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@bprogress/react': 1.2.7(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ next: 15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
- '@bprogress/react@1.2.7(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@bprogress/react@1.2.7(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@bprogress/core': 1.3.4
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+
+ '@codemirror/autocomplete@6.18.7':
+ dependencies:
+ '@codemirror/language': 6.11.3
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ '@lezer/common': 1.2.3
+
+ '@codemirror/commands@6.8.1':
+ dependencies:
+ '@codemirror/language': 6.11.3
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ '@lezer/common': 1.2.3
+
+ '@codemirror/lang-sql@6.10.0':
+ dependencies:
+ '@codemirror/autocomplete': 6.18.7
+ '@codemirror/language': 6.11.3
+ '@codemirror/state': 6.5.2
+ '@lezer/common': 1.2.3
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+
+ '@codemirror/language@6.11.3':
+ dependencies:
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ '@lezer/common': 1.2.3
+ '@lezer/highlight': 1.2.1
+ '@lezer/lr': 1.4.2
+ style-mod: 4.1.2
+
+ '@codemirror/lint@6.8.5':
+ dependencies:
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ crelt: 1.0.6
+
+ '@codemirror/merge@6.10.2':
+ dependencies:
+ '@codemirror/language': 6.11.3
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ '@lezer/highlight': 1.2.1
+ style-mod: 4.1.2
+
+ '@codemirror/search@6.5.11':
+ dependencies:
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ crelt: 1.0.6
+
+ '@codemirror/state@6.5.2':
+ dependencies:
+ '@marijn/find-cluster-break': 1.0.2
+
+ '@codemirror/theme-one-dark@6.1.3':
+ dependencies:
+ '@codemirror/language': 6.11.3
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+ '@lezer/highlight': 1.2.1
+
+ '@codemirror/view@6.38.3':
+ dependencies:
+ '@codemirror/state': 6.5.2
+ crelt: 1.0.6
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
'@dprint/darwin-arm64@0.50.2':
optional: true
@@ -4696,11 +4879,11 @@ snapshots:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.10
- '@floating-ui/react-dom@2.1.5(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@floating-ui/react-dom@2.1.5(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@floating-ui/dom': 1.7.3
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
'@floating-ui/utils@0.2.10': {}
@@ -5134,10 +5317,10 @@ snapshots:
dependencies:
graphql: 16.11.0
- '@hookform/resolvers@5.2.2(react-hook-form@7.63.0(react@19.2.0-canary-d415fd3e-20250919))':
+ '@hookform/resolvers@5.2.2(react-hook-form@7.63.0(react@19.2.0-canary-83c88ad4-20250923))':
dependencies:
'@standard-schema/utils': 0.3.0
- react-hook-form: 7.63.0(react@19.2.0-canary-d415fd3e-20250919)
+ react-hook-form: 7.63.0(react@19.2.0-canary-83c88ad4-20250923)
'@humanfs/core@0.19.1': {}
@@ -5385,45 +5568,57 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
+ '@lezer/common@1.2.3': {}
+
+ '@lezer/highlight@1.2.1':
+ dependencies:
+ '@lezer/common': 1.2.3
+
+ '@lezer/lr@1.4.2':
+ dependencies:
+ '@lezer/common': 1.2.3
+
'@mapbox/hast-util-table-cell-style@0.2.1':
dependencies:
unist-util-visit: 1.4.1
+ '@marijn/find-cluster-break@1.0.2': {}
+
'@napi-rs/wasm-runtime@0.2.12':
dependencies:
'@emnapi/core': 1.5.0
'@emnapi/runtime': 1.5.0
- '@tybys/wasm-util': 0.10.0
+ '@tybys/wasm-util': 0.10.1
optional: true
- '@next/env@15.6.0-canary.20': {}
+ '@next/env@15.6.0-canary.26': {}
- '@next/eslint-plugin-next@15.5.3':
+ '@next/eslint-plugin-next@15.5.4':
dependencies:
fast-glob: 3.3.1
- '@next/swc-darwin-arm64@15.6.0-canary.20':
+ '@next/swc-darwin-arm64@15.6.0-canary.26':
optional: true
- '@next/swc-darwin-x64@15.6.0-canary.20':
+ '@next/swc-darwin-x64@15.6.0-canary.26':
optional: true
- '@next/swc-linux-arm64-gnu@15.6.0-canary.20':
+ '@next/swc-linux-arm64-gnu@15.6.0-canary.26':
optional: true
- '@next/swc-linux-arm64-musl@15.6.0-canary.20':
+ '@next/swc-linux-arm64-musl@15.6.0-canary.26':
optional: true
- '@next/swc-linux-x64-gnu@15.6.0-canary.20':
+ '@next/swc-linux-x64-gnu@15.6.0-canary.26':
optional: true
- '@next/swc-linux-x64-musl@15.6.0-canary.20':
+ '@next/swc-linux-x64-musl@15.6.0-canary.26':
optional: true
- '@next/swc-win32-arm64-msvc@15.6.0-canary.20':
+ '@next/swc-win32-arm64-msvc@15.6.0-canary.26':
optional: true
- '@next/swc-win32-x64-msvc@15.6.0-canary.20':
+ '@next/swc-win32-x64-msvc@15.6.0-canary.26':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -5506,444 +5701,460 @@ snapshots:
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-context@1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
aria-hidden: 1.2.6
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
- react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-direction@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-id@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-menu@2.1.16(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
aria-hidden: 1.2.6
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
- react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
- dependencies:
- '@floating-ui/react-dom': 2.1.5(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.5(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
'@radix-ui/rect': 1.1.1
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-progress@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-progress@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-select@2.2.6(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/number': 1.1.1
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
aria-hidden: 1.2.6
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
- react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-slot@1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ optionalDependencies:
+ '@types/react': 19.1.13
+
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
+ '@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- use-sync-external-store: 1.5.0(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ use-sync-external-store: 1.5.0(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@radix-ui/rect': 1.1.1
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-use-size@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@types/react': 19.1.13
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
'@types/react-dom': 19.1.9(@types/react@19.1.13)
@@ -5958,7 +6169,7 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
- '@swc-contrib/plugin-graphql-codegen-client-preset@0.6.0': {}
+ '@swc-contrib/plugin-graphql-codegen-client-preset@0.7.0': {}
'@swc/helpers@0.5.15':
dependencies:
@@ -6041,11 +6252,11 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.1.13
- '@tanstack/react-table@8.21.3(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919)':
+ '@tanstack/react-table@8.21.3(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
dependencies:
'@tanstack/table-core': 8.21.3
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
'@tanstack/table-core@8.21.3': {}
@@ -6059,7 +6270,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tybys/wasm-util@0.10.0':
+ '@tybys/wasm-util@0.10.1':
dependencies:
tslib: 2.8.1
optional: true
@@ -6108,14 +6319,14 @@ snapshots:
dependencies:
'@types/node': 24.5.2
- '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
- '@typescript-eslint/scope-manager': 8.43.0
- '@typescript-eslint/type-utils': 8.43.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
- '@typescript-eslint/utils': 8.43.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.43.0
+ '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.44.1
+ '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.44.1
eslint: 9.36.0(jiti@2.5.1)
graphemer: 1.4.0
ignore: 7.0.5
@@ -6125,59 +6336,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.44.0
- '@typescript-eslint/types': 8.44.0
- '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.44.0
+ '@typescript-eslint/scope-manager': 8.44.1
+ '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.44.1
debug: 4.4.3
eslint: 9.36.0(jiti@2.5.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.43.0
- debug: 4.4.3
- typescript: 5.9.2
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)':
+ '@typescript-eslint/project-service@8.44.1(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/types': 8.44.1
debug: 4.4.3
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.43.0':
+ '@typescript-eslint/scope-manager@8.44.1':
dependencies:
- '@typescript-eslint/types': 8.43.0
- '@typescript-eslint/visitor-keys': 8.43.0
+ '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/visitor-keys': 8.44.1
- '@typescript-eslint/scope-manager@8.44.0':
- dependencies:
- '@typescript-eslint/types': 8.44.0
- '@typescript-eslint/visitor-keys': 8.44.0
-
- '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)':
+ '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)':
dependencies:
typescript: 5.9.2
- '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
dependencies:
- typescript: 5.9.2
-
- '@typescript-eslint/type-utils@8.43.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
- dependencies:
- '@typescript-eslint/types': 8.43.0
- '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
- '@typescript-eslint/utils': 8.43.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
debug: 4.4.3
eslint: 9.36.0(jiti@2.5.1)
ts-api-utils: 2.1.0(typescript@5.9.2)
@@ -6185,32 +6378,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.43.0': {}
-
- '@typescript-eslint/types@8.44.0': {}
-
- '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)':
- dependencies:
- '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.43.0
- '@typescript-eslint/visitor-keys': 8.43.0
- debug: 4.4.3
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.9.2)
- typescript: 5.9.2
- transitivePeerDependencies:
- - supports-color
+ '@typescript-eslint/types@8.44.1': {}
- '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@8.44.1(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.44.0
- '@typescript-eslint/visitor-keys': 8.44.0
+ '@typescript-eslint/project-service': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/visitor-keys': 8.44.1
debug: 4.4.3
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -6221,26 +6396,48 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.43.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1))
- '@typescript-eslint/scope-manager': 8.43.0
- '@typescript-eslint/types': 8.43.0
- '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.44.1
+ '@typescript-eslint/types': 8.44.1
+ '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.9.2)
eslint: 9.36.0(jiti@2.5.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.43.0':
+ '@typescript-eslint/visitor-keys@8.44.1':
dependencies:
- '@typescript-eslint/types': 8.43.0
+ '@typescript-eslint/types': 8.44.1
eslint-visitor-keys: 4.2.1
- '@typescript-eslint/visitor-keys@8.44.0':
+ '@uiw/codemirror-extensions-basic-setup@4.25.2(@codemirror/autocomplete@6.18.7)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)':
dependencies:
- '@typescript-eslint/types': 8.44.0
- eslint-visitor-keys: 4.2.1
+ '@codemirror/autocomplete': 6.18.7
+ '@codemirror/commands': 6.8.1
+ '@codemirror/language': 6.11.3
+ '@codemirror/lint': 6.8.5
+ '@codemirror/search': 6.5.11
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+
+ '@uiw/react-codemirror@4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.18.7)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.3)(codemirror@6.0.2)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@codemirror/commands': 6.8.1
+ '@codemirror/state': 6.5.2
+ '@codemirror/theme-one-dark': 6.1.3
+ '@codemirror/view': 6.38.3
+ '@uiw/codemirror-extensions-basic-setup': 4.25.2(@codemirror/autocomplete@6.18.7)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.3)
+ codemirror: 6.0.2
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ transitivePeerDependencies:
+ - '@codemirror/autocomplete'
+ - '@codemirror/language'
+ - '@codemirror/lint'
+ - '@codemirror/search'
'@ungap/structured-clone@1.3.0': {}
@@ -6608,6 +6805,16 @@ snapshots:
clsx@2.1.1: {}
+ codemirror@6.0.2:
+ dependencies:
+ '@codemirror/autocomplete': 6.18.7
+ '@codemirror/commands': 6.8.1
+ '@codemirror/language': 6.11.3
+ '@codemirror/lint': 6.8.5
+ '@codemirror/search': 6.5.11
+ '@codemirror/state': 6.5.2
+ '@codemirror/view': 6.38.3
+
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
@@ -6620,6 +6827,8 @@ snapshots:
comma-separated-tokens@2.0.3: {}
+ commander@2.20.3: {}
+
common-tags@1.8.2: {}
concat-map@0.0.1: {}
@@ -6650,6 +6859,8 @@ snapshots:
optionalDependencies:
typescript: 5.9.2
+ crelt@1.0.6: {}
+
cross-fetch@3.2.0:
dependencies:
node-fetch: 2.7.0
@@ -6749,6 +6960,8 @@ snapshots:
dependencies:
path-type: 4.0.0
+ discontinuous-range@1.0.0: {}
+
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
@@ -6904,16 +7117,16 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-config-next@15.5.3(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2):
+ eslint-config-next@15.5.4(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2):
dependencies:
- '@next/eslint-plugin-next': 15.5.3
+ '@next/eslint-plugin-next': 15.5.4
'@rushstack/eslint-patch': 1.12.0
- '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
- '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
eslint: 9.36.0(jiti@2.5.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.5.1))
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.36.0(jiti@2.5.1))
eslint-plugin-react: 7.37.5(eslint@9.36.0(jiti@2.5.1))
eslint-plugin-react-hooks: 5.2.0(eslint@9.36.0(jiti@2.5.1))
@@ -6943,15 +7156,15 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
eslint: 9.36.0(jiti@2.5.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.36.0(jiti@2.5.1))
@@ -6971,7 +7184,7 @@ snapshots:
tailwindcss: 4.1.13
tsconfig-paths-webpack-plugin: 4.2.0
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6982,7 +7195,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.36.0(jiti@2.5.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.36.0(jiti@2.5.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -6994,7 +7207,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -7199,12 +7412,12 @@ snapshots:
dependencies:
fetch-blob: 3.2.0
- foxact@0.2.49(react@19.2.0-canary-d415fd3e-20250919):
+ foxact@0.2.49(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
client-only: 0.0.1
server-only: 0.0.1
optionalDependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
function-bind@1.1.2: {}
@@ -7744,9 +7957,9 @@ snapshots:
dependencies:
yallist: 3.1.1
- lucide-react@0.544.0(react@19.2.0-canary-d415fd3e-20250919):
+ lucide-react@0.544.0(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
magic-string@0.30.18:
dependencies:
@@ -8008,6 +8221,8 @@ snapshots:
mkdirp@3.0.1: {}
+ moo@0.5.2: {}
+
ms@2.1.3: {}
mute-stream@2.0.0: {}
@@ -8018,29 +8233,36 @@ snapshots:
natural-compare@1.4.0: {}
- next-themes@0.4.6(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919):
+ nearley@2.20.1:
+ dependencies:
+ commander: 2.20.3
+ moo: 0.5.2
+ railroad-diagrams: 1.0.0
+ randexp: 0.4.6
+
+ next-themes@0.4.6(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
- next@15.6.0-canary.20(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919):
+ next@15.6.0-canary.26(@babel/core@7.28.4)(babel-plugin-react-compiler@19.1.0-rc.3)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- '@next/env': 15.6.0-canary.20
+ '@next/env': 15.6.0-canary.26
'@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001743
postcss: 8.4.31
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
- styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.6.0-canary.20
- '@next/swc-darwin-x64': 15.6.0-canary.20
- '@next/swc-linux-arm64-gnu': 15.6.0-canary.20
- '@next/swc-linux-arm64-musl': 15.6.0-canary.20
- '@next/swc-linux-x64-gnu': 15.6.0-canary.20
- '@next/swc-linux-x64-musl': 15.6.0-canary.20
- '@next/swc-win32-arm64-msvc': 15.6.0-canary.20
- '@next/swc-win32-x64-msvc': 15.6.0-canary.20
+ '@next/swc-darwin-arm64': 15.6.0-canary.26
+ '@next/swc-darwin-x64': 15.6.0-canary.26
+ '@next/swc-linux-arm64-gnu': 15.6.0-canary.26
+ '@next/swc-linux-arm64-musl': 15.6.0-canary.26
+ '@next/swc-linux-x64-gnu': 15.6.0-canary.26
+ '@next/swc-linux-x64-musl': 15.6.0-canary.26
+ '@next/swc-win32-arm64-msvc': 15.6.0-canary.26
+ '@next/swc-win32-x64-msvc': 15.6.0-canary.26
babel-plugin-react-compiler: 19.1.0-rc.3
sharp: 0.34.4
transitivePeerDependencies:
@@ -8265,20 +8487,44 @@ snapshots:
queue-microtask@1.2.3: {}
- react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919):
+ railroad-diagrams@1.0.0: {}
+
+ randexp@0.4.6:
+ dependencies:
+ discontinuous-range: 1.0.0
+ ret: 0.1.15
+
+ react-codemirror-merge@4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.18.7)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.3)(codemirror@6.0.2)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923):
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@codemirror/merge': 6.10.2
+ '@codemirror/state': 6.5.2
+ '@codemirror/theme-one-dark': 6.1.3
+ '@codemirror/view': 6.38.3
+ '@uiw/react-codemirror': 4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.18.7)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.3)(codemirror@6.0.2)(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923)
+ codemirror: 6.0.2
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
+ transitivePeerDependencies:
+ - '@codemirror/autocomplete'
+ - '@codemirror/language'
+ - '@codemirror/lint'
+ - '@codemirror/search'
+
+ react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- scheduler: 0.27.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
+ scheduler: 0.27.0-canary-83c88ad4-20250923
- react-hook-form@7.63.0(react@19.2.0-canary-d415fd3e-20250919):
+ react-hook-form@7.63.0(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
react-is@16.13.1: {}
- react-remark@2.1.0(react@19.2.0-canary-d415fd3e-20250919):
+ react-remark@2.1.0(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
rehype-react: 6.2.1
remark-parse: 9.0.0
remark-rehype: 8.1.0
@@ -8286,34 +8532,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-remove-scroll-bar@2.3.8(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919):
+ react-remove-scroll-bar@2.3.8(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.1.13
- react-remove-scroll@2.7.1(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919):
+ react-remove-scroll@2.7.1(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- react-remove-scroll-bar: 2.3.8(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-remove-scroll-bar: 2.3.8(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
- use-sidecar: 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919)
+ use-callback-ref: 1.3.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
+ use-sidecar: 1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923)
optionalDependencies:
'@types/react': 19.1.13
- react-style-singleton@2.2.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919):
+ react-style-singleton@2.2.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
get-nonce: 1.0.1
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.1.13
- react@19.2.0-canary-d415fd3e-20250919: {}
+ react@19.2.0-canary-83c88ad4-20250923: {}
read-cache@1.0.0:
dependencies:
@@ -8425,6 +8671,8 @@ snapshots:
onetime: 7.0.0
signal-exit: 4.1.0
+ ret@0.1.15: {}
+
reusify@1.1.0: {}
rfdc@1.4.1: {}
@@ -8458,7 +8706,7 @@ snapshots:
safer-buffer@2.1.2: {}
- scheduler@0.27.0-canary-d415fd3e-20250919: {}
+ scheduler@0.27.0-canary-83c88ad4-20250923: {}
semver@6.3.1: {}
@@ -8583,10 +8831,10 @@ snapshots:
dot-case: 3.0.4
tslib: 2.8.1
- sonner@2.0.7(react-dom@19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919))(react@19.2.0-canary-d415fd3e-20250919):
+ sonner@2.0.7(react-dom@19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923))(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
- react-dom: 19.2.0-canary-d415fd3e-20250919(react@19.2.0-canary-d415fd3e-20250919)
+ react: 19.2.0-canary-83c88ad4-20250923
+ react-dom: 19.2.0-canary-83c88ad4-20250923(react@19.2.0-canary-83c88ad4-20250923)
source-map-js@1.2.1: {}
@@ -8598,6 +8846,11 @@ snapshots:
dependencies:
tslib: 2.8.1
+ sql-formatter@15.6.9:
+ dependencies:
+ argparse: 2.0.1
+ nearley: 2.20.1
+
stable-hash@0.0.5: {}
stop-iteration-iterator@1.1.0:
@@ -8686,14 +8939,16 @@ snapshots:
strip-json-comments@3.1.1: {}
+ style-mod@4.1.2: {}
+
style-to-object@0.3.0:
dependencies:
inline-style-parser: 0.1.1
- styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0-canary-d415fd3e-20250919):
+ styled-jsx@5.1.6(@babel/core@7.28.4)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
client-only: 0.0.1
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
optionalDependencies:
'@babel/core': 7.28.4
@@ -8789,7 +9044,7 @@ snapshots:
tslib@2.8.1: {}
- tw-animate-css@1.3.8: {}
+ tw-animate-css@1.4.0: {}
type-check@0.4.0:
dependencies:
@@ -8969,24 +9224,24 @@ snapshots:
urlpattern-polyfill@10.1.0: {}
- use-callback-ref@1.3.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919):
+ use-callback-ref@1.3.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.1.13
- use-sidecar@1.1.3(@types/react@19.1.13)(react@19.2.0-canary-d415fd3e-20250919):
+ use-sidecar@1.1.3(@types/react@19.1.13)(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
detect-node-es: 1.1.0
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.1.13
- use-sync-external-store@1.5.0(react@19.2.0-canary-d415fd3e-20250919):
+ use-sync-external-store@1.5.0(react@19.2.0-canary-83c88ad4-20250923):
dependencies:
- react: 19.2.0-canary-d415fd3e-20250919
+ react: 19.2.0-canary-83c88ad4-20250923
util-deprecate@1.0.2: {}
@@ -9012,6 +9267,8 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
+ w3c-keyname@2.2.8: {}
+
web-namespaces@1.1.4: {}
web-streams-polyfill@3.3.3: {}
diff --git a/schema.graphql b/schema.graphql
index bc34327..b53c420 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -102,6 +102,16 @@ type Database implements Node {
"""SQL schema"""
schema: String!
slug: String!
+ structure: DatabaseStructure!
+}
+
+type DatabaseStructure {
+ tables: [DatabaseTable!]!
+}
+
+type DatabaseTable {
+ columns: [String!]!
+ name: String!
}
"""
@@ -684,6 +694,8 @@ type Question implements Node {
"""Question difficulty, e.g. 'easy'"""
difficulty: QuestionDifficulty!
id: ID!
+ """Get the last submission for this question."""
+ lastSubmission: Submission
"""Reference answer"""
referenceAnswer: String!
referenceAnswerResult: SQLExecutionResult!
@@ -707,7 +719,9 @@ type Question implements Node {
): SubmissionConnection!
"""Question title"""
title: String!
- """List of your submissions for this question."""
+ """
+ List of your submissions for this question, ordered by submitted at descending.
+ """
userSubmissions: [Submission!]!
}