Compare commits

..
Author SHA1 Message Date
Thomas 088b4b58b8 Merge branch 'dev' into agent/124231b2 2026-06-03 08:45:24 +02:00
ajnart 65faf99d9c style: auto-fix lint and format 2026-06-02 21:22:03 +00:00
Thomas Camlong 4b35c31ecc fix(docker): restore container selection toolbar broken by Mantine v9
Replace mantine-react-table@2.0.0-beta.9 with mantine-react-table-open@9.0.3
(aliased via npm:) which properly supports Mantine v9's Collapse `expanded`
prop (renamed from `in`). Also extract hooks out of renderTopToolbarCustomActions
to fix a React rules-of-hooks violation.
2026-06-02 23:20:55 +02:00
53 changed files with 456 additions and 527 deletions

No files matched your search

@@ -2,7 +2,7 @@
import type { PropsWithChildren } from "react"; import type { PropsWithChildren } from "react";
import type { MantineColorScheme, MantineColorSchemeManager } from "@mantine/core"; import type { MantineColorScheme, MantineColorSchemeManager } from "@mantine/core";
import { DirectionProvider, MantineProvider, v8CssVariablesResolver } from "@mantine/core"; import { DirectionProvider, MantineProvider } from "@mantine/core";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { clientApi } from "@homarr/api/client"; import { clientApi } from "@homarr/api/client";
@@ -18,12 +18,7 @@ export const CustomMantineProvider = ({
const manager = useColorSchemeManager(); const manager = useColorSchemeManager();
return ( return (
<DirectionProvider> <DirectionProvider>
<MantineProvider <MantineProvider defaultColorScheme={defaultColorScheme} colorSchemeManager={manager} theme={theme}>
defaultColorScheme={defaultColorScheme}
colorSchemeManager={manager}
theme={theme}
cssVariablesResolver={v8CssVariablesResolver}
>
{children} {children}
</MantineProvider> </MantineProvider>
</DirectionProvider> </DirectionProvider>
@@ -1,4 +1,3 @@
import { cache } from "react";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { TRPCError } from "@trpc/server"; import { TRPCError } from "@trpc/server";
@@ -35,20 +34,17 @@ interface Props<TParams extends Params> {
export const createBoardContentPage = <TParams extends Record<string, unknown>>({ export const createBoardContentPage = <TParams extends Record<string, unknown>>({
getInitialBoardAsync: getInitialBoard, getInitialBoardAsync: getInitialBoard,
}: Props<TParams>) => { }: Props<TParams>) => {
const getCachedBoard = cache((_paramsKey: string, params: TParams) => getInitialBoard(params));
const getBoardForParams = (params: TParams) => getCachedBoard(JSON.stringify(params), params);
return { return {
layout: createBoardLayout({ layout: createBoardLayout({
headerActions: <BoardContentHeaderActions />, headerActions: <BoardContentHeaderActions />,
getInitialBoardAsync: getBoardForParams, getInitialBoardAsync: getInitialBoard,
}), }),
// eslint-disable-next-line no-restricted-syntax // eslint-disable-next-line no-restricted-syntax
page: async ({ params }: { params: Promise<TParams> }) => { page: async ({ params }: { params: Promise<TParams> }) => {
const resolvedParams = await params; const resolvedParams = await params;
const queryClient = getQueryClient(); const queryClient = getQueryClient();
const [board, session] = await Promise.all([getBoardForParams(resolvedParams), auth()]); const [board, session] = await Promise.all([getInitialBoard(resolvedParams), auth()]);
const itemsMap = board.items.reduce((acc, item) => { const itemsMap = board.items.reduce((acc, item) => {
const existing = acc.get(item.kind); const existing = acc.get(item.kind);
@@ -85,7 +81,7 @@ export const createBoardContentPage = <TParams extends Record<string, unknown>>(
}, },
generateMetadataAsync: async ({ params }: { params: Promise<TParams> }): Promise<Metadata> => { generateMetadataAsync: async ({ params }: { params: Promise<TParams> }): Promise<Metadata> => {
try { try {
const board = await getBoardForParams(await params); const board = await getInitialBoard(await params);
const t = await getI18n(); const t = await getI18n();
return { return {
@@ -101,6 +97,7 @@ export const createBoardContentPage = <TParams extends Record<string, unknown>>(
}, },
}; };
} catch (error) { } catch (error) {
// Ignore not found errors and return empty metadata
if (error instanceof TRPCError && error.code === "NOT_FOUND") { if (error instanceof TRPCError && error.code === "NOT_FOUND") {
return {}; return {};
} }
@@ -2,7 +2,7 @@
import type { PropsWithChildren } from "react"; import type { PropsWithChildren } from "react";
import type { MantineColorsTuple } from "@mantine/core"; import type { MantineColorsTuple } from "@mantine/core";
import { colorsTuple, createTheme, darken, lighten, MantineProvider, rem, v8CssVariablesResolver } from "@mantine/core"; import { colorsTuple, createTheme, darken, lighten, MantineProvider, rem } from "@mantine/core";
import { useRequiredBoard } from "@homarr/boards/context"; import { useRequiredBoard } from "@homarr/boards/context";
import type { ColorScheme } from "@homarr/definitions"; import type { ColorScheme } from "@homarr/definitions";
@@ -33,12 +33,7 @@ export const BoardMantineProvider = ({
}); });
return ( return (
<MantineProvider <MantineProvider defaultColorScheme={defaultColorScheme} theme={theme} colorSchemeManager={colorSchemeManager}>
defaultColorScheme={defaultColorScheme}
theme={theme}
colorSchemeManager={colorSchemeManager}
cssVariablesResolver={v8CssVariablesResolver}
>
{children} {children}
</MantineProvider> </MantineProvider>
); );
@@ -1,15 +1,15 @@
"use client"; "use client";
import { Button, Stack, TextInput } from "@mantine/core"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core";
import type { z } from "zod/v4"; import type { z } from "zod/v4";
import { clientApi } from "@homarr/api/client"; import { clientApi } from "@homarr/api/client";
import { signIn } from "@homarr/auth/client"; import { signIn } from "@homarr/auth/client";
import { revalidatePathActionAsync } from "@homarr/common/client"; import { revalidatePathActionAsync } from "@homarr/common/client";
import { useZodForm } from "@homarr/form"; import { useZodForm } from "@homarr/form";
import { UserCreatePasswordFields } from "@homarr/forms-collection";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useScopedI18n } from "@homarr/translation/client"; import { useScopedI18n } from "@homarr/translation/client";
import { CustomPasswordInput } from "@homarr/ui";
import { userInitSchema } from "@homarr/validation/user"; import { userInitSchema } from "@homarr/validation/user";
export const InitUserForm = () => { export const InitUserForm = () => {
@@ -59,10 +59,12 @@ export const InitUserForm = () => {
> >
<Stack gap="lg"> <Stack gap="lg">
<TextInput label={t("field.username.label")} {...form.getInputProps("username")} /> <TextInput label={t("field.username.label")} {...form.getInputProps("username")} />
<UserCreatePasswordFields <CustomPasswordInput
passwordInputProps={form.getInputProps("password")} withPasswordRequirements
confirmPasswordInputProps={form.getInputProps("confirmPassword")} label={t("field.password.label")}
{...form.getInputProps("password")}
/> />
<PasswordInput label={t("field.passwordConfirm.label")} {...form.getInputProps("confirmPassword")} />
<Button type="submit" fullWidth loading={isPending}> <Button type="submit" fullWidth loading={isPending}>
{t("action.create")} {t("action.create")}
</Button> </Button>
@@ -1,7 +1,20 @@
"use client"; "use client";
import { startTransition, useCallback, useState } from "react"; import { startTransition, useCallback, useState } from "react";
import { Badge, Button, Card, Group, Stack, Stepper, Table, Text, TextInput, Title, Tooltip } from "@mantine/core"; import {
Badge,
Button,
Card,
Group,
PasswordInput,
Stack,
Stepper,
Table,
Text,
TextInput,
Title,
Tooltip,
} from "@mantine/core";
import { useListState } from "@mantine/hooks"; import { useListState } from "@mantine/hooks";
import { IconPlus, IconUserCheck } from "@tabler/icons-react"; import { IconPlus, IconUserCheck } from "@tabler/icons-react";
import { z } from "zod/v4"; import { z } from "zod/v4";
@@ -11,11 +24,10 @@ import type { GroupPermissionKey } from "@homarr/definitions";
import { everyoneGroup, groupPermissions } from "@homarr/definitions"; import { everyoneGroup, groupPermissions } from "@homarr/definitions";
import type { IsValid } from "@homarr/form"; import type { IsValid } from "@homarr/form";
import { useZodForm } from "@homarr/form"; import { useZodForm } from "@homarr/form";
import { UserCreatePasswordFields } from "@homarr/forms-collection";
import { useModalAction } from "@homarr/modals"; import { useModalAction } from "@homarr/modals";
import { showErrorNotification } from "@homarr/notifications"; import { showErrorNotification } from "@homarr/notifications";
import { useI18n, useScopedI18n } from "@homarr/translation/client"; import { useI18n, useScopedI18n } from "@homarr/translation/client";
import { UserAvatar } from "@homarr/ui"; import { CustomPasswordInput, UserAvatar } from "@homarr/ui";
import { createCustomErrorParams } from "@homarr/validation/form/i18n"; import { createCustomErrorParams } from "@homarr/validation/form/i18n";
import { userPasswordSchema } from "@homarr/validation/user"; import { userPasswordSchema } from "@homarr/validation/user";
@@ -155,10 +167,18 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC
<form> <form>
<Card p="xl"> <Card p="xl">
<Stack gap="md"> <Stack gap="md">
<UserCreatePasswordFields <CustomPasswordInput
withPasswordRequirements
label={tUserField("password.label")}
variant="filled" variant="filled"
passwordInputProps={securityForm.getInputProps("password")} withAsterisk
confirmPasswordInputProps={securityForm.getInputProps("confirmPassword")} {...securityForm.getInputProps("password")}
/>
<PasswordInput
label={tUserField("passwordConfirm.label")}
variant="filled"
withAsterisk
{...securityForm.getInputProps("confirmPassword")}
/> />
</Stack> </Stack>
</Card> </Card>
+8 -50
View File
@@ -81,7 +81,13 @@ describe("initUser should initialize the first user", () => {
await expect(actAsync()).rejects.toThrow("passwordsDoNotMatch"); await expect(actAsync()).rejects.toThrow("passwordsDoNotMatch");
}); });
it.each([["aB2%"], ["short"]])("should reject passwords shorter than 8 characters for '%s'", async (password) => { it.each([
["aB2%"], // too short
["abc123DEF"], // does not contain special characters
["abcDEFghi+"], // does not contain numbers
["ABC123+/-"], // does not contain lowercase
["abc123+/-"], // does not contain uppercase
])("should throw error that password requirements do not match for '%s' as password", async (password) => {
const db = createDb(); const db = createDb();
await createOnboardingStepAsync(db, "user"); await createOnboardingStepAsync(db, "user");
const caller = userRouter.createCaller({ const caller = userRouter.createCaller({
@@ -97,55 +103,7 @@ describe("initUser should initialize the first user", () => {
confirmPassword: password, confirmPassword: password,
}); });
await expect(actAsync()).rejects.toThrow(); await expect(actAsync()).rejects.toThrow("passwordRequirements");
});
it("should accept passwords without complexity requirements", async () => {
const db = createDb();
await createOnboardingStepAsync(db, "user");
const caller = userRouter.createCaller({
db,
deviceType: undefined,
session: null,
});
await caller.initUser({
username: "test",
password: "abc123DEF",
confirmPassword: "abc123DEF",
});
const user = await db.query.users.findFirst({
columns: {
id: true,
},
});
expect(user).toBeDefined();
});
it("should accept passwords with special characters like LoveHomarr<3", async () => {
const db = createDb();
await createOnboardingStepAsync(db, "user");
const caller = userRouter.createCaller({
db,
deviceType: undefined,
session: null,
});
await caller.initUser({
username: "test",
password: "LoveHomarr<3",
confirmPassword: "LoveHomarr<3",
});
const user = await db.query.users.findFirst({
columns: {
id: true,
},
});
expect(user).toBeDefined();
}); });
}); });
-2
View File
@@ -5,5 +5,3 @@ export * from "./icon-picker/icon-picker";
export * from "./new-app/icon-matcher"; export * from "./new-app/icon-matcher";
export * from "./upload-media/upload-media"; export * from "./upload-media/upload-media";
export * from "./user-create/user-create-password-fields";
@@ -1,33 +0,0 @@
"use client";
import { PasswordInput, Stack } from "@mantine/core";
import type { PasswordInputProps } from "@mantine/core";
import { useScopedI18n } from "@homarr/translation/client";
import { CustomPasswordInput } from "@homarr/ui";
interface UserCreatePasswordFieldsProps {
passwordInputProps: PasswordInputProps;
confirmPasswordInputProps: PasswordInputProps;
variant?: PasswordInputProps["variant"];
}
export const UserCreatePasswordFields = ({
passwordInputProps,
confirmPasswordInputProps,
variant,
}: UserCreatePasswordFieldsProps) => {
const t = useScopedI18n("user.field");
return (
<Stack gap="md">
<CustomPasswordInput
withPasswordRequirements
label={t("password.label")}
variant={variant}
{...passwordInputProps}
/>
<PasswordInput label={t("passwordConfirm.label")} variant={variant} {...confirmPasswordInputProps} />
</Stack>
);
};
@@ -44,7 +44,6 @@ const optionMapping: OptionMapping = {
hideIcon: (oldOptions) => oldOptions.items.some((item) => item.hideIcon), hideIcon: (oldOptions) => oldOptions.items.some((item) => item.hideIcon),
hideHostname: (oldOptions) => oldOptions.items.some((item) => item.hideHostname), hideHostname: (oldOptions) => oldOptions.items.some((item) => item.hideHostname),
openNewTab: (oldOptions) => oldOptions.items.some((item) => item.openNewTab), openNewTab: (oldOptions) => oldOptions.items.some((item) => item.openNewTab),
withBorder: () => undefined,
}, },
calendar: { calendar: {
releaseType: (oldOptions) => [oldOptions.radarrReleaseType], releaseType: (oldOptions) => [oldOptions.radarrReleaseType],
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Contrasenya", "label": "Contrasenya",
"suggestion": { "requirement": {
"length": "Inclou com a mínim 8 caràcters", "length": "Inclou com a mínim 8 caràcters",
"lowercase": "Inclou minúscules", "lowercase": "Inclou minúscules",
"uppercase": "Inclou majúscules", "uppercase": "Inclou majúscules",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "密码", "label": "密码",
"suggestion": { "requirement": {
"length": "至少包含 8 个字符", "length": "至少包含 8 个字符",
"lowercase": "包含小写字母", "lowercase": "包含小写字母",
"uppercase": "包含大写字母", "uppercase": "包含大写字母",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "crwdns26:0crwdne26:0", "label": "crwdns26:0crwdne26:0",
"suggestion": { "requirement": {
"length": "crwdns28:0crwdne28:0", "length": "crwdns28:0crwdne28:0",
"lowercase": "crwdns30:0crwdne30:0", "lowercase": "crwdns30:0crwdne30:0",
"uppercase": "crwdns32:0crwdne32:0", "uppercase": "crwdns32:0crwdne32:0",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Heslo", "label": "Heslo",
"suggestion": { "requirement": {
"length": "Obsahuje alespoň 8 znaků", "length": "Obsahuje alespoň 8 znaků",
"lowercase": "Obsahuje malé písmeno", "lowercase": "Obsahuje malé písmeno",
"uppercase": "Obsahuje velké písmeno", "uppercase": "Obsahuje velké písmeno",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Adgangskode", "label": "Adgangskode",
"suggestion": { "requirement": {
"length": "Inkluderer mindst 8 tegn", "length": "Inkluderer mindst 8 tegn",
"lowercase": "Inkluderer små bogstaver", "lowercase": "Inkluderer små bogstaver",
"uppercase": "Inkluderer store bogstaver", "uppercase": "Inkluderer store bogstaver",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Passwort", "label": "Passwort",
"suggestion": { "requirement": {
"length": "Enthält mindestens 8 Zeichen", "length": "Enthält mindestens 8 Zeichen",
"lowercase": "Enthält Kleinbuchstaben", "lowercase": "Enthält Kleinbuchstaben",
"uppercase": "Enthält Großbuchstaben", "uppercase": "Enthält Großbuchstaben",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Passwort", "label": "Passwort",
"suggestion": { "requirement": {
"length": "Enthält mindestens 8 Zeichen", "length": "Enthält mindestens 8 Zeichen",
"lowercase": "Enthält Kleinbuchstaben", "lowercase": "Enthält Kleinbuchstaben",
"uppercase": "Enthält Großbuchstaben", "uppercase": "Enthält Großbuchstaben",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Κωδικός", "label": "Κωδικός",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "Περιλαμβάνει πεζό γράμμα", "lowercase": "Περιλαμβάνει πεζό γράμμα",
"uppercase": "Περιλαμβάνει κεφαλαίο γράμμα", "uppercase": "Περιλαμβάνει κεφαλαίο γράμμα",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Password", "label": "Password",
"suggestion": { "requirement": {
"length": "Includes a minimum of 8 characters", "length": "Includes a minimum of 8 characters",
"lowercase": "Includes a lower-case letter", "lowercase": "Includes a lower-case letter",
"uppercase": "Includes an upper-case letter", "uppercase": "Includes an upper-case letter",
+2 -6
View File
@@ -132,9 +132,8 @@
}, },
"password": { "password": {
"label": "Password", "label": "Password",
"suggestionsTitle": "Password suggestions", "requirement": {
"suggestion": { "length": "Includes at least 8 characters",
"length": "At least 8 characters",
"lowercase": "Includes lowercase letter", "lowercase": "Includes lowercase letter",
"uppercase": "Includes uppercase letter", "uppercase": "Includes uppercase letter",
"number": "Includes number", "number": "Includes number",
@@ -1406,9 +1405,6 @@
"openNewTab": { "openNewTab": {
"label": "Open in new tab" "label": "Open in new tab"
}, },
"withBorder": {
"label": "Show border"
},
"items": { "items": {
"label": "Bookmarks", "label": "Bookmarks",
"add": "Add bookmark" "add": "Add bookmark"
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Contraseña", "label": "Contraseña",
"suggestion": { "requirement": {
"length": "Incluye al menos 8 caracteres", "length": "Incluye al menos 8 caracteres",
"lowercase": "Incluye al menos una letra minúscula", "lowercase": "Incluye al menos una letra minúscula",
"uppercase": "Incluye al menos una letra mayúscula", "uppercase": "Incluye al menos una letra mayúscula",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "", "label": "",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "", "lowercase": "",
"uppercase": "", "uppercase": "",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Mot de passe", "label": "Mot de passe",
"suggestion": { "requirement": {
"length": "Contient au moins 8 caractères", "length": "Contient au moins 8 caractères",
"lowercase": "Inclut une lettre minuscule", "lowercase": "Inclut une lettre minuscule",
"uppercase": "Inclut une lettre majuscule", "uppercase": "Inclut une lettre majuscule",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "סיסמה", "label": "סיסמה",
"suggestion": { "requirement": {
"length": "כולל לפחות 8 תווים", "length": "כולל לפחות 8 תווים",
"lowercase": "אפשר אותיות קטנות", "lowercase": "אפשר אותיות קטנות",
"uppercase": "אפשר אותיות גדולות", "uppercase": "אפשר אותיות גדולות",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Lozinka", "label": "Lozinka",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "Uključuje mala slova", "lowercase": "Uključuje mala slova",
"uppercase": "Uključuje veliko slovo", "uppercase": "Uključuje veliko slovo",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Jelszó", "label": "Jelszó",
"suggestion": { "requirement": {
"length": "Tartalmazzon legalább 8 karaktert", "length": "Tartalmazzon legalább 8 karaktert",
"lowercase": "Tartalmazzon kisbetűt", "lowercase": "Tartalmazzon kisbetűt",
"uppercase": "Tartalmazzon nagybetűt", "uppercase": "Tartalmazzon nagybetűt",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Password", "label": "Password",
"suggestion": { "requirement": {
"length": "Include almeno 8 caratteri", "length": "Include almeno 8 caratteri",
"lowercase": "Include lettera minuscola", "lowercase": "Include lettera minuscola",
"uppercase": "Include lettera maiuscola", "uppercase": "Include lettera maiuscola",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "パスワード", "label": "パスワード",
"suggestion": { "requirement": {
"length": "少なくとも 8 文字以上を含む", "length": "少なくとも 8 文字以上を含む",
"lowercase": "小文字を含む", "lowercase": "小文字を含む",
"uppercase": "大文字を含む", "uppercase": "大文字を含む",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "비밀번호", "label": "비밀번호",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "소문자 포함", "lowercase": "소문자 포함",
"uppercase": "대문자 포함", "uppercase": "대문자 포함",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Slaptažodis", "label": "Slaptažodis",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "", "lowercase": "",
"uppercase": "", "uppercase": "",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Parole", "label": "Parole",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "Ietver mazo burtu", "lowercase": "Ietver mazo burtu",
"uppercase": "Ietver lielo burtu", "uppercase": "Ietver lielo burtu",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Wachtwoord", "label": "Wachtwoord",
"suggestion": { "requirement": {
"length": "Bevat ten minste 8 tekens", "length": "Bevat ten minste 8 tekens",
"lowercase": "Inclusief kleine letter", "lowercase": "Inclusief kleine letter",
"uppercase": "Inclusief hoofdletter", "uppercase": "Inclusief hoofdletter",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Passord", "label": "Passord",
"suggestion": { "requirement": {
"length": "Inkluderer minst 8 tegn", "length": "Inkluderer minst 8 tegn",
"lowercase": "Inkluderer liten bokstav", "lowercase": "Inkluderer liten bokstav",
"uppercase": "Inkluderer stor bokstav", "uppercase": "Inkluderer stor bokstav",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Hasło", "label": "Hasło",
"suggestion": { "requirement": {
"length": "Zawiera co najmniej 8 znaków", "length": "Zawiera co najmniej 8 znaków",
"lowercase": "Zawiera małą literę", "lowercase": "Zawiera małą literę",
"uppercase": "Zawiera wielką literę", "uppercase": "Zawiera wielką literę",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Senha", "label": "Senha",
"suggestion": { "requirement": {
"length": "Inclua pelo menos 8 caracteres", "length": "Inclua pelo menos 8 caracteres",
"lowercase": "Inclui letras minúsculas", "lowercase": "Inclui letras minúsculas",
"uppercase": "Inclui letras maiúsculas", "uppercase": "Inclui letras maiúsculas",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "", "label": "",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "", "lowercase": "",
"uppercase": "", "uppercase": "",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Parola", "label": "Parola",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "Să includă litere mici", "lowercase": "Să includă litere mici",
"uppercase": "Să includă litere mari", "uppercase": "Să includă litere mari",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Пароль", "label": "Пароль",
"suggestion": { "requirement": {
"length": "Содержит не менее 8 символов", "length": "Содержит не менее 8 символов",
"lowercase": "Содержит строчную букву", "lowercase": "Содержит строчную букву",
"uppercase": "Содержит заглавную букву", "uppercase": "Содержит заглавную букву",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Heslo", "label": "Heslo",
"suggestion": { "requirement": {
"length": "Obsahuje aspoň 8 znakov", "length": "Obsahuje aspoň 8 znakov",
"lowercase": "Zahŕňa malé písmeno", "lowercase": "Zahŕňa malé písmeno",
"uppercase": "Zahŕňa veľké písmená", "uppercase": "Zahŕňa veľké písmená",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Geslo", "label": "Geslo",
"suggestion": { "requirement": {
"length": "", "length": "",
"lowercase": "Vključuje male črke", "lowercase": "Vključuje male črke",
"uppercase": "Vključuje velike tiskane črke", "uppercase": "Vključuje velike tiskane črke",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Lösenord", "label": "Lösenord",
"suggestion": { "requirement": {
"length": "Använd minst 8 tecken", "length": "Använd minst 8 tecken",
"lowercase": "Använd liten bokstav", "lowercase": "Använd liten bokstav",
"uppercase": "Använd stor bokstav", "uppercase": "Använd stor bokstav",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Şifre", "label": "Şifre",
"suggestion": { "requirement": {
"length": "En az 8 karakter içermeli", "length": "En az 8 karakter içermeli",
"lowercase": "Küçük harf içermeli", "lowercase": "Küçük harf içermeli",
"uppercase": "Büyük harf içermeli", "uppercase": "Büyük harf içermeli",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Пароль", "label": "Пароль",
"suggestion": { "requirement": {
"length": "Включає принаймні 8 символів", "length": "Включає принаймні 8 символів",
"lowercase": "Включає малу літеру", "lowercase": "Включає малу літеру",
"uppercase": "Включає велику літеру", "uppercase": "Включає велику літеру",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "Mật khẩu", "label": "Mật khẩu",
"suggestion": { "requirement": {
"length": "Bao gồm ít nhất 8 kí tự", "length": "Bao gồm ít nhất 8 kí tự",
"lowercase": "Bao gồm chữ thường", "lowercase": "Bao gồm chữ thường",
"uppercase": "Bao gồm chữ in hoa", "uppercase": "Bao gồm chữ in hoa",
+1 -1
View File
@@ -132,7 +132,7 @@
}, },
"password": { "password": {
"label": "密碼", "label": "密碼",
"suggestion": { "requirement": {
"length": "至少包含 8 個字符", "length": "至少包含 8 個字符",
"lowercase": "包含小寫字母", "lowercase": "包含小寫字母",
"uppercase": "包含大寫字母", "uppercase": "包含大寫字母",
@@ -20,15 +20,15 @@ export const CustomPasswordInput = ({ withPasswordRequirements, ...props }: Cust
}; };
const WithPasswordRequirements = (props: PasswordInputProps) => { const WithPasswordRequirements = (props: PasswordInputProps) => {
const [password, setPassword] = useState(""); const [value, setValue] = useState("");
const onChange = (event: ChangeEvent<HTMLInputElement>) => { const onChange = (event: ChangeEvent<HTMLInputElement>) => {
setPassword(event.currentTarget.value); setValue(event.currentTarget.value);
props.onChange?.(event); props.onChange?.(event);
}; };
return ( return (
<PasswordRequirementsPopover password={password}> <PasswordRequirementsPopover password={value}>
<PasswordInput {...props} onChange={onChange} /> <PasswordInput {...props} onChange={onChange} />
</PasswordRequirementsPopover> </PasswordRequirementsPopover>
); );
@@ -1,19 +1,14 @@
import { rem, Text } from "@mantine/core"; import { rem, Text } from "@mantine/core";
import { IconCheck, IconPoint } from "@tabler/icons-react"; import { IconCheck, IconX } from "@tabler/icons-react";
const getRequirementDisplay = (meets: boolean) =>
({
true: { color: "teal", Icon: IconCheck },
false: { color: "dimmed", Icon: IconPoint },
})[String(meets) as "true" | "false"];
export function PasswordRequirement({ meets, label }: { meets: boolean; label: string }) { export function PasswordRequirement({ meets, label }: { meets: boolean; label: string }) {
const display = getRequirementDisplay(meets);
const Icon = display.Icon;
return ( return (
<Text c={display.color} display="flex" style={{ alignItems: "center" }} size="sm"> <Text c={meets ? "teal" : "red"} display="flex" style={{ alignItems: "center" }} size="sm">
<Icon style={{ width: rem(14), height: rem(14) }} /> {meets ? (
<IconCheck style={{ width: rem(14), height: rem(14) }} />
) : (
<IconX style={{ width: rem(14), height: rem(14) }} />
)}
<Text span ml={10}> <Text span ml={10}>
{label} {label}
</Text> </Text>
@@ -1,24 +1,16 @@
import type { PropsWithChildren } from "react"; import type { PropsWithChildren } from "react";
import { useState } from "react"; import { useState } from "react";
import { Popover, Progress, Text } from "@mantine/core"; import { Popover, Progress } from "@mantine/core";
import { useScopedI18n } from "@homarr/translation/client"; import { useScopedI18n } from "@homarr/translation/client";
import { passwordRequirements } from "@homarr/validation/user"; import { passwordRequirements } from "@homarr/validation/user";
import { PasswordRequirement } from "./password-requirement"; import { PasswordRequirement } from "./password-requirement";
const strengthColorMap = [
{ min: 100, color: "teal" },
{ min: 51, color: "yellow" },
{ min: 0, color: "dimmed" },
] as const;
export const PasswordRequirementsPopover = ({ password, children }: PropsWithChildren<{ password: string }>) => { export const PasswordRequirementsPopover = ({ password, children }: PropsWithChildren<{ password: string }>) => {
const tPassword = useScopedI18n("user.field.password");
const requirements = useRequirements(); const requirements = useRequirements();
const strength = useStrength(password); const strength = useStrength(password);
const [popoverOpened, setPopoverOpened] = useState(false); const [popoverOpened, setPopoverOpened] = useState(false);
const strengthColor = strengthColorMap.find(({ min }) => strength >= min)?.color ?? "dimmed";
const checks = ( const checks = (
<> <>
{requirements.map((requirement) => ( {requirements.map((requirement) => (
@@ -27,6 +19,8 @@ export const PasswordRequirementsPopover = ({ password, children }: PropsWithChi
</> </>
); );
const color = strength === 100 ? "teal" : strength > 50 ? "yellow" : "red";
return ( return (
<Popover opened={popoverOpened} position="bottom" width="target" transitionProps={{ transition: "pop" }}> <Popover opened={popoverOpened} position="bottom" width="target" transitionProps={{ transition: "pop" }}>
<Popover.Target> <Popover.Target>
@@ -35,10 +29,7 @@ export const PasswordRequirementsPopover = ({ password, children }: PropsWithChi
</div> </div>
</Popover.Target> </Popover.Target>
<Popover.Dropdown> <Popover.Dropdown>
<Progress color={strengthColor} value={strength} size={5} mb="xs" /> <Progress color={color} value={strength} size={5} mb="xs" />
<Text size="sm" c="dimmed" mb="xs">
{tPassword("suggestionsTitle")}
</Text>
{checks} {checks}
</Popover.Dropdown> </Popover.Dropdown>
</Popover> </Popover>
@@ -46,7 +37,7 @@ export const PasswordRequirementsPopover = ({ password, children }: PropsWithChi
}; };
const useRequirements = () => { const useRequirements = () => {
const t = useScopedI18n("user.field.password.suggestion"); const t = useScopedI18n("user.field.password.requirement");
return passwordRequirements.map(({ check, value }) => ({ check, label: t(value) })); return passwordRequirements.map(({ check, value }) => ({ check, label: t(value) }));
}; };
+16 -2
View File
@@ -19,10 +19,24 @@ export const passwordRequirements = [
{ check: regexCheck(/[$&+,:;=?@#|'<>.^*()%!\-~`"_/\\[\]{}]/), value: "special" }, { check: regexCheck(/[$&+,:;=?@#|'<>.^*()%!\-~`"_/\\[\]{}]/), value: "special" },
] satisfies { ] satisfies {
check: (value: string) => boolean; check: (value: string) => boolean;
value: keyof TranslationObject["user"]["field"]["password"]["suggestion"]; value: keyof TranslationObject["user"]["field"]["password"]["requirement"];
}[]; }[];
export const userPasswordSchema = z.string().min(8).max(255); export const userPasswordSchema = z
.string()
.min(8)
.max(255)
.refine(
(value) => {
return passwordRequirements.every((requirement) => requirement.check(value));
},
{
params: createCustomErrorParams({
key: "passwordRequirements",
params: {},
}),
},
);
const addConfirmPasswordRefinement = < const addConfirmPasswordRefinement = <
TSchema extends z.ZodObject<{ password: z.core.$ZodString; confirmPassword: z.core.$ZodString }, z.core.$strip>, TSchema extends z.ZodObject<{ password: z.core.$ZodString; confirmPassword: z.core.$ZodString }, z.core.$strip>,
+2 -17
View File
@@ -16,7 +16,7 @@ export default function BookmarksWidget({ options, itemId }: WidgetComponentProp
const board = useRequiredBoard(); const board = useRequiredBoard();
const [data] = clientApi.app.byIds.useSuspenseQuery(options.items, { const [data] = clientApi.app.byIds.useSuspenseQuery(options.items, {
select(data) { select(data) {
return data.toSorted((appA, appB) => options.items.indexOf(appA.id) - options.items.indexOf(appB.id)); return data.sort((appA, appB) => options.items.indexOf(appA.id) - options.items.indexOf(appB.id));
}, },
}); });
@@ -56,7 +56,6 @@ export default function BookmarksWidget({ options, itemId }: WidgetComponentProp
hideIcon={options.hideIcon} hideIcon={options.hideIcon}
hideHostname={options.hideHostname} hideHostname={options.hideHostname}
openNewTab={options.openNewTab} openNewTab={options.openNewTab}
withBorder={options.withBorder}
hasIconColor={board.iconColor !== null} hasIconColor={board.iconColor !== null}
/> />
)} )}
@@ -68,7 +67,6 @@ export default function BookmarksWidget({ options, itemId }: WidgetComponentProp
hideIcon={options.hideIcon} hideIcon={options.hideIcon}
hideHostname={options.hideHostname} hideHostname={options.hideHostname}
openNewTab={options.openNewTab} openNewTab={options.openNewTab}
withBorder={options.withBorder}
hasIconColor={board.iconColor !== null} hasIconColor={board.iconColor !== null}
/> />
)} )}
@@ -83,7 +81,6 @@ interface FlexLayoutProps {
hideIcon: boolean; hideIcon: boolean;
hideHostname: boolean; hideHostname: boolean;
openNewTab: boolean; openNewTab: boolean;
withBorder: boolean;
hasIconColor: boolean; hasIconColor: boolean;
} }
@@ -94,7 +91,6 @@ const FlexLayout = ({
hideIcon, hideIcon,
hideHostname, hideHostname,
openNewTab, openNewTab,
withBorder,
hasIconColor, hasIconColor,
}: FlexLayoutProps) => { }: FlexLayoutProps) => {
const board = useRequiredBoard(); const board = useRequiredBoard();
@@ -110,15 +106,7 @@ const FlexLayout = ({
key={app.id} key={app.id}
w="100%" w="100%"
> >
<Card <Card radius={board.itemRadius} className={classes.card} w="100%" display="flex" p={4} h="100%">
radius={board.itemRadius}
className={classes.card}
w="100%"
display="flex"
p={4}
h="100%"
withBorder={withBorder}
>
{direction === "row" ? ( {direction === "row" ? (
<VerticalItem <VerticalItem
app={app} app={app}
@@ -150,7 +138,6 @@ interface GridLayoutProps {
hideIcon: boolean; hideIcon: boolean;
hideHostname: boolean; hideHostname: boolean;
openNewTab: boolean; openNewTab: boolean;
withBorder: boolean;
itemDirection: "horizontal" | "vertical"; itemDirection: "horizontal" | "vertical";
hasIconColor: boolean; hasIconColor: boolean;
} }
@@ -161,7 +148,6 @@ const GridLayout = ({
hideIcon, hideIcon,
hideHostname, hideHostname,
openNewTab, openNewTab,
withBorder,
itemDirection, itemDirection,
hasIconColor, hasIconColor,
}: GridLayoutProps) => { }: GridLayoutProps) => {
@@ -182,7 +168,6 @@ const GridLayout = ({
h="100%" h="100%"
className={combineClasses(classes.card, classes["card-grid"])} className={combineClasses(classes.card, classes["card-grid"])}
radius={board.itemRadius} radius={board.itemRadius}
withBorder={withBorder}
p="xs" p="xs"
> >
{itemDirection === "horizontal" ? ( {itemDirection === "horizontal" ? (
-1
View File
@@ -24,7 +24,6 @@ export const { definition, componentLoader } = createWidgetDefinition("bookmarks
hideIcon: factory.switch({ defaultValue: false }), hideIcon: factory.switch({ defaultValue: false }),
hideHostname: factory.switch({ defaultValue: false }), hideHostname: factory.switch({ defaultValue: false }),
openNewTab: factory.switch({ defaultValue: true }), openNewTab: factory.switch({ defaultValue: true }),
withBorder: factory.switch({ defaultValue: false }),
items: factory.sortableItemList<RouterOutputs["app"]["all"][number], string>({ items: factory.sortableItemList<RouterOutputs["app"]["all"][number], string>({
ItemComponent: ({ item, handle: Handle, removeItem, rootAttributes }) => { ItemComponent: ({ item, handle: Handle, removeItem, rootAttributes }) => {
return ( return (
@@ -1,10 +1,20 @@
.statItem { .statItem {
padding: 12px; padding: 12px;
border-radius: var(--mantine-radius-md); border-radius: var(--mantine-radius-md);
background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6)); background-color: var(--mantine-color-gray-0);
transition: all 0.2s ease; transition: all 0.2s ease;
&:hover { &:hover {
background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5)); background-color: var(--mantine-color-gray-1);
}
}
@media (prefers-color-scheme: dark) {
.statItem {
background-color: var(--mantine-color-dark-6);
&:hover {
background-color: var(--mantine-color-dark-5);
}
} }
} }
+310 -302
View File
@@ -142,53 +142,53 @@ catalogs:
specifier: ^12.0.1 specifier: ^12.0.1
version: 12.0.1 version: 12.0.1
'@tiptap/extension-color': '@tiptap/extension-color':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-highlight': '@tiptap/extension-highlight':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-image': '@tiptap/extension-image':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-link': '@tiptap/extension-link':
specifier: ^3.24.0 specifier: ^3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-placeholder': '@tiptap/extension-placeholder':
specifier: ^3.24.0 specifier: ^3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-table': '@tiptap/extension-table':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-table-cell': '@tiptap/extension-table-cell':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-table-header': '@tiptap/extension-table-header':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-table-row': '@tiptap/extension-table-row':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-task-item': '@tiptap/extension-task-item':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-task-list': '@tiptap/extension-task-list':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-text-align': '@tiptap/extension-text-align':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-text-style': '@tiptap/extension-text-style':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/extension-underline': '@tiptap/extension-underline':
specifier: 3.24.0 specifier: 3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/react': '@tiptap/react':
specifier: ^3.24.0 specifier: ^3.23.6
version: 3.24.0 version: 3.23.6
'@tiptap/starter-kit': '@tiptap/starter-kit':
specifier: ^3.24.0 specifier: ^3.23.6
version: 3.24.0 version: 3.23.6
'@trpc/client': '@trpc/client':
specifier: ^11.17.0 specifier: ^11.17.0
version: 11.17.0 version: 11.17.0
@@ -756,7 +756,7 @@ importers:
version: 9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) version: 9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
'@mantine/tiptap': '@mantine/tiptap':
specifier: 'catalog:' specifier: 'catalog:'
version: 9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(@tiptap/extension-link@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/react@3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6) version: 9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(@tiptap/extension-link@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))(@tiptap/react@3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
'@tabler/icons-react': '@tabler/icons-react':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.44.0(react@19.2.6) version: 3.44.0(react@19.2.6)
@@ -2396,52 +2396,52 @@ importers:
version: 3.44.0(react@19.2.6) version: 3.44.0(react@19.2.6)
'@tiptap/extension-color': '@tiptap/extension-color':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-text-style@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))) version: 3.23.6(@tiptap/extension-text-style@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6)))
'@tiptap/extension-highlight': '@tiptap/extension-highlight':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-image': '@tiptap/extension-image':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-link': '@tiptap/extension-link':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-placeholder': '@tiptap/extension-placeholder':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-table': '@tiptap/extension-table':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-table-cell': '@tiptap/extension-table-cell':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-table-header': '@tiptap/extension-table-header':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-table-row': '@tiptap/extension-table-row':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-task-item': '@tiptap/extension-task-item':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-task-list': '@tiptap/extension-task-list':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-text-align': '@tiptap/extension-text-align':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-text-style': '@tiptap/extension-text-style':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-underline': '@tiptap/extension-underline':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) version: 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/react': '@tiptap/react':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) version: 3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
'@tiptap/starter-kit': '@tiptap/starter-kit':
specifier: 'catalog:' specifier: 'catalog:'
version: 3.24.0 version: 3.23.6
clsx: clsx:
specifier: 'catalog:' specifier: 'catalog:'
version: 2.1.1 version: 2.1.1
@@ -3268,9 +3268,15 @@ packages:
'@fastify/proxy-addr@5.1.0': '@fastify/proxy-addr@5.1.0':
resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==} resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==}
'@floating-ui/core@1.7.3':
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
'@floating-ui/core@1.7.5': '@floating-ui/core@1.7.5':
resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
'@floating-ui/dom@1.7.4':
resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
'@floating-ui/dom@1.7.6': '@floating-ui/dom@1.7.6':
resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
@@ -4926,215 +4932,215 @@ packages:
'@testcontainers/redis@12.0.1': '@testcontainers/redis@12.0.1':
resolution: {integrity: sha512-x5iDR6Y2Mc+2rTJYSQlRTtBMCPt77pKxDogpqRwXgJVmWoDrWFpiFcA/dw6IEoNuyxYUg03tbS8/VzCJI5JX6A==} resolution: {integrity: sha512-x5iDR6Y2Mc+2rTJYSQlRTtBMCPt77pKxDogpqRwXgJVmWoDrWFpiFcA/dw6IEoNuyxYUg03tbS8/VzCJI5JX6A==}
'@tiptap/core@3.24.0': '@tiptap/core@3.23.6':
resolution: {integrity: sha512-GTAsXAI32p4hEZgPzvUv2RPrObxamy9AFhmhG10fXSvN/cDUs8naEYVIqDV3Sh99jMwQEbTFKW1E1mcspsY6ow==} resolution: {integrity: sha512-MRB3pHz4Oxqmcawh0cQ5iOGdY5xtNYp/1CoK7hdTLzw5K0C6/gTC2VvanB1R4INaB6EpBkxG/GiWkVirDRnuXw==}
peerDependencies: peerDependencies:
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-blockquote@3.24.0': '@tiptap/extension-blockquote@3.23.6':
resolution: {integrity: sha512-DgwEEJ1GbDQcT054ynxoaZGmB9apGeUklPrinq9o6xdLHpdg+bO9HCQzggdB8n21VLLglb8jfAEWsVNwh3eASQ==} resolution: {integrity: sha512-2RmnqNqTltZ2k1F7IfjoDNs935Uq4rRDR7d98mqkg3OlDktcQIyBpv0t9dTay6H5bkQeZUuS8ogK2S1E8Edjug==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-bold@3.24.0': '@tiptap/extension-bold@3.23.6':
resolution: {integrity: sha512-CujogYaynasklFKHADUseuvj8X2FnWktTCCo3Hl+nlyRvBTmm5TK2aqiamg3v2P4dBh3O6a70mo8BfRJPuiR1g==} resolution: {integrity: sha512-1LMhjnytdbbhWHSoOwnLxZAOQZWPkKyXVCNmaIk0Mhi4tLPUXptG4qKS5sVYTCveE5H6IBPFrbgBFi5dMI6krA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-bubble-menu@3.24.0': '@tiptap/extension-bubble-menu@3.23.6':
resolution: {integrity: sha512-jRXD+JPu9ayvq78g8hsCxx4q/qUFtrdfIYirRSf5YUseuuUbtfrq83AsGabcygpUTefjJkMQoXNITkh6294Ggw==} resolution: {integrity: sha512-Mwkyp9LkDHFbqmWRIkp63FinRxFu3ajC4qSb9t4mnHsb4kAdbNLLsGtbFg+le0SWk4CxGwAOwM7SzeJ+6UGqCA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-bullet-list@3.24.0': '@tiptap/extension-bullet-list@3.23.6':
resolution: {integrity: sha512-IOpAm5c4XVVVvkOef+V9XYMVpea+3MgBpCQgn83UQRlwO9eIMwmcyxOznu7gQPQVShTEpkt4T6uK+ZN9o8meIA==} resolution: {integrity: sha512-RMRgfXZykr/13X8UBOwvpgysVOo9KchwqMoEbvqQSj4YFfU56iIn59C8sbxiQ1sKfeltUf0wH4fPc0I4iwKqAA==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-code-block@3.24.0': '@tiptap/extension-code-block@3.23.6':
resolution: {integrity: sha512-NZglw4oHoH6oJ5+HvxxQCYk+wODJmsxzUpRQdsOmje08sekQH+Zt9i4UKimBhg4urpd5r+dKXTslab9a5eQ86w==} resolution: {integrity: sha512-4kccgcn5yHThxrzsIhJny3EwfEZYIk+BjUCL4uIuzOyWvExtGhZ6JMHVCZeMhI8D1/bX1LNkkAKN5DXPzH4lXQ==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-code@3.24.0': '@tiptap/extension-code@3.23.6':
resolution: {integrity: sha512-MAQtrPRQ+HRmcGotWbksdIGeH1gqayFAdvi4lNGeFT7taHXP1o1XD7CQp7iYIKmg8IU4/MQ+RdetSfuC1A9edQ==} resolution: {integrity: sha512-KG8KXFYyLrtYvT7AZ1WGV61ofx8pDe5g9pH658MERxqQGii+Pyfc6xkz04l7XeBts/7+571UQp/0O7i/z560TA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-color@3.24.0': '@tiptap/extension-color@3.23.6':
resolution: {integrity: sha512-gVv9zfQ9diq/sk+SVJzqadShsOtDK1XPojBZR1zXg1QxedzdwLKuRDxvnlfIc3kFIyaDP4mNrek+anednTbWBA==} resolution: {integrity: sha512-2WxYc+X+OGFXbq/Ak0VXODEzfK1l5wz33oTWSuhdSw44HAQM7+SSyiDnMCXDQdqi063ANqMmQmlw5WngjQ6wCA==}
peerDependencies: peerDependencies:
'@tiptap/extension-text-style': 3.24.0 '@tiptap/extension-text-style': 3.23.6
'@tiptap/extension-document@3.24.0': '@tiptap/extension-document@3.23.6':
resolution: {integrity: sha512-yxgM3+yXy2XZzEwH43y2Kp8D1BkblxEWLXqo0YCoAKtxyKCcEaT8kdlf70kS7D0+VSzYU4D0iN7VdQIYHcL2mA==} resolution: {integrity: sha512-XDAIgG9KcKumFM9KJWUEUhXPbFIhhl47bfy5GknareWTRKke85rcoj/oxKKO9ihLZr8JfpbXjqnS4SCm5yhYPw==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-dropcursor@3.24.0': '@tiptap/extension-dropcursor@3.23.6':
resolution: {integrity: sha512-Dbv1c5LnvG3PT+yEbCNroyOeeUkHq9wcir2pbC7wri7g7d2sCi0+HvKH0MAxLwY3j5NJJSiSyG2ypMaXOAs4sg==} resolution: {integrity: sha512-+XWEoRKf3lXxi7Le1aOM2xU1XHwxICGpXjT3m4QaYqUgIpsq8gQEuso6kVg8DnTD7biKQs6+oIQ0o2b/gTW9WA==}
peerDependencies: peerDependencies:
'@tiptap/extensions': 3.24.0 '@tiptap/extensions': 3.23.6
'@tiptap/extension-floating-menu@3.24.0': '@tiptap/extension-floating-menu@3.23.6':
resolution: {integrity: sha512-7QEbf3mUzFAkejjQGX9f0L507oMtnOBRwHt2skUTR+9yXgudsN8zaDBSSRHLeMWGk9b7L293ZMA6zCRrZaHrfA==} resolution: {integrity: sha512-2kjuDcEq69lEcECl75xqY5MyzUSh2zcC5aLrpwP1WwhJz5bxsIFHiaps5AP6h9R4A+ZBj5b2haay2Y1wDUU3VA==}
peerDependencies: peerDependencies:
'@floating-ui/dom': ^1.0.0 '@floating-ui/dom': ^1.0.0
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-gapcursor@3.24.0': '@tiptap/extension-gapcursor@3.23.6':
resolution: {integrity: sha512-CzCP5/jni5RFwW9jCfBO6auh83GbaioMTpSk6tyR3sd+CbwlBcUdsJFGJkbaRdiSS9dgIyi+6hRbhjpYdHcp+w==} resolution: {integrity: sha512-wbKmxXsszxWacEkrHucRpSQbiKjz4fmOebD6OVyL9AcrmlbxNk8vcM3iyh/8cVeRy09XY+morM165t/u7/z4IQ==}
peerDependencies: peerDependencies:
'@tiptap/extensions': 3.24.0 '@tiptap/extensions': 3.23.6
'@tiptap/extension-hard-break@3.24.0': '@tiptap/extension-hard-break@3.23.6':
resolution: {integrity: sha512-T/ZEBiHQPMyTqDvXG0tiqBToNeuSemIPmNtdoGSgBN/degVl7VJZqQIrLIvOUHfjf3QkRs7TE/mcqTJsIboO/g==} resolution: {integrity: sha512-KeUm+tkUfIVSX9QM9XOIhaay0Fn36sLKUo5NVYjN3uJaxFvaZXZmTlxdO85OTdgF2P5sqh9LomrIgliaFRGk4w==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-heading@3.24.0': '@tiptap/extension-heading@3.23.6':
resolution: {integrity: sha512-GCSgapIzQPqEGNcVGE0/Pcjg5wITMLYJlrS3GGVw7BPmECJwgexcoOsEwkxtzJnXT/HpFXbvOFW43sM0KeHSjg==} resolution: {integrity: sha512-A/0jPhxnUh9THSZymlu0OGPZe1wdFdwHAXnRCmqvYUCwJjrG7LCC/ahzmcj1tcNzI9hgHyuYPSfev8RXYrNu/w==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-highlight@3.24.0': '@tiptap/extension-highlight@3.23.6':
resolution: {integrity: sha512-+Vx6YKSP+lzCBiTbgQOpR2rIOzL8Ns6UnOBtW4O6tYc7TMTexycaG66RWxXMpAD6QkamwLwX3H5TTYviWtU9RQ==} resolution: {integrity: sha512-GWv6R4iZzVrNeB33qtJDBt/BfVjuc5S/sUF/VDFAtK8h86bg4cEm1tGLEsui4T3+vij/t+P+eoGhkzF6NGogdg==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-horizontal-rule@3.24.0': '@tiptap/extension-horizontal-rule@3.23.6':
resolution: {integrity: sha512-DFzWJTrb23x+qssLLs85vEyho8ItUGp3RY9XUsVTIAGZn5IsoUw8wMsvIBlH1ux4Ch7gLchtcD6kpTdMdrL9kw==} resolution: {integrity: sha512-hEUlz4H+I64r+TH6LCuNCRgO7JTHncXGmx9+WbU69EOfY8O0ZurcgeJc8HeiAKL+r9YuC1e5YHfFxgCaaC0jlg==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-image@3.24.0': '@tiptap/extension-image@3.23.6':
resolution: {integrity: sha512-mH+bvsX2cPKuZzV7YMQi4FV2YbDP+Kmq36bY+Bwi/x4mYUc8u0cjQxcu8RzLO7GtsgUJPxGMwfkQxmDqXFLZvw==} resolution: {integrity: sha512-vvNGxArvD2dW+XvV0KdYovRVUzCy8QVNulc2r5pV7umnG1E6cCmMkiHiif8J2ePJu2KtysAvJQe0iF+UqueGMw==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-italic@3.24.0': '@tiptap/extension-italic@3.23.6':
resolution: {integrity: sha512-mf3cbNlbMPUNj3IyUkIke+o3ZpOUrtVeY5Yqs5IM/VhkUUh/PdIzqw74VuqEAJ0Z4oZ6nNDHeYLrl3Be1j99lQ==} resolution: {integrity: sha512-wol5KdwCPAvpiYhH9PLlvO8ZnJHwZtIboVevrfOGgBcKlXRA3dedR4OAMXHnUtkkzu9KtliLg1+TYzEx4JZG9Q==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-link@3.24.0': '@tiptap/extension-link@3.23.6':
resolution: {integrity: sha512-MwMoNGG2mL5XGFV1tEGunBRglwsIbW+ZOB2QnKiv+Mcbi2JCWMrorndJZBqpVPR5nM+Bef2KnpchEJmYlQLvKQ==} resolution: {integrity: sha512-KNZz7z7P2/qbQsx5bPAbSPjrKDg1VHsedGlLHJCr8U2VRD5VgmDLkMpkouP1CsDg15qgyUKv/nDib5KgPpLNWA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-list-item@3.24.0': '@tiptap/extension-list-item@3.23.6':
resolution: {integrity: sha512-zl/U3viJiV9OzkKM37AHIUN1af1TSLrcbHUUoNLkfJ33Nq+NlpaXpCVK0rKRqiLFJf7zk/a5KWG5CrOy9TxjKA==} resolution: {integrity: sha512-3zzyhdkUWcHVpXuvy6KiIwjh29rbH6gEDEqPQqHLrl1XGnO9pnShC7pSHctlCDjmcx3O4n9cd4QMtVBlUerbiA==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-list-keymap@3.24.0': '@tiptap/extension-list-keymap@3.23.6':
resolution: {integrity: sha512-69fKcrngYGEKWNn4R5oLwl0YuV3FY4kufEValVcjnihUmqJTE1vx+fwctYoTsOGnIuNGpUIQ7f9YDD/0w34qBw==} resolution: {integrity: sha512-x8bPcLViGzg/RAmQM/XtmfqIwQ/Pv9Q8mkd+OgfUiTqjeJqKwVQmiqbLFNa7zw81+H61M+HDU+qGAaQ3vRIMjw==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-list@3.24.0': '@tiptap/extension-list@3.23.6':
resolution: {integrity: sha512-GcxDVMMmDGj7OFTBrV7JpVgr5wxlr2vmjwH7U8QxZX7OJI5vrsMYl/U6KRTvUpG8wP+Zmo5jRlLM+BbL+a/W3g==} resolution: {integrity: sha512-z6vj9+Qht2sjdQkyyHcUpsC/yCIZqTrQiyHDhs/HGKrfvoANyAZGpqdNeKf1wSyjIso+27tQuIH5NDfk8ygyNw==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-ordered-list@3.24.0': '@tiptap/extension-ordered-list@3.23.6':
resolution: {integrity: sha512-buRa6bmBDw0TztH+rAcusIye14DiLDS+yGheo6GiNCTD7kKJnksXagBdxvip3jhW5sx7gyAKvoBmvGSg1BbsGA==} resolution: {integrity: sha512-1m/wWB/ZtXcmG2vNdiUkCqsOgqv5vBjCv/mVaHhF9OvV+zQS8YDjoWE7zEuT/GgELdT77Xq8lHrn4nCDudB3/A==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-paragraph@3.24.0': '@tiptap/extension-paragraph@3.23.6':
resolution: {integrity: sha512-wD06aB6hO7LgcrlhGiw7I64k2tus9kNoICX5R+UecBSB1DVJdzKvXoXL2kPNv4DqYvljHdkIeK/OpuOTQd6MJA==} resolution: {integrity: sha512-+7m58LUSncodjrIyXks4RZ3tLNYrvgT77wRR4l3HnM5OABY3GDsDTqi7c1t1yI29NVOSk/DUacqy6UwYAj1DGg==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-placeholder@3.24.0': '@tiptap/extension-placeholder@3.23.6':
resolution: {integrity: sha512-3jfYYCIuwMADhvZ92vB6c80YiTmgTSFR23JqyLps8qkQtV59Va5CBYpwJtSs1+VrbCVnNxhZBHhVXusZO3uRkA==} resolution: {integrity: sha512-8I6b2aevF74aLgymKMxbDxSLxWA2y+2dh0zZDeI8sRZ2m6WHHes+Kyuuwkq1HIPcR+ZLpbec74cmf6lcL/yvqQ==}
peerDependencies: peerDependencies:
'@tiptap/extensions': 3.24.0 '@tiptap/extensions': 3.23.6
'@tiptap/extension-strike@3.24.0': '@tiptap/extension-strike@3.23.6':
resolution: {integrity: sha512-sfN1iQs6Fdlorrfe8wipDkTPwu/Egx3s2fkY7TAWusTGFHwlovuRUGFKqCL9dI4N3u6uqUMpEuWmQNgv+aQGjQ==} resolution: {integrity: sha512-oF7FEZ37f15aCe5kPgzGDYf/m+hr7VdQ/Ko/Hds/UM9pX7AG1fdtmRrl6wqkRqDM/incZaC/AQR2/Dpo2VCNGQ==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-table-cell@3.24.0': '@tiptap/extension-table-cell@3.23.6':
resolution: {integrity: sha512-jg62iVc1L8tOycSuwZ5i82EGKGuvelCIkpFX7wvHMl9EiPX9fv70enmb4ua9DyLgRtYg/MNrGOdUATRpxWsFRA==} resolution: {integrity: sha512-hS9TmmvRlT9/ikT+0ukACS+hmJuii4zQaH47cg3oJkz/Fv7O7tL7GZniKtK6l2OUZGPhY+4SV2RkDB6bD7DXfw==}
peerDependencies: peerDependencies:
'@tiptap/extension-table': 3.24.0 '@tiptap/extension-table': 3.23.6
'@tiptap/extension-table-header@3.24.0': '@tiptap/extension-table-header@3.23.6':
resolution: {integrity: sha512-z1TGVoBD5lVX48hpKcrQY5vETB8aCR61Enk5wGl45zNO/sMEMNxYfDKTkMydyOFUWfGqvOPnjDHJqJuT36/19w==} resolution: {integrity: sha512-D6o0a1cJXUU0xWakainBFGPnGHinQkPcdu1YqGd/PoFANY38lnuZt/NW2O/OLfLXu5LXDRfpqF1+dsKww27dUA==}
peerDependencies: peerDependencies:
'@tiptap/extension-table': 3.24.0 '@tiptap/extension-table': 3.23.6
'@tiptap/extension-table-row@3.24.0': '@tiptap/extension-table-row@3.23.6':
resolution: {integrity: sha512-kASEYMWZF9ZqO6DRGz0LiD11c3LPfzOlFiJQVDrOyLP7xkJpHzIAKH0K+8u4aohOziDLn8nz+8I+3xjRS46oGg==} resolution: {integrity: sha512-OauWVzkyRQg0rKOqM/a3PuKPc1S7YXMb1LRN7Nh8Ytvglvd7GFRTbl1lVqdZRaz4Jzopag4PQnriIZfMPUpxWw==}
peerDependencies: peerDependencies:
'@tiptap/extension-table': 3.24.0 '@tiptap/extension-table': 3.23.6
'@tiptap/extension-table@3.24.0': '@tiptap/extension-table@3.23.6':
resolution: {integrity: sha512-lr5elob3uJnB+ltgqPDEeVQmIPRx6JoS0I6z93tOgKsI2mIsaw5ErghteeiCTpExdyax7aWR0fn5pZzLVDQL8A==} resolution: {integrity: sha512-XbhZXjhsS6AP7ThoZxjAnNs+NiR81YRori25l6E+ORqB7quiPkIXOAi5h4AIpkn/CYIqze6ere11lWsYpDjtaQ==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-task-item@3.24.0': '@tiptap/extension-task-item@3.23.6':
resolution: {integrity: sha512-2VtX6VOp4SJk5E/VHeSC2Acfbge6h69TUBhF7hFebbiCDyB73xCaPKcuClIyzOlWJgpWz2ZPXwVB+Y3meXw+yw==} resolution: {integrity: sha512-PIHW+3KZCtEmtC7z34rfkusbC42HYr7uw1h5xNvrazQwJGWhKo1UmI0Yea5vyJNKPrTLPCMEm/mgMrj8nNAZfA==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-task-list@3.24.0': '@tiptap/extension-task-list@3.23.6':
resolution: {integrity: sha512-EIbB/WQ7L92WfaY5AF9upH93nIgBHjGt5zwPYoX+ZTpBncebr1AEDF7rc+LHNuSa1g1ToOKbFB88ep02IIXOjA==} resolution: {integrity: sha512-XNuYbVV7F0TBpxHqqEFvrxwGbmTq01qJrZA6qwbQopOsw5wOsCy4XQsCkeZ8BGkakORCEWGSMjPyVOtIKq2jGA==}
peerDependencies: peerDependencies:
'@tiptap/extension-list': 3.24.0 '@tiptap/extension-list': 3.23.6
'@tiptap/extension-text-align@3.24.0': '@tiptap/extension-text-align@3.23.6':
resolution: {integrity: sha512-WKFtYXGthtkUc+Cwy2fItSr+9FKwLZjkJVAY1GhkRdcq35qTuVhkb4Q4wR2Rhkb6QRqtlxF1NDuTf2vxiQmfBQ==} resolution: {integrity: sha512-pE+gDmvnrSMWHADDnDSzaO7YUi9kOywQkyrqZ9bEPLddZred7ICoJ4NtD2DqLjDSur+HijaJuByResWb78c6FA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-text-style@3.24.0': '@tiptap/extension-text-style@3.23.6':
resolution: {integrity: sha512-1Hy+5tFEAsnoLhZ/eqmza4USvFHwMA8haeAdCGlwTeshBrt+nUKTrEsRHidF60cGsRwlTcuqxSkjT94dULgp5Q==} resolution: {integrity: sha512-Auasgj469wkQ5ip+Zi2gaRzvqxx9qKG58+1mkT8yPE3QAGnOIg/AaKyQ7pTV77UyL3FHvLnU+KsWCad+qcobww==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-text@3.24.0': '@tiptap/extension-text@3.23.6':
resolution: {integrity: sha512-Im7keLPEihxm3+LyF+drYCoaOY5hlq35lvHAp/el6M8pJ/scts88HrYpdR1Yc4BtpZBIhfHSyWgPaupI4qwdeg==} resolution: {integrity: sha512-ipoC2TkIAIOTiF5ByiGgvQB1DqDyfP90wrUB3mohBcgvp7lQnwHszCDGv8dNnmcUek8uXV/uoLu2VXeVQlxjPA==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extension-underline@3.24.0': '@tiptap/extension-underline@3.23.6':
resolution: {integrity: sha512-D4W4X3UMq9dLVIOfPB9+UodQ4eAJ8yDcm8qFWAwq0a15YWH6bnwulCuIdV+U5dEG+yaRxN8haB9GrrID9jmrSA==} resolution: {integrity: sha512-P55wGIZGYTVH92Fq0cgI4/O9AhLCaJC3hhxg15RSERP5/YegM9eJHDK/GQ1EE/DvYA+xpYGOV6agKwAUqfA/Iw==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/extensions@3.24.0': '@tiptap/extensions@3.23.6':
resolution: {integrity: sha512-z6gRYzy2ucJp07OQ0F2W07NxyhMTxPYH1ia2eGiQkWax1i56oExpjMsDHP8THWlg8Tb7NnbfKpkfh881EsmofA==} resolution: {integrity: sha512-X09/Db1teB+ifXzDGVVFmOeQRx7wTAayE9/280spxpsHkHZvJ5bHRvWIzUzviMIjbBz+NPDIKYPK7gMfh9iaig==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/pm@3.24.0': '@tiptap/pm@3.23.6':
resolution: {integrity: sha512-QQP/78ryOZDN99gNBV7dgh69/8AYaOYQYFklq/iR+ZRFaaL3+qqHFvPVJapGkzPdymBgNJ34xjFM8n5pJ4QmMg==} resolution: {integrity: sha512-in5CaMaWlJcH2A1q6GJKFtrodE8WLS3M9tIi/f89jPmIVHJShpodC0KZDNyJkrVBQomYk0DEh86Utm6ASXzQww==}
'@tiptap/react@3.24.0': '@tiptap/react@3.23.6':
resolution: {integrity: sha512-KxnrlQbzOgA02EMsfuGGHtNhfkJQGqVlQttmQctI9DOl/F3gcaRqg+wNTBY1Fof8yDaZ8Z1LL1F0C05W0o3vUw==} resolution: {integrity: sha512-Tw9KZkYqFMk3vaJAEQKqEYIO/iq3cSJe7OUEGBul4k4GaMQeLItLf5EYhUd0GIPXci1WVVPNntKJsHfX25M37w==}
peerDependencies: peerDependencies:
'@tiptap/core': 3.24.0 '@tiptap/core': 3.23.6
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
'@tiptap/starter-kit@3.24.0': '@tiptap/starter-kit@3.23.6':
resolution: {integrity: sha512-Ef4PCP96vcY2GonXN9J0M8iC6zvxPTmQlL/QZiCwuYqqnH/hNpYIjNSQdTndiDpxRKofa32Sr2HWktgEnL32Bg==} resolution: {integrity: sha512-gykwtGWrnWCmtql1hid3opac/KV8zQvOAnu3bTqIqcHrn1FusbUwKmNzavSbfGvcktHM3hFjb35W48JyVLyu/A==}
'@tree-sitter-grammars/tree-sitter-yaml@0.7.1': '@tree-sitter-grammars/tree-sitter-yaml@0.7.1':
resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==} resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==}
@@ -8307,9 +8313,6 @@ packages:
prosemirror-history@1.4.1: prosemirror-history@1.4.1:
resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==}
prosemirror-inputrules@1.5.1:
resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
prosemirror-keymap@1.2.2: prosemirror-keymap@1.2.2:
resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
@@ -10460,10 +10463,21 @@ snapshots:
'@fastify/forwarded': 3.0.1 '@fastify/forwarded': 3.0.1
ipaddr.js: 2.3.0 ipaddr.js: 2.3.0
'@floating-ui/core@1.7.3':
dependencies:
'@floating-ui/utils': 0.2.11
optional: true
'@floating-ui/core@1.7.5': '@floating-ui/core@1.7.5':
dependencies: dependencies:
'@floating-ui/utils': 0.2.11 '@floating-ui/utils': 0.2.11
'@floating-ui/dom@1.7.4':
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.11
optional: true
'@floating-ui/dom@1.7.6': '@floating-ui/dom@1.7.6':
dependencies: dependencies:
'@floating-ui/core': 1.7.5 '@floating-ui/core': 1.7.5
@@ -10996,12 +11010,12 @@ snapshots:
dependencies: dependencies:
react: 19.2.6 react: 19.2.6
'@mantine/tiptap@9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(@tiptap/extension-link@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))(@tiptap/react@3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': '@mantine/tiptap@9.2.2(@mantine/core@9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@mantine/hooks@9.2.2(react@19.2.6))(@tiptap/extension-link@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))(@tiptap/react@3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies: dependencies:
'@mantine/core': 9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mantine/core': 9.2.2(@mantine/hooks@9.2.2(react@19.2.6))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
'@mantine/hooks': 9.2.2(react@19.2.6) '@mantine/hooks': 9.2.2(react@19.2.6)
'@tiptap/extension-link': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-link': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/react': 3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@tiptap/react': 3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
react: 19.2.6 react: 19.2.6
react-dom: 19.2.6(react@19.2.6) react-dom: 19.2.6(react@19.2.6)
@@ -12218,175 +12232,174 @@ snapshots:
- bare-buffer - bare-buffer
- supports-color - supports-color
'@tiptap/core@3.24.0(@tiptap/pm@3.24.0)': '@tiptap/core@3.23.6(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-blockquote@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-blockquote@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-bold@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-bold@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-bubble-menu@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-bubble-menu@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@floating-ui/dom': 1.7.6 '@floating-ui/dom': 1.7.4
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
optional: true optional: true
'@tiptap/extension-bullet-list@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-bullet-list@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-code-block@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-code-block@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-code@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-code@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-color@3.24.0(@tiptap/extension-text-style@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)))': '@tiptap/extension-color@3.23.6(@tiptap/extension-text-style@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6)))':
dependencies: dependencies:
'@tiptap/extension-text-style': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-text-style': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-document@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-document@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-dropcursor@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-dropcursor@3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extensions': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-floating-menu@3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-floating-menu@3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@floating-ui/dom': 1.7.6 '@floating-ui/dom': 1.7.6
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
optional: true optional: true
'@tiptap/extension-gapcursor@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-gapcursor@3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extensions': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-hard-break@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-hard-break@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-heading@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-heading@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-highlight@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-highlight@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-horizontal-rule@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-horizontal-rule@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-image@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-image@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-italic@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-italic@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-link@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-link@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
linkifyjs: 4.3.3 linkifyjs: 4.3.3
'@tiptap/extension-list-item@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-list-item@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-list-keymap@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-list-keymap@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-ordered-list@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-ordered-list@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-paragraph@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-paragraph@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-placeholder@3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-placeholder@3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extensions': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-strike@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-strike@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-table-cell@3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-table-cell@3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-table': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-table': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-table-header@3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-table-header@3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-table': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-table': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-table-row@3.24.0(@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-table-row@3.23.6(@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-table': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-table': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-table@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extension-table@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/extension-task-item@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-task-item@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-task-list@3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0))': '@tiptap/extension-task-list@3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-text-align@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-text-align@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-text-style@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-text-style@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-text@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-text@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-underline@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))': '@tiptap/extension-underline@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)': '@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tiptap/pm@3.24.0': '@tiptap/pm@3.23.6':
dependencies: dependencies:
prosemirror-changeset: 2.3.0 prosemirror-changeset: 2.3.0
prosemirror-commands: 1.6.2 prosemirror-commands: 1.6.2
prosemirror-dropcursor: 1.8.1 prosemirror-dropcursor: 1.8.1
prosemirror-gapcursor: 1.3.2 prosemirror-gapcursor: 1.3.2
prosemirror-history: 1.4.1 prosemirror-history: 1.4.1
prosemirror-inputrules: 1.5.1
prosemirror-keymap: 1.2.2 prosemirror-keymap: 1.2.2
prosemirror-model: 1.24.1 prosemirror-model: 1.24.1
prosemirror-schema-list: 1.5.1 prosemirror-schema-list: 1.5.1
@@ -12395,10 +12408,10 @@ snapshots:
prosemirror-transform: 1.10.2 prosemirror-transform: 1.10.2
prosemirror-view: 1.41.4 prosemirror-view: 1.41.4
'@tiptap/react@3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': '@tiptap/react@3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@types/react': 19.2.15 '@types/react': 19.2.15
'@types/react-dom': 19.2.3(@types/react@19.2.15) '@types/react-dom': 19.2.3(@types/react@19.2.15)
'@types/use-sync-external-store': 0.0.6 '@types/use-sync-external-store': 0.0.6
@@ -12407,37 +12420,37 @@ snapshots:
react-dom: 19.2.6(react@19.2.6) react-dom: 19.2.6(react@19.2.6)
use-sync-external-store: 1.6.0(react@19.2.6) use-sync-external-store: 1.6.0(react@19.2.6)
optionalDependencies: optionalDependencies:
'@tiptap/extension-bubble-menu': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-bubble-menu': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-floating-menu': 3.24.0(@floating-ui/dom@1.7.6)(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-floating-menu': 3.23.6(@floating-ui/dom@1.7.6)(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
transitivePeerDependencies: transitivePeerDependencies:
- '@floating-ui/dom' - '@floating-ui/dom'
'@tiptap/starter-kit@3.24.0': '@tiptap/starter-kit@3.23.6':
dependencies: dependencies:
'@tiptap/core': 3.24.0(@tiptap/pm@3.24.0) '@tiptap/core': 3.23.6(@tiptap/pm@3.23.6)
'@tiptap/extension-blockquote': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-blockquote': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-bold': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-bold': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-bullet-list': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-bullet-list': 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-code': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-code': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-code-block': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-code-block': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-document': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-document': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-dropcursor': 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-dropcursor': 3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-gapcursor': 3.24.0(@tiptap/extensions@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-gapcursor': 3.23.6(@tiptap/extensions@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-hard-break': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-hard-break': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-heading': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-heading': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-horizontal-rule': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-horizontal-rule': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-italic': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-italic': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-link': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-link': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-list': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extension-list': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/extension-list-item': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-list-item': 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-list-keymap': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-list-keymap': 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-ordered-list': 3.24.0(@tiptap/extension-list@3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0)) '@tiptap/extension-ordered-list': 3.23.6(@tiptap/extension-list@3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6))
'@tiptap/extension-paragraph': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-paragraph': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-strike': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-strike': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-text': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-text': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extension-underline': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0)) '@tiptap/extension-underline': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))
'@tiptap/extensions': 3.24.0(@tiptap/core@3.24.0(@tiptap/pm@3.24.0))(@tiptap/pm@3.24.0) '@tiptap/extensions': 3.23.6(@tiptap/core@3.23.6(@tiptap/pm@3.23.6))(@tiptap/pm@3.23.6)
'@tiptap/pm': 3.24.0 '@tiptap/pm': 3.23.6
'@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)': '@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)':
dependencies: dependencies:
@@ -15735,11 +15748,6 @@ snapshots:
prosemirror-view: 1.41.4 prosemirror-view: 1.41.4
rope-sequence: 1.3.4 rope-sequence: 1.3.4
prosemirror-inputrules@1.5.1:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.10.2
prosemirror-keymap@1.2.2: prosemirror-keymap@1.2.2:
dependencies: dependencies:
prosemirror-state: 1.4.3 prosemirror-state: 1.4.3
+16 -16
View File
@@ -49,22 +49,22 @@ catalog:
"@testcontainers/mysql": ^12.0.1 "@testcontainers/mysql": ^12.0.1
"@testcontainers/postgresql": ^12.0.1 "@testcontainers/postgresql": ^12.0.1
"@testcontainers/redis": ^12.0.1 "@testcontainers/redis": ^12.0.1
"@tiptap/extension-color": 3.24.0 "@tiptap/extension-color": 3.23.6
"@tiptap/extension-highlight": 3.24.0 "@tiptap/extension-highlight": 3.23.6
"@tiptap/extension-image": 3.24.0 "@tiptap/extension-image": 3.23.6
"@tiptap/extension-link": ^3.24.0 "@tiptap/extension-link": ^3.23.6
"@tiptap/extension-placeholder": ^3.24.0 "@tiptap/extension-placeholder": ^3.23.6
"@tiptap/extension-table": 3.24.0 "@tiptap/extension-table": 3.23.6
"@tiptap/extension-table-cell": 3.24.0 "@tiptap/extension-table-cell": 3.23.6
"@tiptap/extension-table-header": 3.24.0 "@tiptap/extension-table-header": 3.23.6
"@tiptap/extension-table-row": 3.24.0 "@tiptap/extension-table-row": 3.23.6
"@tiptap/extension-task-item": 3.24.0 "@tiptap/extension-task-item": 3.23.6
"@tiptap/extension-task-list": 3.24.0 "@tiptap/extension-task-list": 3.23.6
"@tiptap/extension-text-align": 3.24.0 "@tiptap/extension-text-align": 3.23.6
"@tiptap/extension-text-style": 3.24.0 "@tiptap/extension-text-style": 3.23.6
"@tiptap/extension-underline": 3.24.0 "@tiptap/extension-underline": 3.23.6
"@tiptap/react": ^3.24.0 "@tiptap/react": ^3.23.6
"@tiptap/starter-kit": ^3.24.0 "@tiptap/starter-kit": ^3.23.6
"@trpc/client": ^11.17.0 "@trpc/client": ^11.17.0
"@trpc/next": ^11.17.0 "@trpc/next": ^11.17.0
"@trpc/react-query": ^11.17.0 "@trpc/react-query": ^11.17.0