setTheme(theme === 'light' ? 'dark' : 'light')}
>
diff --git a/templates/plate-playground-template/src/components/tabbable-element.tsx b/templates/plate-playground-template/src/components/tabbable-element.tsx
index d0b89da486..f81d8c859d 100644
--- a/templates/plate-playground-template/src/components/tabbable-element.tsx
+++ b/templates/plate-playground-template/src/components/tabbable-element.tsx
@@ -1,10 +1,11 @@
import React, { CSSProperties } from 'react';
+
import { PlateElementProps } from '@udecode/plate-common/react';
import { useFocused, useSelected } from 'slate-react';
const boxStyle: CSSProperties = {
- padding: '8px',
marginBottom: '8px',
+ padding: '8px',
};
const unselectedBoxStyle: CSSProperties = {
diff --git a/templates/plate-playground-template/src/config/site.ts b/templates/plate-playground-template/src/config/site.ts
index 79340db25e..833ac028bd 100644
--- a/templates/plate-playground-template/src/config/site.ts
+++ b/templates/plate-playground-template/src/config/site.ts
@@ -1,18 +1,18 @@
export type SiteConfig = typeof siteConfig;
export const siteConfig = {
- name: 'Next.js',
description:
'Rich-text editor components built with Radix UI and Tailwind CSS.',
+ links: {
+ docs: 'https://platejs.org',
+ github: 'https://github.com/udecode/plate',
+ twitter: 'https://twitter.com/zbeyens',
+ },
mainNav: [
{
- title: 'Home',
href: '/',
+ title: 'Home',
},
],
- links: {
- twitter: 'https://twitter.com/zbeyens',
- github: 'https://github.com/udecode/plate',
- docs: 'https://platejs.org',
- },
+ name: 'Next.js',
};
diff --git a/templates/plate-playground-template/src/lib/plate/autoformat-rules.ts b/templates/plate-playground-template/src/lib/plate/autoformat-rules.ts
index e0b7005199..b911110f9c 100644
--- a/templates/plate-playground-template/src/lib/plate/autoformat-rules.ts
+++ b/templates/plate-playground-template/src/lib/plate/autoformat-rules.ts
@@ -1,3 +1,10 @@
+import type {
+ AutoformatBlockRule,
+ AutoformatRule,
+} from '@udecode/plate-autoformat';
+import type { SlateEditor } from '@udecode/plate-common';
+import type { TTodoListItemElement } from '@udecode/plate-list';
+
import {
autoformatArrow,
autoformatLegal,
@@ -45,14 +52,7 @@ import {
NumberedListPlugin,
TodoListPlugin,
} from '@udecode/plate-list/react';
-import { openNextToggles, TogglePlugin } from '@udecode/plate-toggle/react';
-
-import type {
- AutoformatBlockRule,
- AutoformatRule,
-} from '@udecode/plate-autoformat';
-import type { SlateEditor } from '@udecode/plate-common';
-import type { TTodoListItemElement } from '@udecode/plate-list';
+import { TogglePlugin, openNextToggles } from '@udecode/plate-toggle/react';
export const preFormat: AutoformatBlockRule['preFormat'] = (editor) =>
unwrapList(editor);
diff --git a/templates/plate-playground-template/src/lib/plate/plate-types.ts b/templates/plate-playground-template/src/lib/plate/plate-types.ts
index a692d907e0..f81edad5b2 100644
--- a/templates/plate-playground-template/src/lib/plate/plate-types.ts
+++ b/templates/plate-playground-template/src/lib/plate/plate-types.ts
@@ -1,6 +1,5 @@
-import { useEditorRef } from '@udecode/plate-common/react';
-
import type React from 'react';
+
import type { useCreateEditor } from '@/components/plate-editor';
import type { BlockquotePlugin } from '@udecode/plate-block-quote/react';
import type {
@@ -42,6 +41,8 @@ import type {
import type { TToggleElement } from '@udecode/plate-toggle';
import type { TogglePlugin } from '@udecode/plate-toggle/react';
+import { useEditorRef } from '@udecode/plate-common/react';
+
/** Text */
export type EmptyText = {
diff --git a/templates/plate-playground-template/src/lib/transforms.ts b/templates/plate-playground-template/src/lib/transforms.ts
index 71e3293b7a..a7b7e04dbf 100644
--- a/templates/plate-playground-template/src/lib/transforms.ts
+++ b/templates/plate-playground-template/src/lib/transforms.ts
@@ -1,3 +1,6 @@
+import type { TElement, TNodeEntry } from '@udecode/plate-common';
+import type { PlateEditor } from '@udecode/plate-common/react';
+
import { insertCallout } from '@udecode/plate-callout';
import { CalloutPlugin } from '@udecode/plate-callout/react';
import { insertCodeBlock } from '@udecode/plate-code-block';
@@ -38,12 +41,9 @@ import {
MediaEmbedPlugin,
VideoPlugin,
} from '@udecode/plate-media/react';
-import { insertTable, TablePlugin } from '@udecode/plate-table/react';
+import { TablePlugin, insertTable } from '@udecode/plate-table/react';
import { Path } from 'slate';
-import type { TElement, TNodeEntry } from '@udecode/plate-common';
-import type { PlateEditor } from '@udecode/plate-common/react';
-
const ACTION_THREE_COLUMNS = 'action_three_columns';
const insertList = (editor: PlateEditor, type: string) => {
diff --git a/templates/plate-playground-template/src/types/nav.ts b/templates/plate-playground-template/src/types/nav.ts
index d351ccffe8..c022b8285f 100644
--- a/templates/plate-playground-template/src/types/nav.ts
+++ b/templates/plate-playground-template/src/types/nav.ts
@@ -1,6 +1,6 @@
export interface NavItem {
title: string;
- href?: string;
disabled?: boolean;
external?: boolean;
+ href?: string;
}
diff --git a/templates/plate-template/.eslintrc.js b/templates/plate-template/.eslintrc.js
index 24fdc91e43..cbe1099bf5 100644
--- a/templates/plate-template/.eslintrc.js
+++ b/templates/plate-template/.eslintrc.js
@@ -1,47 +1,285 @@
const path = require('path');
+
const prettierConfig = require('./prettier.config.js');
module.exports = {
$schema: 'https://json.schemastore.org/eslintrc',
- root: true,
extends: [
'next/core-web-vitals',
'prettier',
'plugin:tailwindcss/recommended',
+ 'plugin:perfectionist/recommended-natural-legacy',
+ ],
+ overrides: [
+ {
+ files: ['*.ts', '*.tsx'],
+ parser: '@typescript-eslint/parser',
+ },
],
- plugins: ['tailwindcss', 'unused-imports', 'prettier'],
+ plugins: ['tailwindcss', 'unused-imports', 'perfectionist', 'prettier'],
+ root: true,
rules: {
'@next/next/no-html-link-for-pages': 'off',
'prettier/prettier': ['warn', { ...prettierConfig }],
- 'react/jsx-key': 'off',
'react/display-name': 'off',
+ 'react/jsx-key': 'off',
'tailwindcss/classnames-order': 'warn',
- 'tailwindcss/no-custom-classname': 'error',
+ 'tailwindcss/no-custom-classname': 'off',
'unused-imports/no-unused-imports': 'warn',
'unused-imports/no-unused-vars': [
'warn',
{
+ args: 'none',
+ argsIgnorePattern: '^_',
ignoreRestSiblings: true,
vars: 'all',
varsIgnorePattern: '^_',
- args: 'none',
- argsIgnorePattern: '^_',
},
],
+ // Perfectionist
+ ...{
+ '@typescript-eslint/adjacent-overload-signatures': 'off',
+
+ 'perfectionist/sort-array-includes': [
+ 'warn',
+ {
+ groupKind: 'literals-first',
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+
+ 'perfectionist/sort-astro-attributes': [
+ 'warn',
+ { ignoreCase: false, type: 'natural' },
+ ],
+ 'perfectionist/sort-classes': [
+ 'warn',
+ {
+ groups: [
+ 'index-signature',
+ 'static-property',
+ 'private-property',
+ 'protected-property',
+ 'property',
+ 'constructor',
+ 'static-method',
+ 'private-method',
+ 'protected-method',
+ 'method',
+ ['get-method', 'set-method'],
+ 'static-block',
+ 'unknown',
+ ],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-enums': [
+ 'warn',
+ {
+ ignoreCase: false,
+ sortByValue: true,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-exports': [
+ 'warn',
+ { ignoreCase: false, type: 'natural' },
+ ],
+ 'perfectionist/sort-imports': [
+ // 'off',
+ 'warn',
+ {
+ customGroups: {
+ type: {
+ next: 'next',
+ react: 'react',
+ },
+ value: {
+ next: ['next'],
+ react: ['react', 'react-*'],
+ },
+ },
+ groups: [
+ 'react',
+ ['type', 'internal-type'],
+ 'next',
+ ['builtin', 'external'],
+ 'internal',
+ ['parent-type', 'sibling-type', 'index-type'],
+ ['parent', 'sibling', 'index'],
+ 'side-effect',
+ 'style',
+ 'object',
+ 'unknown',
+ ],
+ ignoreCase: false,
+ internalPattern: ['@/**'],
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-interfaces': [
+ 'warn',
+ {
+ customGroups: {
+ key: ['key', 'keys'],
+ id: ['id', '_id'],
+ },
+ groupKind: 'required-first',
+ groups: ['key', 'id', 'multiline', 'unknown'],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ // breaking: ordering matters
+ 'perfectionist/sort-intersection-types': 'off',
+ 'perfectionist/sort-jsx-props': [
+ 'warn',
+ {
+ customGroups: {
+ key: ['key', 'keys'],
+ id: ['id', 'name', 'testId', 'data-testid'],
+ accessibility: [
+ 'title',
+ 'alt',
+ 'placeholder',
+ 'label',
+ 'description',
+ 'fallback',
+ ],
+ callback: ['on*', 'handle*'],
+ className: ['className', 'class', 'style'],
+ control: ['asChild', 'as'],
+ data: ['data-*', 'aria-*'],
+ ref: ['ref', 'innerRef'],
+ state: [
+ 'value',
+ 'checked',
+ 'selected',
+ 'open',
+ 'defaultValue',
+ 'defaultChecked',
+ 'defaultOpen',
+ 'disabled',
+ 'required',
+ 'readOnly',
+ 'loading',
+ ],
+ variant: ['variant', 'size', 'orientation', 'color'],
+ },
+ groups: [
+ 'id',
+ 'key',
+ 'ref',
+ 'control',
+ 'variant',
+ 'className',
+ 'state',
+ 'callback',
+ 'accessibility',
+ 'data',
+ 'unknown',
+ 'shorthand',
+ ],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-maps': [
+ 'warn',
+ { ignoreCase: false, type: 'natural' },
+ ],
+ 'perfectionist/sort-named-exports': [
+ 'warn',
+ { groupKind: 'types-first', ignoreCase: false, type: 'natural' },
+ ],
+ // 'perfectionist/sort-named-imports': ['off'],
+ 'perfectionist/sort-named-imports': [
+ 'warn',
+ { groupKind: 'types-first', ignoreCase: false, type: 'natural' },
+ ],
+ 'perfectionist/sort-object-types': [
+ 'warn',
+ {
+ customGroups: {
+ key: ['key', 'keys'],
+ id: ['id', '_id'],
+ callback: ['on*', 'handle*'],
+ },
+ groupKind: 'required-first',
+ groups: ['key', 'id', 'multiline', 'unknown', 'callback'],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-objects': [
+ 'warn',
+ {
+ customGroups: {
+ key: ['key', 'keys'],
+ id: ['id', '_id'],
+ callback: ['on*', 'handle*'],
+ },
+ groups: ['key', 'id', 'unknown', 'callback'],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-sets': [
+ 'warn',
+ {
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-switch-case': [
+ 'warn',
+ {
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-union-types': [
+ 'warn',
+ {
+ groups: [
+ 'conditional',
+ 'function',
+ 'import',
+ ['intersection', 'union'],
+ 'named',
+ 'operator',
+ 'object',
+ 'keyword',
+ 'literal',
+ 'tuple',
+ 'nullish',
+ 'unknown',
+ ],
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'perfectionist/sort-variable-declarations': [
+ 'warn',
+ {
+ ignoreCase: false,
+ type: 'natural',
+ },
+ ],
+ 'react/jsx-sort-props': 'off',
+ 'sort-imports': 'off',
+ 'sort-keys': 'off',
+ },
},
settings: {
+ next: {
+ rootDir: ['./'],
+ },
tailwindcss: {
callees: ['cn', 'cva', 'withCn'],
config: path.join(__dirname, './tailwind.config.js'),
},
- next: {
- rootDir: ['./'],
- },
},
- overrides: [
- {
- files: ['*.ts', '*.tsx'],
- parser: '@typescript-eslint/parser',
- },
- ],
};
diff --git a/templates/plate-template/package.json b/templates/plate-template/package.json
index be0c635c85..b2b83a0ee7 100644
--- a/templates/plate-template/package.json
+++ b/templates/plate-template/package.json
@@ -16,8 +16,9 @@
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.3",
"@udecode/cn": "^39.0.0",
- "@udecode/plate-common": "39.2.20",
- "@udecode/plate-selection": "39.2.12",
+ "@udecode/plate-common": "^39.2.21",
+ "@udecode/plate-basic-elements": "^39.0.0",
+ "@udecode/plate-basic-marks": "^39.0.0",
"class-variance-authority": "0.7.0",
"clsx": "^2.1.1",
"eslint-plugin-prettier": "^5.2.1",
@@ -36,7 +37,6 @@
"tailwindcss-animate": "1.0.7"
},
"devDependencies": {
- "@ianvs/prettier-plugin-sort-imports": "^4.3.1",
"@types/node": "^22.8.6",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
@@ -45,12 +45,14 @@
"encoding": "^0.1.13",
"eslint": "^8.56.0",
"eslint-config-next": "15.0.2",
+ "eslint-plugin-perfectionist": "3.9.1",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-tailwindcss": "^3.17.5",
"eslint-plugin-unused-imports": "^4.1.3",
"postcss": "^8.4.45",
"prettier": "^3.3.3",
+ "prettier-plugin-packagejson": "^2.5.3",
"tailwindcss": "^3.4.14",
"tsx": "^4.19.1",
"typescript": "5.6.3"
diff --git a/templates/plate-template/pnpm-lock.yaml b/templates/plate-template/pnpm-lock.yaml
index 2573fdb96e..8bcd179751 100644
--- a/templates/plate-template/pnpm-lock.yaml
+++ b/templates/plate-template/pnpm-lock.yaml
@@ -17,12 +17,15 @@ importers:
'@udecode/cn':
specifier: ^39.0.0
version: 39.0.0(@types/react@18.3.12)(class-variance-authority@0.7.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwind-merge@2.5.4)
+ '@udecode/plate-basic-elements':
+ specifier: ^39.0.0
+ version: 39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-basic-marks':
+ specifier: ^39.0.0
+ version: 39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
'@udecode/plate-common':
- specifier: 39.2.20
- version: 39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
- '@udecode/plate-selection':
- specifier: 39.2.12
- version: 39.2.12(@udecode/plate-common@39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ specifier: ^39.2.21
+ version: 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
class-variance-authority:
specifier: 0.7.0
version: 0.7.0
@@ -37,7 +40,7 @@ importers:
version: 0.454.0(react@18.3.1)
next:
specifier: ^15.0.2
- version: 15.0.2(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 15.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes:
specifier: ^0.3.0
version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -72,9 +75,6 @@ importers:
specifier: 1.0.7
version: 1.0.7(tailwindcss@3.4.14)
devDependencies:
- '@ianvs/prettier-plugin-sort-imports':
- specifier: ^4.3.1
- version: 4.3.1(prettier@3.3.3)
'@types/node':
specifier: ^22.8.6
version: 22.8.6
@@ -102,6 +102,9 @@ importers:
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.1)
+ eslint-plugin-perfectionist:
+ specifier: 3.9.1
+ version: 3.9.1(eslint@8.57.1)(typescript@5.6.3)
eslint-plugin-react:
specifier: ^7.37.2
version: 7.37.2(eslint@8.57.1)
@@ -117,6 +120,9 @@ importers:
prettier:
specifier: ^3.3.3
version: 3.3.3
+ prettier-plugin-packagejson:
+ specifier: ^2.5.3
+ version: 2.5.3(prettier@3.3.3)
tailwindcss:
specifier: ^3.4.14
version: 3.4.14
@@ -133,85 +139,10 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/code-frame@7.24.7':
- resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/compat-data@7.25.4':
- resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/core@7.25.2':
- resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/generator@7.25.6':
- resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-compilation-targets@7.25.2':
- resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.24.7':
- resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.25.2':
- resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
-
- '@babel/helper-simple-access@7.24.7':
- resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.24.8':
- resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.7':
- resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-option@7.24.8':
- resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.25.6':
- resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.24.7':
- resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.25.6':
- resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
'@babel/runtime@7.25.6':
resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
engines: {node: '>=6.9.0'}
- '@babel/template@7.25.0':
- resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
- engines: {node: '>=6.9.0'}
-
- '@babel/traverse@7.25.6':
- resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.25.6':
- resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
- engines: {node: '>=6.9.0'}
-
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
@@ -415,15 +346,6 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
- '@ianvs/prettier-plugin-sort-imports@4.3.1':
- resolution: {integrity: sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==}
- peerDependencies:
- '@vue/compiler-sfc': 2.7.x || 3.x
- prettier: 2 || 3
- peerDependenciesMeta:
- '@vue/compiler-sfc':
- optional: true
-
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -942,8 +864,52 @@ packages:
react-dom: '>=16.8.0'
tailwind-merge: '>=2.2.0'
- '@udecode/plate-common@39.2.20':
- resolution: {integrity: sha512-i+cHPY5/+G+CLdijyMyEKSh9qiq7RKYGk/8tuBN/qzQT+53XWirzxLkTS6siBVgIktZwXRpK9Td/+qCca6tW5g==}
+ '@udecode/plate-basic-elements@39.0.0':
+ resolution: {integrity: sha512-5E0liG1LbvJ63J5ueXATVVDVe0duyHgsARG97PLx+0MfSe4byodwoqU8L5KZ4JmHp3QNsk1M5hzhY4AnAEHyhA==}
+ peerDependencies:
+ '@udecode/plate-common': '>=39.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+ slate-hyperscript: '>=0.66.0'
+ slate-react: '>=0.108.0'
+
+ '@udecode/plate-basic-marks@39.0.0':
+ resolution: {integrity: sha512-GtHFK1gwmhfnwl0Lf3xiRuNS832bNaelx5Sr/uzSVpH7Xo4p7Ssdxp+vc9LsiUrQcBQyuybvyYGbiY7i2o5DCA==}
+ peerDependencies:
+ '@udecode/plate-common': '>=39.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+ slate-hyperscript: '>=0.66.0'
+ slate-react: '>=0.108.0'
+
+ '@udecode/plate-block-quote@39.0.0':
+ resolution: {integrity: sha512-5TxkIQFvYxX6CEOM0dtBnM/SX70kqXFHlz6ncEYC9hJnaNTpI6jiUqBfx5S2schVpFgtaxhi/0x17oTsFHsFMQ==}
+ peerDependencies:
+ '@udecode/plate-common': '>=39.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+ slate-hyperscript: '>=0.66.0'
+ slate-react: '>=0.108.0'
+
+ '@udecode/plate-code-block@39.0.0':
+ resolution: {integrity: sha512-I4GxJJBaa9qv2um6sAqt/LgT5aV4Cm4f9Q9pVlFwy077ciML+ms4QitbixFrebXh5tJWEQT2csXUdbmVaHdKAA==}
+ peerDependencies:
+ '@udecode/plate-common': '>=39.0.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+ slate-hyperscript: '>=0.66.0'
+ slate-react: '>=0.108.0'
+
+ '@udecode/plate-common@39.2.21':
+ resolution: {integrity: sha512-K+Hm5GEeO8YJJP1kRWErCbxDkOUmssnIR3xulcLEhIdUhoEEaojmNa2tfJ1H9mvmgM2JJgy5ZWcBqQES/KgwWg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -952,8 +918,8 @@ packages:
slate-hyperscript: '>=0.66.0'
slate-react: '>=0.108.0'
- '@udecode/plate-core@39.2.20':
- resolution: {integrity: sha512-pjOclpsqzEVibsquMmLfWEMBkJ5o7v+T66yNOG52c2coxrfvLoUWv++d4MiigvGNaZnB8uYbhJwQwg7YhKJEoA==}
+ '@udecode/plate-core@39.2.21':
+ resolution: {integrity: sha512-/+KEW5M55xrTaqofcUFX3KZOAtRza9TQKQC7DNg867gHo0qFR8m8qKs5l83OAoWnzYkM4Lj+0Sirui2RCr40Wg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -962,10 +928,10 @@ packages:
slate-hyperscript: '>=0.66.0'
slate-react: '>=0.108.0'
- '@udecode/plate-selection@39.2.12':
- resolution: {integrity: sha512-qwp4PiKq1N1skjssfj/Tb/dgB5sBsrlDYZTcOFT1IQuokGyX66jftiykzKclPH54xXcNJ+7qWCJo4M6I7AFk5g==}
+ '@udecode/plate-heading@39.0.0':
+ resolution: {integrity: sha512-J7No90ttd/2sXbbRnHZ9EgNR//A91UZ57bb15quYE+rlGSyuk1eANzMX5vbmgWMIQ8O53vSqWC12clo9sVaVZA==}
peerDependencies:
- '@udecode/plate-common': '>=39.2.12'
+ '@udecode/plate-common': '>=39.0.0'
react: '>=16.8.0'
react-dom: '>=16.8.0'
slate: '>=0.103.0'
@@ -973,8 +939,8 @@ packages:
slate-hyperscript: '>=0.66.0'
slate-react: '>=0.108.0'
- '@udecode/plate-utils@39.2.20':
- resolution: {integrity: sha512-iFdxDaDr0sSI1tvnoskESTL6D+IYjLowMG8Voh0H2jAqI59W7WGSMBr7wqI+JbiXVJyw3YwLaO+dPxUVTv8KFw==}
+ '@udecode/plate-utils@39.2.21':
+ resolution: {integrity: sha512-EEjUAKdzCqso92wqrqetA0cqYObjSISvI/M3dOrZ4Aij4IaMj/f1WBP6nQoDdpjXXmLnVeWT6Px0Gbuma3EcpA==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -1043,10 +1009,6 @@ packages:
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
engines: {node: '>=12'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@@ -1170,10 +1132,6 @@ packages:
caniuse-lite@1.0.30001676:
resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==}
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -1196,16 +1154,10 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -1226,12 +1178,6 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- copy-to-clipboard@3.3.3:
- resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
-
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -1291,13 +1237,25 @@ packages:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
+ detect-indent@7.0.1:
+ resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==}
+ engines: {node: '>=12.20'}
+
detect-libc@2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
+ detect-newline@4.0.1:
+ resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
direction@1.0.4:
resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==}
hasBin: true
@@ -1375,10 +1333,6 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -1451,6 +1405,25 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+ eslint-plugin-perfectionist@3.9.1:
+ resolution: {integrity: sha512-9WRzf6XaAxF4Oi5t/3TqKP5zUjERhasHmLFHin2Yw6ZAp/EP/EVA2dr3BhQrrHWCm5SzTMZf0FcjDnBkO2xFkA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ astro-eslint-parser: ^1.0.2
+ eslint: '>=8.0.0'
+ svelte: '>=3.0.0'
+ svelte-eslint-parser: ^0.41.1
+ vue-eslint-parser: '>=9.0.0'
+ peerDependenciesMeta:
+ astro-eslint-parser:
+ optional: true
+ svelte:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
+ vue-eslint-parser:
+ optional: true
+
eslint-plugin-prettier@5.2.1:
resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -1595,14 +1568,14 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
get-intrinsic@1.2.4:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
+ get-stdin@9.0.0:
+ resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
+ engines: {node: '>=12'}
+
get-symbol-description@1.0.2:
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
@@ -1610,6 +1583,9 @@ packages:
get-tsconfig@4.8.1:
resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+ git-hooks-list@3.1.0:
+ resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==}
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -1626,10 +1602,6 @@ packages:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
- globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
-
globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
@@ -1638,6 +1610,10 @@ packages:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
+ globby@13.2.2:
+ resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@@ -1650,10 +1626,6 @@ packages:
has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -1793,6 +1765,10 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
is-plain-object@5.0.0:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
@@ -1886,11 +1862,6 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
-
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -1904,11 +1875,6 @@ packages:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -1958,9 +1924,6 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
lucide-react@0.454.0:
resolution: {integrity: sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==}
peerDependencies:
@@ -1999,6 +1962,9 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ natural-compare-lite@1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -2120,6 +2086,10 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
@@ -2195,6 +2165,14 @@ packages:
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
engines: {node: '>=6.0.0'}
+ prettier-plugin-packagejson@2.5.3:
+ resolution: {integrity: sha512-ATMEEXr+ywls1kgrZEWl4SBPEm0uDdyDAjyNzUC0/Z8WZTD3RqbJcQDR+Dau+wYkW9KHK6zqQIsFyfn+9aduWg==}
+ peerDependencies:
+ prettier: '>= 1.16.0'
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+
prettier@3.3.3:
resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
engines: {node: '>=14'}
@@ -2361,6 +2339,10 @@ packages:
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+ slash@4.0.0:
+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
+ engines: {node: '>=12'}
+
slate-history@0.110.3:
resolution: {integrity: sha512-sgdff4Usdflmw5ZUbhDkxFwCBQ2qlDKMMkF93w66KdV48vHOgN2BmLrf+2H8SdX8PYIpP/cTB0w8qWC2GwhDVA==}
peerDependencies:
@@ -2381,6 +2363,13 @@ packages:
slate@0.110.2:
resolution: {integrity: sha512-4xGULnyMCiEQ0Ml7JAC1A6HVE6MNpPJU7Eq4cXh1LxlrR0dFXC3XC+rNfQtUJ7chHoPkws57x7DDiWiZAt+PBA==}
+ sort-object-keys@1.1.3:
+ resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==}
+
+ sort-package-json@2.10.1:
+ resolution: {integrity: sha512-d76wfhgUuGypKqY72Unm5LFnMpACbdxXsLPcL27pOsSrmVqH3PztFp1uq+Z22suk15h7vXmTesuh2aEjdCqb5w==}
+ hasBin: true
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -2453,10 +2442,6 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -2469,6 +2454,10 @@ packages:
resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
engines: {node: ^14.18.0 || >=16.0.0}
+ synckit@0.9.2:
+ resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
tailwind-merge@2.5.4:
resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==}
@@ -2502,17 +2491,10 @@ packages:
tiny-warning@1.0.3:
resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- toggle-selection@1.0.6:
- resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
-
ts-api-utils@1.4.0:
resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==}
engines: {node: '>=16'}
@@ -2641,9 +2623,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
yaml@2.6.0:
resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==}
engines: {node: '>= 14'}
@@ -2677,127 +2656,10 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
-
- '@babel/code-frame@7.24.7':
- dependencies:
- '@babel/highlight': 7.24.7
- picocolors: 1.1.0
-
- '@babel/compat-data@7.25.4': {}
-
- '@babel/core@7.25.2':
- dependencies:
- '@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.6
- '@babel/helper-compilation-targets': 7.25.2
- '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
- '@babel/helpers': 7.25.6
- '@babel/parser': 7.25.6
- '@babel/template': 7.25.0
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- convert-source-map: 2.0.0
- debug: 4.3.7
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.25.6':
- dependencies:
- '@babel/types': 7.25.6
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- jsesc: 2.5.2
-
- '@babel/helper-compilation-targets@7.25.2':
- dependencies:
- '@babel/compat-data': 7.25.4
- '@babel/helper-validator-option': 7.24.8
- browserslist: 4.23.3
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-module-imports@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/helper-module-imports': 7.24.7
- '@babel/helper-simple-access': 7.24.7
- '@babel/helper-validator-identifier': 7.24.7
- '@babel/traverse': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-simple-access@7.24.7':
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.24.8': {}
-
- '@babel/helper-validator-identifier@7.24.7': {}
-
- '@babel/helper-validator-option@7.24.8': {}
-
- '@babel/helpers@7.25.6':
- dependencies:
- '@babel/template': 7.25.0
- '@babel/types': 7.25.6
-
- '@babel/highlight@7.24.7':
- dependencies:
- '@babel/helper-validator-identifier': 7.24.7
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.1.0
-
- '@babel/parser@7.25.6':
- dependencies:
- '@babel/types': 7.25.6
-
'@babel/runtime@7.25.6':
dependencies:
regenerator-runtime: 0.14.1
- '@babel/template@7.25.0':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/parser': 7.25.6
- '@babel/types': 7.25.6
-
- '@babel/traverse@7.25.6':
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.6
- '@babel/parser': 7.25.6
- '@babel/template': 7.25.0
- '@babel/types': 7.25.6
- debug: 4.3.7
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.25.6':
- dependencies:
- '@babel/helper-string-parser': 7.24.8
- '@babel/helper-validator-identifier': 7.24.7
- to-fast-properties: 2.0.0
-
'@emnapi/runtime@1.3.1':
dependencies:
tslib: 2.8.1
@@ -2934,18 +2796,6 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
- '@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3)':
- dependencies:
- '@babel/core': 7.25.2
- '@babel/generator': 7.25.6
- '@babel/parser': 7.25.6
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- prettier: 3.3.3
- semver: 7.6.3
- transitivePeerDependencies:
- - supports-color
-
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -3396,10 +3246,53 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@udecode/plate-common@39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ '@udecode/plate-basic-elements@39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ dependencies:
+ '@udecode/plate-block-quote': 39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-code-block': 39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-common': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-heading': 39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ slate: 0.110.2
+ slate-history: 0.110.3(slate@0.110.2)
+ slate-hyperscript: 0.100.0(slate@0.110.2)
+ slate-react: 0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2)
+
+ '@udecode/plate-basic-marks@39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ dependencies:
+ '@udecode/plate-common': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ slate: 0.110.2
+ slate-history: 0.110.3(slate@0.110.2)
+ slate-hyperscript: 0.100.0(slate@0.110.2)
+ slate-react: 0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2)
+
+ '@udecode/plate-block-quote@39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
dependencies:
- '@udecode/plate-core': 39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
- '@udecode/plate-utils': 39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-common': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ slate: 0.110.2
+ slate-history: 0.110.3(slate@0.110.2)
+ slate-hyperscript: 0.100.0(slate@0.110.2)
+ slate-react: 0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2)
+
+ '@udecode/plate-code-block@39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ dependencies:
+ '@udecode/plate-common': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ slate: 0.110.2
+ slate-history: 0.110.3(slate@0.110.2)
+ slate-hyperscript: 0.100.0(slate@0.110.2)
+ slate-react: 0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2)
+
+ '@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ dependencies:
+ '@udecode/plate-core': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-utils': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
'@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@udecode/react-utils': 39.0.0(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@udecode/slate': 39.2.1(slate-history@0.110.3(slate@0.110.2))(slate@0.110.2)
@@ -3418,7 +3311,7 @@ snapshots:
- react-native
- scheduler
- '@udecode/plate-core@39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ '@udecode/plate-core@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
dependencies:
'@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@udecode/react-utils': 39.0.0(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -3449,10 +3342,9 @@ snapshots:
- react-native
- scheduler
- '@udecode/plate-selection@39.2.12(@udecode/plate-common@39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ '@udecode/plate-heading@39.0.0(@udecode/plate-common@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
dependencies:
- '@udecode/plate-common': 39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
- copy-to-clipboard: 3.3.3
+ '@udecode/plate-common': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
slate: 0.110.2
@@ -3460,9 +3352,9 @@ snapshots:
slate-hyperscript: 0.100.0(slate@0.110.2)
slate-react: 0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2)
- '@udecode/plate-utils@39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
+ '@udecode/plate-utils@39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)':
dependencies:
- '@udecode/plate-core': 39.2.20(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
+ '@udecode/plate-core': 39.2.21(@types/react@18.3.12)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.110.3(slate@0.110.2))(slate-hyperscript@0.100.0(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
'@udecode/react-utils': 39.0.0(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@udecode/slate': 39.2.1(slate-history@0.110.3(slate@0.110.2))(slate@0.110.2)
'@udecode/slate-react': 39.2.1(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.110.3(slate@0.110.2))(slate-react@0.110.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.110.2))(slate@0.110.2)
@@ -3546,10 +3438,6 @@ snapshots:
ansi-regex@6.1.0: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
@@ -3698,12 +3586,6 @@ snapshots:
caniuse-lite@1.0.30001676: {}
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -3731,16 +3613,10 @@ snapshots:
clsx@2.1.1: {}
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
color-string@1.9.1:
@@ -3761,12 +3637,6 @@ snapshots:
concat-map@0.0.1: {}
- convert-source-map@2.0.0: {}
-
- copy-to-clipboard@3.3.3:
- dependencies:
- toggle-selection: 1.0.6
-
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
@@ -3821,11 +3691,19 @@ snapshots:
dequal@2.0.3: {}
+ detect-indent@7.0.1: {}
+
detect-libc@2.0.3:
optional: true
+ detect-newline@4.0.1: {}
+
didyoumean@1.2.2: {}
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
direction@1.0.4: {}
dlv@1.1.3: {}
@@ -3982,8 +3860,6 @@ snapshots:
escalade@3.2.0: {}
- escape-string-regexp@1.0.5: {}
-
escape-string-regexp@4.0.0: {}
eslint-config-next@15.0.2(eslint@8.57.1)(typescript@5.6.3):
@@ -4096,6 +3972,17 @@ snapshots:
safe-regex-test: 1.0.3
string.prototype.includes: 2.0.1
+ eslint-plugin-perfectionist@3.9.1(eslint@8.57.1)(typescript@5.6.3):
+ dependencies:
+ '@typescript-eslint/types': 8.12.2
+ '@typescript-eslint/utils': 8.12.2(eslint@8.57.1)(typescript@5.6.3)
+ eslint: 8.57.1
+ minimatch: 9.0.5
+ natural-compare-lite: 1.4.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3):
dependencies:
eslint: 8.57.1
@@ -4287,8 +4174,6 @@ snapshots:
functions-have-names@1.2.3: {}
- gensync@1.0.0-beta.2: {}
-
get-intrinsic@1.2.4:
dependencies:
es-errors: 1.3.0
@@ -4297,6 +4182,8 @@ snapshots:
has-symbols: 1.0.3
hasown: 2.0.2
+ get-stdin@9.0.0: {}
+
get-symbol-description@1.0.2:
dependencies:
call-bind: 1.0.7
@@ -4307,6 +4194,8 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
+ git-hooks-list@3.1.0: {}
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -4333,8 +4222,6 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
- globals@11.12.0: {}
-
globals@13.24.0:
dependencies:
type-fest: 0.20.2
@@ -4344,6 +4231,14 @@ snapshots:
define-properties: 1.2.1
gopd: 1.0.1
+ globby@13.2.2:
+ dependencies:
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 4.0.0
+
gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
@@ -4354,8 +4249,6 @@ snapshots:
has-bigints@1.0.2: {}
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
has-property-descriptors@1.0.2:
@@ -4479,6 +4372,8 @@ snapshots:
is-path-inside@3.0.3: {}
+ is-plain-obj@4.1.0: {}
+
is-plain-object@5.0.0: {}
is-regex@1.1.4:
@@ -4558,8 +4453,6 @@ snapshots:
dependencies:
argparse: 2.0.1
- jsesc@2.5.2: {}
-
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
@@ -4570,8 +4463,6 @@ snapshots:
dependencies:
minimist: 1.2.8
- json5@2.2.3: {}
-
jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.8
@@ -4616,10 +4507,6 @@ snapshots:
lru-cache@10.4.3: {}
- lru-cache@5.1.1:
- dependencies:
- yallist: 3.1.1
-
lucide-react@0.454.0(react@18.3.1):
dependencies:
react: 18.3.1
@@ -4653,6 +4540,8 @@ snapshots:
nanoid@3.3.7: {}
+ natural-compare-lite@1.4.0: {}
+
natural-compare@1.4.0: {}
next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
@@ -4660,7 +4549,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- next@15.0.2(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ next@15.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 15.0.2
'@swc/counter': 0.1.3
@@ -4670,7 +4559,7 @@ snapshots:
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- styled-jsx: 5.1.6(@babel/core@7.25.2)(react@18.3.1)
+ styled-jsx: 5.1.6(react@18.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 15.0.2
'@next/swc-darwin-x64': 15.0.2
@@ -4773,6 +4662,8 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-type@4.0.0: {}
+
picocolors@1.1.0: {}
picocolors@1.1.1: {}
@@ -4834,6 +4725,13 @@ snapshots:
dependencies:
fast-diff: 1.3.0
+ prettier-plugin-packagejson@2.5.3(prettier@3.3.3):
+ dependencies:
+ sort-package-json: 2.10.1
+ synckit: 0.9.2
+ optionalDependencies:
+ prettier: 3.3.3
+
prettier@3.3.3: {}
prop-types@15.8.1:
@@ -5032,6 +4930,8 @@ snapshots:
is-arrayish: 0.3.2
optional: true
+ slash@4.0.0: {}
+
slate-history@0.110.3(slate@0.110.2):
dependencies:
is-plain-object: 5.0.0
@@ -5061,6 +4961,19 @@ snapshots:
is-plain-object: 5.0.0
tiny-warning: 1.0.3
+ sort-object-keys@1.1.3: {}
+
+ sort-package-json@2.10.1:
+ dependencies:
+ detect-indent: 7.0.1
+ detect-newline: 4.0.1
+ get-stdin: 9.0.0
+ git-hooks-list: 3.1.0
+ globby: 13.2.2
+ is-plain-obj: 4.1.0
+ semver: 7.6.3
+ sort-object-keys: 1.1.3
+
source-map-js@1.2.1: {}
streamsearch@1.1.0: {}
@@ -5134,12 +5047,10 @@ snapshots:
strip-json-comments@3.1.1: {}
- styled-jsx@5.1.6(@babel/core@7.25.2)(react@18.3.1):
+ styled-jsx@5.1.6(react@18.3.1):
dependencies:
client-only: 0.0.1
react: 18.3.1
- optionalDependencies:
- '@babel/core': 7.25.2
sucrase@3.35.0:
dependencies:
@@ -5151,10 +5062,6 @@ snapshots:
pirates: 4.0.6
ts-interface-checker: 0.1.13
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -5166,6 +5073,11 @@ snapshots:
'@pkgr/core': 0.1.1
tslib: 2.7.0
+ synckit@0.9.2:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.8.1
+
tailwind-merge@2.5.4: {}
tailwindcss-animate@1.0.7(tailwindcss@3.4.14):
@@ -5215,14 +5127,10 @@ snapshots:
tiny-warning@1.0.3: {}
- to-fast-properties@2.0.0: {}
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- toggle-selection@1.0.6: {}
-
ts-api-utils@1.4.0(typescript@5.6.3):
dependencies:
typescript: 5.6.3
@@ -5382,8 +5290,6 @@ snapshots:
wrappy@1.0.2: {}
- yallist@3.1.1: {}
-
yaml@2.6.0: {}
yocto-queue@0.1.0: {}
diff --git a/templates/plate-template/prettier.config.js b/templates/plate-template/prettier.config.js
index 15b6a511d7..47ab2266ae 100644
--- a/templates/plate-template/prettier.config.js
+++ b/templates/plate-template/prettier.config.js
@@ -1,34 +1,30 @@
/** @type {import('prettier').Config} */
module.exports = {
+ // Set the line ending to `lf`.
+ // https://prettier.io/docs/en/options.html#end-of-line
endOfLine: 'lf',
+
+ // Do not add semicolons at the end of statements.
+ // Specify the parser plugins to use for import sorting.
+ importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'],
+
+ // Use single quotes for string literals.
+ // Combine type-only imports with value imports.
+ importOrderTypeScriptVersion: '5.1.6',
+
+ // Set the tab width to 2 spaces.
+ plugins: ['prettier-plugin-packagejson'],
+
+ // Add trailing commas for object and array literals in ES5-compatible mode.
+ // https://prettier.io/docs/en/options.html#semicolons
semi: true,
+
+ // https://prettier.io/docs/en/options.html#quotes
singleQuote: true,
+
+ // https://prettier.io/docs/en/options.html#tab-width
tabWidth: 2,
+
+ // https://prettier.io/docs/en/options.html#trailing-commas
trailingComma: 'es5',
- importOrder: [
- '^(react/(.*)$)|^(react$)',
- '^(next/(.*)$)|^(next$)',
- '
',
- '',
- '^types$',
- '^@/types/(.*)$',
- '^@/config/(.*)$',
- '^@/lib/(.*)$',
- '^@/hooks/(.*)$',
- '^@/components/ui/(.*)$',
- '^@/components/(.*)$',
- '^@/styles/(.*)$',
- '^@/app/(.*)$',
- '',
- '^[./]',
- '',
- '^[./]',
- '^react',
- '^next',
- '^@/',
- '',
- ],
- importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'],
- importOrderTypeScriptVersion: '5.1.6',
- plugins: ['@ianvs/prettier-plugin-sort-imports'],
};
diff --git a/templates/plate-template/scripts/sync.mts b/templates/plate-template/scripts/sync.mts
index a3f3e318c1..2a7f53f157 100644
--- a/templates/plate-template/scripts/sync.mts
+++ b/templates/plate-template/scripts/sync.mts
@@ -100,9 +100,9 @@ async function main() {
// Log results
if (updatedPackages.length > 0) {
- console.log('\nThe following packages were updated.');
+ console.info('\nThe following packages were updated.');
updatedPackages.forEach(({ currentVersion, name, newVersion }) => {
- console.log(
+ console.info(
'\u001B[32m%s\u001B[0m',
`${name}: ${currentVersion} -> ${newVersion}`
);
diff --git a/templates/plate-template/src/app/layout.tsx b/templates/plate-template/src/app/layout.tsx
index a32ea72b7e..d713c79ec9 100644
--- a/templates/plate-template/src/app/layout.tsx
+++ b/templates/plate-template/src/app/layout.tsx
@@ -1,33 +1,33 @@
+import { Metadata, Viewport } from 'next';
+
import { cn } from '@udecode/cn';
-import { siteConfig } from '@/config/site';
-import { fontSans } from '@/lib/fonts';
import { TooltipProvider } from '@/components/plate-ui/tooltip';
import { SiteHeader } from '@/components/site/site-header';
import { TailwindIndicator } from '@/components/site/tailwind-indicator';
import { ThemeProvider } from '@/components/site/theme-provider';
+import { siteConfig } from '@/config/site';
+import { fontSans } from '@/lib/fonts';
import '@/styles/globals.css';
-import { Metadata, Viewport } from 'next';
-
export const metadata: Metadata = {
- title: {
- default: siteConfig.name,
- template: `%s - ${siteConfig.name}`,
- },
description: siteConfig.description,
icons: {
+ apple: '/apple-touch-icon.png',
icon: '/favicon.ico',
shortcut: '/favicon-16x16.png',
- apple: '/apple-touch-icon.png',
+ },
+ title: {
+ default: siteConfig.name,
+ template: `%s - ${siteConfig.name}`,
},
};
export const viewport: Viewport = {
themeColor: [
- { media: '(prefers-color-scheme: light)', color: 'white' },
- { media: '(prefers-color-scheme: dark)', color: 'black' },
+ { color: 'white', media: '(prefers-color-scheme: light)' },
+ { color: 'black', media: '(prefers-color-scheme: dark)' },
],
};
@@ -43,16 +43,15 @@ export default function RootLayout({ children }: RootLayoutProps) {
diff --git a/templates/plate-template/src/app/page.tsx b/templates/plate-template/src/app/page.tsx
index bea64ac795..415c92e933 100644
--- a/templates/plate-template/src/app/page.tsx
+++ b/templates/plate-template/src/app/page.tsx
@@ -1,8 +1,8 @@
import Link from 'next/link';
-import { siteConfig } from '@/config/site';
import { PlateEditor } from '@/components/plate-editor';
import { buttonVariants } from '@/components/plate-ui/button';
+import { siteConfig } from '@/config/site';
export default function IndexPage() {
return (
@@ -17,24 +17,24 @@ export default function IndexPage() {
Documentation
GitHub
-
+
diff --git a/templates/plate-template/src/components/plate-editor.tsx b/templates/plate-template/src/components/plate-editor.tsx
index 1e91237337..d3d323baf4 100644
--- a/templates/plate-template/src/components/plate-editor.tsx
+++ b/templates/plate-template/src/components/plate-editor.tsx
@@ -1,25 +1,88 @@
'use client';
-import { Plate, usePlateEditor } from '@udecode/plate-common/react';
+import { useRef } from 'react';
-import { Editor } from '@/components/plate-ui/editor';
+import { withProps } from '@udecode/cn';
+import { BasicElementsPlugin } from '@udecode/plate-basic-elements/react';
+import {
+ BasicMarksPlugin,
+ BoldPlugin,
+ ItalicPlugin,
+ StrikethroughPlugin,
+ UnderlinePlugin,
+} from '@udecode/plate-basic-marks/react';
+import {
+ ParagraphPlugin,
+ Plate,
+ PlateElement,
+ PlateLeaf,
+ usePlateEditor,
+} from '@udecode/plate-common/react';
+
+import { Editor, EditorContainer } from '@/components/plate-ui/editor';
export function PlateEditor() {
- const editor = usePlateEditor({
- id: 'plate-editor',
- plugins: [],
- value: [
- {
- id: '1',
- type: 'p',
- children: [{ text: '' }],
- },
- ],
- });
+ const containerRef = useRef(null);
+
+ const editor = useCreateEditor();
return (
-
+
+
+
);
}
+
+const useCreateEditor = () => {
+ return usePlateEditor({
+ override: {
+ // Default styles in globals.css
+ components: {
+ [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }),
+ [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }),
+ [ParagraphPlugin.key]: withProps(PlateElement, { as: 'p' }),
+ [StrikethroughPlugin.key]: withProps(PlateLeaf, { as: 's' }),
+ [UnderlinePlugin.key]: withProps(PlateLeaf, { as: 'u' }),
+ blockquote: withProps(PlateElement, { as: 'blockquote' }),
+ h1: withProps(PlateElement, { as: 'h1' }),
+ h2: withProps(PlateElement, { as: 'h2' }),
+ h3: withProps(PlateElement, { as: 'h3' }),
+ },
+ },
+ plugins: [BasicElementsPlugin, BasicMarksPlugin],
+ value: [
+ {
+ children: [{ text: 'Basic Editor' }],
+ type: 'h1',
+ },
+ {
+ children: [{ text: 'Heading 2' }],
+ type: 'h2',
+ },
+ {
+ children: [{ text: 'Heading 3' }],
+ type: 'h3',
+ },
+ {
+ children: [{ text: 'This is a blockquote element' }],
+ type: 'blockquote',
+ },
+ {
+ children: [
+ { text: 'Basic marks: ' },
+ { bold: true, text: 'bold' },
+ { text: ', ' },
+ { italic: true, text: 'italic' },
+ { text: ', ' },
+ { text: 'underline', underline: true },
+ { text: ', ' },
+ { strikethrough: true, text: 'strikethrough' },
+ { text: '.' },
+ ],
+ type: ParagraphPlugin.key,
+ },
+ ],
+ });
+};
diff --git a/templates/plate-template/src/components/plate-ui/button.tsx b/templates/plate-template/src/components/plate-ui/button.tsx
index d017db41fe..e92ca630ab 100644
--- a/templates/plate-template/src/components/plate-ui/button.tsx
+++ b/templates/plate-template/src/components/plate-ui/button.tsx
@@ -1,8 +1,10 @@
import * as React from 'react';
+import type { VariantProps } from 'class-variance-authority';
+
import { Slot } from '@radix-ui/react-slot';
import { cn, withRef } from '@udecode/cn';
-import { type VariantProps, cva } from 'class-variance-authority';
+import { cva } from 'class-variance-authority';
export const buttonVariants = cva(
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
diff --git a/templates/plate-template/src/components/plate-ui/editor.tsx b/templates/plate-template/src/components/plate-ui/editor.tsx
index 8ff68de2b2..069132a11c 100644
--- a/templates/plate-template/src/components/plate-ui/editor.tsx
+++ b/templates/plate-template/src/components/plate-ui/editor.tsx
@@ -9,41 +9,70 @@ import { cn } from '@udecode/cn';
import { PlateContent } from '@udecode/plate-common/react';
import { cva } from 'class-variance-authority';
+const editorContainerVariants = cva(
+ 'relative flex cursor-text [&_.slate-selection-area]:border [&_.slate-selection-area]:border-brand/25 [&_.slate-selection-area]:bg-brand/15',
+ {
+ defaultVariants: {
+ variant: 'default',
+ },
+ variants: {
+ variant: {
+ default: 'w-full',
+ demo: 'h-[650px] w-full overflow-y-auto',
+ },
+ },
+ }
+);
+
+export const EditorContainer = React.forwardRef<
+ HTMLDivElement,
+ React.ComponentPropsWithoutRef<'div'> &
+ VariantProps
+>(({ className, variant, ...props }, ref) => {
+ return (
+
+ );
+});
+
+EditorContainer.displayName = 'EditorContainer';
+
const editorVariants = cva(
cn(
- 'relative overflow-x-auto whitespace-pre-wrap break-words text-foreground',
- 'min-h-[80px] w-full rounded-md bg-background px-6 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none',
- '[&_[data-slate-placeholder]]:text-muted-foreground [&_[data-slate-placeholder]]:!opacity-100',
+ 'group/editor',
+ 'relative w-full whitespace-pre-wrap break-words',
+ 'rounded-md ring-offset-background placeholder:text-muted-foreground/80 focus-visible:outline-none',
+ '[&_[data-slate-placeholder]]:text-muted-foreground/80 [&_[data-slate-placeholder]]:!opacity-100',
'[&_[data-slate-placeholder]]:top-[auto_!important]',
'[&_strong]:font-bold'
),
{
defaultVariants: {
- focusRing: true,
- size: 'sm',
- variant: 'outline',
+ variant: 'default',
},
variants: {
disabled: {
true: 'cursor-not-allowed opacity-50',
},
- focusRing: {
- false: '',
- true: 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
- },
focused: {
true: 'ring-2 ring-ring ring-offset-2',
},
- size: {
- md: 'text-base',
- sm: 'text-sm',
- },
variant: {
+ ai: 'w-full px-0 text-sm',
aiChat:
- 'max-h-[min(70vh,320px)] w-full overflow-y-auto rounded-none border-b px-3 py-2 text-sm',
- demo: 'min-h-full w-full px-16 pb-72 text-base sm:px-[max(64px,calc(50%-350px))]',
- ghost: '',
- outline: 'border border-input',
+ 'max-h-[min(70vh,320px)] w-full max-w-[700px] overflow-y-auto px-3 py-2 text-sm',
+ default:
+ 'min-h-full w-full px-16 pb-72 pt-4 text-base sm:px-[max(64px,calc(50%-350px))]',
+ demo: 'min-h-full w-full px-16 pb-72 pt-4 text-base sm:px-[max(64px,calc(50%-350px))]',
+ fullWidth: 'min-h-full w-full px-16 pb-72 pt-4 text-base sm:px-24',
},
},
}
@@ -52,43 +81,25 @@ const editorVariants = cva(
export type EditorProps = PlateContentProps &
VariantProps;
-const Editor = React.forwardRef(
- (
- {
- className,
- disabled,
- focusRing,
- focused,
- readOnly,
- size,
- variant,
- ...props
- },
- ref
- ) => {
+export const Editor = React.forwardRef(
+ ({ className, disabled, focused, variant, ...props }, ref) => {
return (
-
+
);
}
);
-Editor.displayName = 'Editor';
-export { Editor };
+Editor.displayName = 'Editor';
diff --git a/templates/plate-template/src/components/site/main-nav.tsx b/templates/plate-template/src/components/site/main-nav.tsx
index 7701067961..1ed29b0174 100644
--- a/templates/plate-template/src/components/site/main-nav.tsx
+++ b/templates/plate-template/src/components/site/main-nav.tsx
@@ -1,10 +1,11 @@
import * as React from 'react';
-import Link from 'next/link';
+
import { cn } from '@udecode/cn';
import { MinusIcon } from 'lucide-react';
+import Link from 'next/link';
-import { NavItem } from '@/types/nav';
import { siteConfig } from '@/config/site';
+import { NavItem } from '@/types/nav';
interface MainNavProps {
items?: NavItem[];
@@ -13,7 +14,7 @@ interface MainNavProps {
export function MainNav({ items }: MainNavProps) {
return (
-
+
{siteConfig.name}
@@ -24,11 +25,11 @@ export function MainNav({ items }: MainNavProps) {
item.href && (
{item.title}
diff --git a/templates/plate-template/src/components/site/site-header.tsx b/templates/plate-template/src/components/site/site-header.tsx
index 4ac45f2de1..c3d4e52587 100644
--- a/templates/plate-template/src/components/site/site-header.tsx
+++ b/templates/plate-template/src/components/site/site-header.tsx
@@ -1,9 +1,11 @@
+import type { LucideProps } from 'lucide-react';
+
import Link from 'next/link';
-import { siteConfig } from '@/config/site';
import { buttonVariants } from '@/components/plate-ui/button';
import { MainNav } from '@/components/site/main-nav';
import { ThemeToggle } from '@/components/site/theme-toggle';
+import { siteConfig } from '@/config/site';
export function SiteHeader() {
return (
@@ -14,8 +16,8 @@ export function SiteHeader() {