@@ -230,7 +230,7 @@ function CustomizerCode() {
);
}
-function getThemeCode(theme: Theme, radius: number) {
+function getThemeCode(theme: BaseColor, radius: number) {
if (!theme) {
return '';
}
diff --git a/apps/www/src/components/style-switcher.tsx b/apps/www/src/components/style-switcher.tsx
index e47134f708..defef7be8e 100644
--- a/apps/www/src/components/style-switcher.tsx
+++ b/apps/www/src/components/style-switcher.tsx
@@ -7,7 +7,7 @@ import type { SelectTriggerProps } from '@radix-ui/react-select';
import { cn } from '@udecode/cn';
import { useConfig } from '@/hooks/use-config';
-import { type Style, styles } from '@/registry/styles';
+import { type Style, styles } from '@/registry/registry-styles';
import {
Select,
diff --git a/apps/www/src/components/style-wrapper.tsx b/apps/www/src/components/style-wrapper.tsx
index 44b210d9ed..02c30e6b3b 100644
--- a/apps/www/src/components/style-wrapper.tsx
+++ b/apps/www/src/components/style-wrapper.tsx
@@ -2,7 +2,7 @@
import * as React from 'react';
-import type { Style } from '@/registry/styles';
+import type { Style } from '@/registry/registry-styles';
import { useConfig } from '@/hooks/use-config';
diff --git a/apps/www/src/components/theme-customizer.tsx b/apps/www/src/components/theme-customizer.tsx
index 228a203ba3..4fc3521e8e 100644
--- a/apps/www/src/components/theme-customizer.tsx
+++ b/apps/www/src/components/theme-customizer.tsx
@@ -34,6 +34,7 @@ import {
TooltipContent,
TooltipTrigger,
} from '@/registry/default/plate-ui/tooltip';
+import { type BaseColor, baseColors } from '@/registry/registry-base-colors';
import { copyToClipboardWithMeta } from './copy-button';
import { ThemeWrapper } from './theme-wrapper';
diff --git a/apps/www/src/components/themes-button.tsx b/apps/www/src/components/themes-button.tsx
index c3bdd801ab..159368371a 100644
--- a/apps/www/src/components/themes-button.tsx
+++ b/apps/www/src/components/themes-button.tsx
@@ -14,7 +14,7 @@ import {
TooltipContent,
TooltipTrigger,
} from '@/registry/default/plate-ui/tooltip';
-import { themes } from '@/registry/themes';
+import { baseColors } from '@/registry/registry-base-colors';
import { settingsStore } from './context/settings-store';
import { Skeleton } from './ui/skeleton';
@@ -34,7 +34,7 @@ export function ThemesButton() {
{mounted ? (
<>
{['slate', 'rose', 'blue', 'green', 'orange'].map((color) => {
- const theme = themes.find((th) => th.name === color);
+ const theme = baseColors.find((th) => th.name === color);
const isActive = config.theme === color;
if (!theme) {
diff --git a/apps/www/src/components/themes-styles.tsx b/apps/www/src/components/themes-styles.tsx
index 1d829ff5bd..62ebee4fb6 100644
--- a/apps/www/src/components/themes-styles.tsx
+++ b/apps/www/src/components/themes-styles.tsx
@@ -1,5 +1,7 @@
'use client';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+
export function ThemesStyle() {
const { themesConfig } = useThemesConfig();
diff --git a/apps/www/src/components/themes-tab-content.tsx b/apps/www/src/components/themes-tab-content.tsx
index 6686e4424c..bb5bc18437 100644
--- a/apps/www/src/components/themes-tab-content.tsx
+++ b/apps/www/src/components/themes-tab-content.tsx
@@ -19,7 +19,7 @@ import {
PopoverContent,
PopoverTrigger,
} from '@/registry/default/plate-ui/popover';
-import { themes } from '@/registry/themes';
+import { baseColors } from '@/registry/registry-base-colors';
import { CopyCodeButton } from './copy-code-button';
import { Label } from './ui/label';
@@ -109,7 +109,7 @@ export function ThemesTabContent() {
Color
- {themes.map((theme) => {
+ {baseColors.map((theme) => {
const isActive = config.theme === theme.name;
return mounted ? (
diff --git a/apps/www/src/components/typography.tsx b/apps/www/src/components/typography.tsx
index 7fe7e21614..d8f83a5cf1 100644
--- a/apps/www/src/components/typography.tsx
+++ b/apps/www/src/components/typography.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import type { Event } from '@/lib/events';
-import type { Style } from '@/registry/styles';
+import type { Style } from '@/registry/registry-styles';
import type { NpmCommands } from '@/types/unist';
import { cn } from '@udecode/cn';
diff --git a/apps/www/src/hooks/use-config.ts b/apps/www/src/hooks/use-config.ts
index d90326ea87..84430d8c82 100644
--- a/apps/www/src/hooks/use-config.ts
+++ b/apps/www/src/hooks/use-config.ts
@@ -1,4 +1,5 @@
-import type { Style } from '@/registry/styles';
+import type { BaseColor } from '@/registry/registry-base-colors';
+import type { Style } from '@/registry/registry-styles';
import { useAtom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
diff --git a/apps/www/src/lib/_blocks.ts b/apps/www/src/lib/_blocks.ts
index 5078061de4..b6a0cc008f 100644
--- a/apps/www/src/lib/_blocks.ts
+++ b/apps/www/src/lib/_blocks.ts
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/require-await */
'use server';
-import type { Style } from '@/registry/styles';
+import type { Style } from '@/registry/registry-styles';
import { promises as fs } from 'node:fs';
import { tmpdir } from 'node:os';
diff --git a/apps/www/src/registry/registry-base-colors.ts b/apps/www/src/registry/registry-base-colors.ts
index 7cdccbc8bb..10ec7a1a6f 100644
--- a/apps/www/src/registry/registry-base-colors.ts
+++ b/apps/www/src/registry/registry-base-colors.ts
@@ -633,4 +633,4 @@ export const baseColors = [
},
] as const;
-export type BaseTheme = (typeof baseColors)[number];
+export type BaseColor = (typeof baseColors)[number];
diff --git a/apps/www/src/registry/registry-examples.ts b/apps/www/src/registry/registry-examples.ts
index 1f5fa5a3d1..88ce47ad1e 100644
--- a/apps/www/src/registry/registry-examples.ts
+++ b/apps/www/src/registry/registry-examples.ts
@@ -154,12 +154,12 @@ export const examples: Registry = [
external: true,
files: ['styles/globals.css'],
name: 'globals',
- type: 'components:component',
+ type: 'registry:style',
},
{
external: true,
files: ['types/plate-types.ts'],
name: 'plate-types',
- type: 'components:component',
+ type: 'registry:lib',
},
];
From 37d5697c61c5f5da9194b3f9ccee7d156eb7cf08 Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Sat, 21 Sep 2024 23:58:45 +0200
Subject: [PATCH 3/8] fix: theme
---
apps/www/src/app/_components/home-tabs.tsx | 5 +-
apps/www/src/app/layout.tsx | 6 +-
apps/www/src/components/body.tsx | 43 --
apps/www/src/components/customizer-tabs.tsx | 4 +-
apps/www/src/components/theme-customizer.tsx | 505 +-----------------
apps/www/src/components/themes-selector.tsx | 122 -----
apps/www/src/components/themes-styles.tsx | 30 --
.../www/src/components/themes-tab-content.tsx | 214 --------
8 files changed, 34 insertions(+), 895 deletions(-)
delete mode 100644 apps/www/src/components/body.tsx
delete mode 100644 apps/www/src/components/themes-selector.tsx
delete mode 100644 apps/www/src/components/themes-styles.tsx
delete mode 100644 apps/www/src/components/themes-tab-content.tsx
diff --git a/apps/www/src/app/_components/home-tabs.tsx b/apps/www/src/app/_components/home-tabs.tsx
index fa604c3be5..48b2d640db 100644
--- a/apps/www/src/app/_components/home-tabs.tsx
+++ b/apps/www/src/app/_components/home-tabs.tsx
@@ -9,6 +9,7 @@ import { parseAsBoolean, useQueryState } from 'nuqs';
import { BlockPreview } from '@/components/block-preview';
import { settingsStore } from '@/components/context/settings-store';
+import { ThemeWrapper } from '@/components/theme-wrapper';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { Button } from '@/registry/default/plate-ui/button';
@@ -68,7 +69,9 @@ export default function HomeTabs() {
-
+
+
+
diff --git a/apps/www/src/app/layout.tsx b/apps/www/src/app/layout.tsx
index 7c9c196590..c42665784a 100644
--- a/apps/www/src/app/layout.tsx
+++ b/apps/www/src/app/layout.tsx
@@ -4,7 +4,6 @@ import type { Metadata, Viewport } from 'next';
import { cn } from '@udecode/cn';
-import { Body } from '@/components/body';
import { Providers } from '@/components/context/providers';
import { SiteFooter } from '@/components/site-footer';
import { SiteHeader } from '@/components/site-header';
@@ -86,12 +85,11 @@ export default function RootLayout({ children }: RootLayoutProps) {
return (
-
@@ -106,7 +104,7 @@ export default function RootLayout({ children }: RootLayoutProps) {
-
+
);
}
diff --git a/apps/www/src/components/body.tsx b/apps/www/src/components/body.tsx
deleted file mode 100644
index 3468b53cb5..0000000000
--- a/apps/www/src/components/body.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-'use client';
-
-import { cn } from '@udecode/cn';
-import { usePathname } from 'next/navigation';
-
-import { useConfig } from '@/hooks/use-config';
-import { useMounted } from '@/hooks/use-mounted';
-
-interface ThemeBodyProps extends React.ComponentProps<'body'> {
- defaultTheme?: string;
-}
-
-export function Body({
- children,
- className,
- defaultTheme,
- ...props
-}: ThemeBodyProps) {
- const [config] = useConfig();
- const pathname = usePathname();
- const mounted = useMounted();
-
- const theme =
- mounted && pathname === '/'
- ? `theme-${config.theme ?? defaultTheme}`
- : `theme-${defaultTheme}`;
-
- return (
-
- {children}
-
- );
-}
diff --git a/apps/www/src/components/customizer-tabs.tsx b/apps/www/src/components/customizer-tabs.tsx
index eef07adaad..fdcf250d64 100644
--- a/apps/www/src/components/customizer-tabs.tsx
+++ b/apps/www/src/components/customizer-tabs.tsx
@@ -2,7 +2,7 @@ import * as React from 'react';
import { settingsStore } from './context/settings-store';
import { PluginsTabContent } from './plugins-tab-content';
-import { ThemesTabContent } from './themes-tab-content';
+import { ThemeCustomizer } from './theme-customizer';
import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';
export function CustomizerTabs() {
@@ -33,7 +33,7 @@ export function CustomizerTabs() {
className="h-[calc(85vh-90px)] overflow-y-auto overflow-x-hidden overscroll-contain pt-2 md:h-[calc(100vh-64px)]"
value="themes"
>
-
+
diff --git a/apps/www/src/components/theme-customizer.tsx b/apps/www/src/components/theme-customizer.tsx
index 4fc3521e8e..7c7b07c40d 100644
--- a/apps/www/src/components/theme-customizer.tsx
+++ b/apps/www/src/components/theme-customizer.tsx
@@ -4,172 +4,39 @@ import * as React from 'react';
import {
CheckIcon,
- CopyIcon,
InfoCircledIcon,
MoonIcon,
ResetIcon,
SunIcon,
} from '@radix-ui/react-icons';
import { cn } from '@udecode/cn';
-import template from 'lodash.template';
import { useTheme } from 'next-themes';
import { useConfig } from '@/hooks/use-config';
import { Button } from '@/registry/default/plate-ui/button';
-import {
- Dialog,
- DialogContent,
- DialogDescription,
- DialogHeader,
- DialogTitle,
- DialogTrigger,
-} from '@/registry/default/plate-ui/dialog';
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '@/registry/default/plate-ui/popover';
-import {
- Tooltip,
- TooltipContent,
- TooltipTrigger,
-} from '@/registry/default/plate-ui/tooltip';
-import { type BaseColor, baseColors } from '@/registry/registry-base-colors';
+import { baseColors } from '@/registry/registry-base-colors';
-import { copyToClipboardWithMeta } from './copy-button';
-import { ThemeWrapper } from './theme-wrapper';
-import { Drawer, DrawerContent, DrawerTrigger } from './ui/drawer';
+import { CopyCodeButton } from './copy-code-button';
import { Label } from './ui/label';
import { Skeleton } from './ui/skeleton';
-import '@/styles/mdx.css';
-
export function ThemeCustomizer() {
- const [config, setConfig] = useConfig();
- const { resolvedTheme: mode } = useTheme();
const [mounted, setMounted] = React.useState(false);
-
- React.useEffect(() => {
- setMounted(true);
- }, []);
-
- return (
-
-
-
-
- Customize
-
-
-
-
-
-
-
-
-
- Customize
-
-
-
-
-
-
- {mounted ? (
- <>
- {['zinc', 'rose', 'blue', 'green', 'orange'].map((color) => {
- const baseColor = baseColors.find(
- (baseColor) => baseColor.name === color
- );
- const isActive = config.theme === color;
-
- if (!baseColor) {
- return null;
- }
-
- return (
-
-
-
- setConfig({
- ...config,
- theme: baseColor.name,
- })
- }
- type="button"
- >
-
- {isActive && (
-
- )}
-
- {baseColor.label}
-
-
-
- {baseColor.label}
-
-
- );
- })}
- >
- ) : (
-
-
-
-
-
-
-
- )}
-
-
-
-
- );
-}
-
-function Customizer() {
- const [mounted, setMounted] = React.useState(false);
- const { resolvedTheme: mode, setTheme: setMode } = useTheme();
const [config, setConfig] = useConfig();
+ const { resolvedTheme: mode, setTheme: setMode } = useTheme();
React.useEffect(() => {
setMounted(true);
}, []);
return (
-
-
+ <>
+
Customize
@@ -178,21 +45,8 @@ function Customizer() {
Pick a style and color for your components.
-
{
- setConfig({
- ...config,
- radius: 0.5,
- theme: 'zinc',
- });
- }}
- >
-
- Reset
-
+
+
@@ -209,27 +63,21 @@ function Customizer() {
alignOffset={-20}
side="right"
>
-
- What is the difference between the New York and Default style?
-
+
What is a style?
A style comes with its own set of components, animations,
icons and more.
The Default style has
- larger inputs, uses lucide-react for icons and
+ large inputs, uses lucide-react for icons and
tailwindcss-animate for animations.
-
- The New York style ships
- with smaller buttons and cards with shadows. It uses icons
- from Radix Icons.
-
+
Other styles will be added in the future.
-
+
Default
- {/* setConfig({ ...config, style: 'new-york' })}
+
+ {
+ setConfig({
+ ...config,
+ radius: 0.5,
+ theme: 'slate',
+ });
+ }}
>
- New York
- */}
+
+ Reset
+
@@ -355,313 +209,6 @@ function Customizer() {
-
- );
-}
-
-function CopyCodeButton({
- className,
- ...props
-}: React.ComponentProps
) {
- const [config] = useConfig();
- const activeTheme = baseColors.find((theme) => theme.name === config.theme);
- const [hasCopied, setHasCopied] = React.useState(false);
-
- React.useEffect(() => {
- setTimeout(() => {
- setHasCopied(false);
- }, 2000);
- }, [hasCopied]);
-
- return (
- <>
- {activeTheme && (
- {
- copyToClipboardWithMeta(getThemeCode(activeTheme, config.radius), {
- name: 'copy_theme_code',
- properties: {
- radius: config.radius,
- theme: activeTheme.name,
- },
- });
- setHasCopied(true);
- }}
- {...props}
- >
- {hasCopied ? (
-
- ) : (
-
- )}
- Copy code
-
- )}
-
-
-
- Copy code
-
-
-
-
- Theme
-
- Copy and paste the following code into your CSS file.
-
-
-
-
- {activeTheme && (
- {
- copyToClipboardWithMeta(
- getThemeCode(activeTheme, config.radius),
- {
- name: 'copy_theme_code',
- properties: {
- radius: config.radius,
- theme: activeTheme.name,
- },
- }
- );
- setHasCopied(true);
- }}
- >
- {hasCopied ? (
-
- ) : (
-
- )}
- Copy
-
- )}
-
-
-
>
);
}
-
-function CustomizerCode() {
- const [config] = useConfig();
- const activeTheme = baseColors.find((theme) => theme.name === config.theme);
-
- return (
-
-
-
-
- @layer base {
- :root {
-
- --background:{' '}
- {activeTheme?.cssVars.light.background};
-
-
- --foreground:{' '}
- {activeTheme?.cssVars.light.foreground};
-
- {[
- 'card',
- 'popover',
- 'primary',
- 'secondary',
- 'muted',
- 'accent',
- 'destructive',
- ].map((prefix) => (
- <>
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.light[
- prefix as keyof typeof activeTheme.cssVars.light
- ]
- }
- ;
-
-
- --{prefix}-foreground:{' '}
- {
- activeTheme?.cssVars.light[
- `${prefix}-foreground` as keyof typeof activeTheme.cssVars.light
- ]
- }
- ;
-
- >
- ))}
-
- --border:{' '}
- {activeTheme?.cssVars.light.border};
-
-
- --input:{' '}
- {activeTheme?.cssVars.light.input};
-
-
- --ring: {activeTheme?.cssVars.light.ring};
-
-
- --radius: {config.radius}rem;
-
- {['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5'].map(
- (prefix) => (
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.light[
- prefix as keyof typeof activeTheme.cssVars.light
- ]
- }
- ;
-
- )
- )}
- }
-
- .dark {
-
- --background:{' '}
- {activeTheme?.cssVars.dark.background};
-
-
- --foreground:{' '}
- {activeTheme?.cssVars.dark.foreground};
-
- {[
- 'card',
- 'popover',
- 'primary',
- 'secondary',
- 'muted',
- 'accent',
- 'destructive',
- ].map((prefix) => (
- <>
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.dark[
- prefix as keyof typeof activeTheme.cssVars.dark
- ]
- }
- ;
-
-
- --{prefix}-foreground:{' '}
- {
- activeTheme?.cssVars.dark[
- `${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark
- ]
- }
- ;
-
- >
- ))}
-
- --border:{' '}
- {activeTheme?.cssVars.dark.border};
-
-
- --input: {activeTheme?.cssVars.dark.input}
- ;
-
-
- --ring: {activeTheme?.cssVars.dark.ring};
-
- {['chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5'].map(
- (prefix) => (
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.dark[
- prefix as keyof typeof activeTheme.cssVars.dark
- ]
- }
- ;
-
- )
- )}
- }
- }
-
-
-
-
- );
-}
-
-function getThemeCode(theme: BaseColor, radius: number) {
- if (!theme) {
- return '';
- }
-
- return template(BASE_STYLES_WITH_VARIABLES)({
- colors: theme.cssVars,
- radius,
- });
-}
-
-const BASE_STYLES_WITH_VARIABLES = `
-@layer base {
- :root {
- --background: <%- colors.light["background"] %>;
- --foreground: <%- colors.light["foreground"] %>;
- --card: <%- colors.light["card"] %>;
- --card-foreground: <%- colors.light["card-foreground"] %>;
- --popover: <%- colors.light["popover"] %>;
- --popover-foreground: <%- colors.light["popover-foreground"] %>;
- --primary: <%- colors.light["primary"] %>;
- --primary-foreground: <%- colors.light["primary-foreground"] %>;
- --secondary: <%- colors.light["secondary"] %>;
- --secondary-foreground: <%- colors.light["secondary-foreground"] %>;
- --muted: <%- colors.light["muted"] %>;
- --muted-foreground: <%- colors.light["muted-foreground"] %>;
- --accent: <%- colors.light["accent"] %>;
- --accent-foreground: <%- colors.light["accent-foreground"] %>;
- --destructive: <%- colors.light["destructive"] %>;
- --destructive-foreground: <%- colors.light["destructive-foreground"] %>;
- --border: <%- colors.light["border"] %>;
- --input: <%- colors.light["input"] %>;
- --ring: <%- colors.light["ring"] %>;
- --radius: <%- radius %>rem;
- --chart-1: <%- colors.light["chart-1"] %>;
- --chart-2: <%- colors.light["chart-2"] %>;
- --chart-3: <%- colors.light["chart-3"] %>;
- --chart-4: <%- colors.light["chart-4"] %>;
- --chart-5: <%- colors.light["chart-5"] %>;
- }
-
- .dark {
- --background: <%- colors.dark["background"] %>;
- --foreground: <%- colors.dark["foreground"] %>;
- --card: <%- colors.dark["card"] %>;
- --card-foreground: <%- colors.dark["card-foreground"] %>;
- --popover: <%- colors.dark["popover"] %>;
- --popover-foreground: <%- colors.dark["popover-foreground"] %>;
- --primary: <%- colors.dark["primary"] %>;
- --primary-foreground: <%- colors.dark["primary-foreground"] %>;
- --secondary: <%- colors.dark["secondary"] %>;
- --secondary-foreground: <%- colors.dark["secondary-foreground"] %>;
- --muted: <%- colors.dark["muted"] %>;
- --muted-foreground: <%- colors.dark["muted-foreground"] %>;
- --accent: <%- colors.dark["accent"] %>;
- --accent-foreground: <%- colors.dark["accent-foreground"] %>;
- --destructive: <%- colors.dark["destructive"] %>;
- --destructive-foreground: <%- colors.dark["destructive-foreground"] %>;
- --border: <%- colors.dark["border"] %>;
- --input: <%- colors.dark["input"] %>;
- --ring: <%- colors.dark["ring"] %>;
- --chart-1: <%- colors.dark["chart-1"] %>;
- --chart-2: <%- colors.dark["chart-2"] %>;
- --chart-3: <%- colors.dark["chart-3"] %>;
- --chart-4: <%- colors.dark["chart-4"] %>;
- --chart-5: <%- colors.dark["chart-5"] %>;
- }
-}
-`;
diff --git a/apps/www/src/components/themes-selector.tsx b/apps/www/src/components/themes-selector.tsx
deleted file mode 100644
index 5af81e8fdd..0000000000
--- a/apps/www/src/components/themes-selector.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-'use client';
-import * as React from 'react';
-
-import { cn } from '@udecode/cn';
-import { useTheme } from 'next-themes';
-
-import { useMediaQuery } from '@/hooks/use-media-query';
-import { useThemesConfig } from '@/hooks/use-themes-config';
-import { type Theme, THEMES } from '@/lib/themes';
-import {
- Tooltip,
- TooltipContent,
- TooltipTrigger,
-} from '@/registry/default/plate-ui/tooltip';
-
-import { Skeleton } from './ui/skeleton';
-import { ToggleGroup, ToggleGroupItem } from './ui/toggle-group';
-
-export function ThemesSwitcher({
- className,
- themes = THEMES,
-}: React.ComponentProps<'div'> & { themes?: Theme[] }) {
- const { theme: mode } = useTheme();
- const [mounted, setMounted] = React.useState(false);
- const { setThemesConfig, themesConfig } = useThemesConfig();
- const activeTheme = themesConfig.activeTheme;
- const isDesktop = useMediaQuery('(min-width: 1024px)');
- React.useEffect(() => {
- setMounted(true);
- }, []);
-
- if (!mounted) {
- return (
-
- {themes.map((theme) => (
-
-
-
- ))}
-
- );
- }
-
- return (
- {
- const theme = themes.find((theme) => theme.name === value);
-
- if (!theme) {
- return;
- }
-
- setThemesConfig({ ...themesConfig, activeTheme: theme });
- }}
- type="single"
- >
- {themes.map((theme) => {
- const isActive = theme.name === activeTheme.name;
- const isDarkTheme = ['Midnight'].includes(theme.name);
- const cssVars =
- mounted && mode === 'dark' ? theme.cssVars.dark : theme.cssVars.light;
-
- return (
-
-
-
-
-
-
-
-
-
- {theme.name}
-
-
-
-
-
- {theme.name}
-
-
- );
- })}
-
- );
-}
diff --git a/apps/www/src/components/themes-styles.tsx b/apps/www/src/components/themes-styles.tsx
deleted file mode 100644
index 62ebee4fb6..0000000000
--- a/apps/www/src/components/themes-styles.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-'use client';
-
-import { useThemesConfig } from '@/hooks/use-themes-config';
-
-export function ThemesStyle() {
- const { themesConfig } = useThemesConfig();
-
- if (!themesConfig.activeTheme) {
- return null;
- }
-
- return (
-
- );
-}
diff --git a/apps/www/src/components/themes-tab-content.tsx b/apps/www/src/components/themes-tab-content.tsx
deleted file mode 100644
index bb5bc18437..0000000000
--- a/apps/www/src/components/themes-tab-content.tsx
+++ /dev/null
@@ -1,214 +0,0 @@
-'use client';
-
-import * as React from 'react';
-
-import {
- CheckIcon,
- InfoCircledIcon,
- MoonIcon,
- ResetIcon,
- SunIcon,
-} from '@radix-ui/react-icons';
-import { cn } from '@udecode/cn';
-import { useTheme } from 'next-themes';
-
-import { useConfig } from '@/hooks/use-config';
-import { Button } from '@/registry/default/plate-ui/button';
-import {
- Popover,
- PopoverContent,
- PopoverTrigger,
-} from '@/registry/default/plate-ui/popover';
-import { baseColors } from '@/registry/registry-base-colors';
-
-import { CopyCodeButton } from './copy-code-button';
-import { Label } from './ui/label';
-import { Skeleton } from './ui/skeleton';
-
-export function ThemesTabContent() {
- const [mounted, setMounted] = React.useState(false);
- const [config, setConfig] = useConfig();
- const { resolvedTheme: mode, setTheme: setMode } = useTheme();
-
- React.useEffect(() => {
- setMounted(true);
- }, []);
-
- return (
- <>
-
-
-
- Customize
-
-
- Pick a style and color for your components.
-
-
-
-
-
-
-
-
-
Style
-
-
-
- About styles
-
-
- What is a style?
-
- A style comes with its own set of components, animations,
- icons and more.
-
-
- The Default style has
- large inputs, uses lucide-react for icons and
- tailwindcss-animate for animations.
-
- Other styles will be added in the future.
-
-
-
-
- setConfig({ ...config, style: 'default' })}
- >
- Default
-
-
- {
- setConfig({
- ...config,
- radius: 0.5,
- theme: 'slate',
- });
- }}
- >
-
- Reset
-
-
-
-
-
Color
-
- {baseColors.map((theme) => {
- const isActive = config.theme === theme.name;
-
- return mounted ? (
- {
- setConfig({
- ...config,
- theme: theme.name,
- });
- }}
- >
-
- {isActive && }
-
- {theme.label}
-
- ) : (
-
- );
- })}
-
-
-
-
Radius
-
- {['0', '0.3', '0.5', '0.75', '1.0'].map((value) => {
- return (
- {
- setConfig({
- ...config,
- radius: Number.parseFloat(value),
- });
- }}
- >
- {value}
-
- );
- })}
-
-
-
-
Mode
-
- {mounted ? (
- <>
- setMode('light')}
- >
-
- Light
-
- setMode('dark')}
- >
-
- Dark
-
- >
- ) : (
- <>
-
-
- >
- )}
-
-
-
- >
- );
-}
From 34039c82eb0732ffacb5063206ae333a6865b680 Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Sun, 22 Sep 2024 20:48:36 +0200
Subject: [PATCH 4/8] =?UTF-8?q?=F0=9F=8E=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/www/public/r/colors/gray.json | 92 +
apps/www/public/r/colors/index.json | 1999 +++++++++++++++++
apps/www/public/r/colors/neutral.json | 92 +
apps/www/public/r/colors/slate.json | 92 +
apps/www/public/r/colors/stone.json | 92 +
apps/www/public/r/colors/zinc.json | 92 +
apps/www/public/r/index.json | 1242 ++++++++++
.../r/styles/default/align-dropdown-menu.json | 19 +
apps/www/public/r/styles/default/avatar.json | 16 +
.../r/styles/default/blockquote-element.json | 16 +
apps/www/public/r/styles/default/button.json | 16 +
.../www/public/r/styles/default/calendar.json | 19 +
apps/www/public/r/styles/default/caption.json | 16 +
.../www/public/r/styles/default/checkbox.json | 16 +
apps/www/public/r/styles/default/cloud.json | 46 +
.../r/styles/default/code-block-element.json | 30 +
.../public/r/styles/default/code-leaf.json | 16 +
.../r/styles/default/code-line-element.json | 16 +
.../r/styles/default/code-syntax-leaf.json | 16 +
.../r/styles/default/color-dropdown-menu.json | 50 +
.../r/styles/default/column-element.json | 25 +
apps/www/public/r/styles/default/command.json | 18 +
.../public/r/styles/default/comment-leaf.json | 16 +
.../default/comment-toolbar-button.json | 14 +
.../r/styles/default/comments-popover.json | 61 +
.../r/styles/default/cursor-overlay.json | 14 +
.../public/r/styles/default/date-element.json | 18 +
apps/www/public/r/styles/default/dialog.json | 16 +
.../public/r/styles/default/draggable.json | 26 +
.../r/styles/default/dropdown-menu.json | 16 +
apps/www/public/r/styles/default/editor.json | 14 +
.../r/styles/default/emoji-dropdown-menu.json | 66 +
.../r/styles/default/emoji-input-element.json | 18 +
.../r/styles/default/excalidraw-element.json | 16 +
.../styles/default/fixed-toolbar-buttons.json | 22 +
.../r/styles/default/fixed-toolbar.json | 16 +
.../default/floating-toolbar-buttons.json | 20 +
.../r/styles/default/floating-toolbar.json | 18 +
.../r/styles/default/heading-element.json | 16 +
.../r/styles/default/highlight-leaf.json | 16 +
.../public/r/styles/default/hr-element.json | 16 +
.../r/styles/default/image-element.json | 20 +
.../default/indent-list-toolbar-button.json | 18 +
.../styles/default/indent-toolbar-button.json | 18 +
apps/www/public/r/styles/default/index.json | 21 +
.../r/styles/default/inline-combobox.json | 17 +
apps/www/public/r/styles/default/input.json | 14 +
.../styles/default/insert-dropdown-menu.json | 20 +
.../www/public/r/styles/default/kbd-leaf.json | 16 +
.../default/line-height-dropdown-menu.json | 19 +
.../public/r/styles/default/link-element.json | 16 +
.../styles/default/link-floating-toolbar.json | 21 +
.../r/styles/default/link-toolbar-button.json | 18 +
.../public/r/styles/default/list-element.json | 16 +
.../r/styles/default/list-toolbar-button.json | 18 +
.../r/styles/default/mark-toolbar-button.json | 18 +
.../r/styles/default/media-embed-element.json | 22 +
.../r/styles/default/media-popover.json | 21 +
.../styles/default/media-toolbar-button.json | 18 +
.../r/styles/default/mention-element.json | 16 +
.../styles/default/mention-input-element.json | 18 +
.../r/styles/default/mode-dropdown-menu.json | 17 +
.../r/styles/default/more-dropdown-menu.json | 19 +
.../default/outdent-toolbar-button.json | 18 +
.../r/styles/default/paragraph-element.json | 13 +
.../public/r/styles/default/placeholder.json | 18 +
.../public/r/styles/default/plate-types.json | 13 +
apps/www/public/r/styles/default/popover.json | 16 +
.../public/r/styles/default/resizable.json | 16 +
.../styles/default/search-highlight-leaf.json | 16 +
.../public/r/styles/default/separator.json | 16 +
.../r/styles/default/slash-input-element.json | 19 +
.../r/styles/default/table-cell-element.json | 18 +
.../r/styles/default/table-dropdown-menu.json | 19 +
.../r/styles/default/table-element.json | 18 +
.../r/styles/default/table-row-element.json | 16 +
.../r/styles/default/theme-daylight.json | 58 +
.../r/styles/default/theme-emerald.json | 58 +
.../r/styles/default/theme-midnight.json | 58 +
.../r/styles/default/todo-list-element.json | 18 +
.../r/styles/default/toggle-element.json | 16 +
.../styles/default/toggle-toolbar-button.json | 18 +
apps/www/public/r/styles/default/toolbar.json | 19 +
apps/www/public/r/styles/default/tooltip.json | 16 +
.../default/turn-into-dropdown-menu.json | 20 +
.../public/r/styles/default/use-debounce.json | 11 +
apps/www/public/r/styles/default/utils.json | 15 +
apps/www/public/r/styles/index.json | 6 +
apps/www/public/r/themes.css | 768 +++++++
apps/www/public/r/themes/gray.json | 48 +
apps/www/public/r/themes/neutral.json | 48 +
apps/www/public/r/themes/slate.json | 48 +
apps/www/public/r/themes/stone.json | 48 +
apps/www/public/r/themes/zinc.json | 48 +
apps/www/scripts/build-registry.mts | 16 +-
apps/www/src/__registry__/.autogenerated | 1 -
apps/www/src/__registry__/.gitkeep | 0
apps/www/src/__registry__/README.md | 1 -
apps/www/src/__registry__/index.tsx | 1418 ++++++------
apps/www/src/app/_components/home-tabs.tsx | 5 +-
.../src/app/_components/installation-tab.tsx | 6 -
apps/www/src/app/announcement-button.tsx | 12 +-
apps/www/src/app/page.tsx | 8 +-
apps/www/src/components/block-copy-button.tsx | 53 +-
apps/www/src/components/block-preview.tsx | 18 +-
apps/www/src/components/context/providers.tsx | 10 +-
apps/www/src/components/copy-code-button.tsx | 318 +--
apps/www/src/components/customizer-drawer.tsx | 4 +-
apps/www/src/components/customizer-tabs.tsx | 13 +-
.../playground-insert-dropdown-menu.tsx | 2 +-
.../playground-turn-into-dropdown-menu.tsx | 2 +-
.../src/components/plugins-tab-content.tsx | 2 +-
apps/www/src/components/setting-checkbox.tsx | 41 +-
apps/www/src/components/settings-toggle.tsx | 33 +-
apps/www/src/components/theme-customizer.tsx | 109 +-
apps/www/src/components/theme-switcher.tsx | 28 +
apps/www/src/components/theme-wrapper.tsx | 7 +-
apps/www/src/components/themes-button.tsx | 94 +-
.../src/components/themes-selector-mini.tsx | 136 ++
apps/www/src/components/themes-selector.tsx | 128 ++
apps/www/src/components/themes-styles.tsx | 35 +
apps/www/src/components/ui/toggle.tsx | 1 +
apps/www/src/config/docs.ts | 1 -
apps/www/src/hooks/use-themes-config.ts | 3 +-
.../plate/demo/values/usePlaygroundValue.ts | 2 +-
apps/www/src/lib/themes.ts | 725 +++---
.../registry/default/example/mode-toggle.tsx | 44 +-
.../default/example/playground-demo.tsx | 131 +-
.../default}/hooks/use-debounce.ts | 0
.../default/lib}/plate-types.ts | 0
.../src/{ => registry/default}/lib/utils.ts | 0
.../plate-ui/color-dropdown-menu-items.tsx | 29 +-
.../default/plate-ui/comments-popover.tsx | 2 +-
.../registry/default/plate-ui/draggable.tsx | 51 +-
.../src/registry/default/plate-ui/editor.tsx | 2 +-
.../default/plate-ui/emoji-input-element.tsx | 19 +-
.../default/plate-ui/floating-toolbar.tsx | 2 +-
.../default/plate-ui/inline-combobox.tsx | 2 +-
.../src/registry/default/plate-ui/toolbar.tsx | 2 +-
.../src/registry/default/plate-ui/tooltip.tsx | 41 +-
apps/www/src/registry/registry-examples.ts | 8 +-
apps/www/src/registry/registry-hooks.ts | 14 +-
142 files changed, 8287 insertions(+), 1685 deletions(-)
create mode 100644 apps/www/public/r/colors/gray.json
create mode 100644 apps/www/public/r/colors/index.json
create mode 100644 apps/www/public/r/colors/neutral.json
create mode 100644 apps/www/public/r/colors/slate.json
create mode 100644 apps/www/public/r/colors/stone.json
create mode 100644 apps/www/public/r/colors/zinc.json
create mode 100644 apps/www/public/r/index.json
create mode 100644 apps/www/public/r/styles/default/align-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/avatar.json
create mode 100644 apps/www/public/r/styles/default/blockquote-element.json
create mode 100644 apps/www/public/r/styles/default/button.json
create mode 100644 apps/www/public/r/styles/default/calendar.json
create mode 100644 apps/www/public/r/styles/default/caption.json
create mode 100644 apps/www/public/r/styles/default/checkbox.json
create mode 100644 apps/www/public/r/styles/default/cloud.json
create mode 100644 apps/www/public/r/styles/default/code-block-element.json
create mode 100644 apps/www/public/r/styles/default/code-leaf.json
create mode 100644 apps/www/public/r/styles/default/code-line-element.json
create mode 100644 apps/www/public/r/styles/default/code-syntax-leaf.json
create mode 100644 apps/www/public/r/styles/default/color-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/column-element.json
create mode 100644 apps/www/public/r/styles/default/command.json
create mode 100644 apps/www/public/r/styles/default/comment-leaf.json
create mode 100644 apps/www/public/r/styles/default/comment-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/comments-popover.json
create mode 100644 apps/www/public/r/styles/default/cursor-overlay.json
create mode 100644 apps/www/public/r/styles/default/date-element.json
create mode 100644 apps/www/public/r/styles/default/dialog.json
create mode 100644 apps/www/public/r/styles/default/draggable.json
create mode 100644 apps/www/public/r/styles/default/dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/editor.json
create mode 100644 apps/www/public/r/styles/default/emoji-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/emoji-input-element.json
create mode 100644 apps/www/public/r/styles/default/excalidraw-element.json
create mode 100644 apps/www/public/r/styles/default/fixed-toolbar-buttons.json
create mode 100644 apps/www/public/r/styles/default/fixed-toolbar.json
create mode 100644 apps/www/public/r/styles/default/floating-toolbar-buttons.json
create mode 100644 apps/www/public/r/styles/default/floating-toolbar.json
create mode 100644 apps/www/public/r/styles/default/heading-element.json
create mode 100644 apps/www/public/r/styles/default/highlight-leaf.json
create mode 100644 apps/www/public/r/styles/default/hr-element.json
create mode 100644 apps/www/public/r/styles/default/image-element.json
create mode 100644 apps/www/public/r/styles/default/indent-list-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/indent-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/index.json
create mode 100644 apps/www/public/r/styles/default/inline-combobox.json
create mode 100644 apps/www/public/r/styles/default/input.json
create mode 100644 apps/www/public/r/styles/default/insert-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/kbd-leaf.json
create mode 100644 apps/www/public/r/styles/default/line-height-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/link-element.json
create mode 100644 apps/www/public/r/styles/default/link-floating-toolbar.json
create mode 100644 apps/www/public/r/styles/default/link-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/list-element.json
create mode 100644 apps/www/public/r/styles/default/list-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/mark-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/media-embed-element.json
create mode 100644 apps/www/public/r/styles/default/media-popover.json
create mode 100644 apps/www/public/r/styles/default/media-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/mention-element.json
create mode 100644 apps/www/public/r/styles/default/mention-input-element.json
create mode 100644 apps/www/public/r/styles/default/mode-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/more-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/outdent-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/paragraph-element.json
create mode 100644 apps/www/public/r/styles/default/placeholder.json
create mode 100644 apps/www/public/r/styles/default/plate-types.json
create mode 100644 apps/www/public/r/styles/default/popover.json
create mode 100644 apps/www/public/r/styles/default/resizable.json
create mode 100644 apps/www/public/r/styles/default/search-highlight-leaf.json
create mode 100644 apps/www/public/r/styles/default/separator.json
create mode 100644 apps/www/public/r/styles/default/slash-input-element.json
create mode 100644 apps/www/public/r/styles/default/table-cell-element.json
create mode 100644 apps/www/public/r/styles/default/table-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/table-element.json
create mode 100644 apps/www/public/r/styles/default/table-row-element.json
create mode 100644 apps/www/public/r/styles/default/theme-daylight.json
create mode 100644 apps/www/public/r/styles/default/theme-emerald.json
create mode 100644 apps/www/public/r/styles/default/theme-midnight.json
create mode 100644 apps/www/public/r/styles/default/todo-list-element.json
create mode 100644 apps/www/public/r/styles/default/toggle-element.json
create mode 100644 apps/www/public/r/styles/default/toggle-toolbar-button.json
create mode 100644 apps/www/public/r/styles/default/toolbar.json
create mode 100644 apps/www/public/r/styles/default/tooltip.json
create mode 100644 apps/www/public/r/styles/default/turn-into-dropdown-menu.json
create mode 100644 apps/www/public/r/styles/default/use-debounce.json
create mode 100644 apps/www/public/r/styles/default/utils.json
create mode 100644 apps/www/public/r/styles/index.json
create mode 100644 apps/www/public/r/themes.css
create mode 100644 apps/www/public/r/themes/gray.json
create mode 100644 apps/www/public/r/themes/neutral.json
create mode 100644 apps/www/public/r/themes/slate.json
create mode 100644 apps/www/public/r/themes/stone.json
create mode 100644 apps/www/public/r/themes/zinc.json
delete mode 100644 apps/www/src/__registry__/.autogenerated
delete mode 100644 apps/www/src/__registry__/.gitkeep
delete mode 100644 apps/www/src/__registry__/README.md
create mode 100644 apps/www/src/components/theme-switcher.tsx
create mode 100644 apps/www/src/components/themes-selector-mini.tsx
create mode 100644 apps/www/src/components/themes-selector.tsx
create mode 100644 apps/www/src/components/themes-styles.tsx
rename apps/www/src/{ => registry/default}/hooks/use-debounce.ts (100%)
rename apps/www/src/{types => registry/default/lib}/plate-types.ts (100%)
rename apps/www/src/{ => registry/default}/lib/utils.ts (100%)
diff --git a/apps/www/public/r/colors/gray.json b/apps/www/public/r/colors/gray.json
new file mode 100644
index 0000000000..852a65cb79
--- /dev/null
+++ b/apps/www/public/r/colors/gray.json
@@ -0,0 +1,92 @@
+{
+ "inlineColors": {
+ "dark": {
+ "accent": "gray-800",
+ "accent-foreground": "gray-50",
+ "background": "gray-950",
+ "border": "gray-800",
+ "card": "gray-950",
+ "card-foreground": "gray-50",
+ "destructive": "red-900",
+ "destructive-foreground": "gray-50",
+ "foreground": "gray-50",
+ "input": "gray-800",
+ "muted": "gray-800",
+ "muted-foreground": "gray-400",
+ "popover": "gray-950",
+ "popover-foreground": "gray-50",
+ "primary": "gray-50",
+ "primary-foreground": "gray-900",
+ "ring": "gray-300",
+ "secondary": "gray-800",
+ "secondary-foreground": "gray-50"
+ },
+ "light": {
+ "accent": "gray-100",
+ "accent-foreground": "gray-900",
+ "background": "white",
+ "border": "gray-200",
+ "card": "white",
+ "card-foreground": "gray-950",
+ "destructive": "red-500",
+ "destructive-foreground": "gray-50",
+ "foreground": "gray-950",
+ "input": "gray-200",
+ "muted": "gray-100",
+ "muted-foreground": "gray-500",
+ "popover": "white",
+ "popover-foreground": "gray-950",
+ "primary": "gray-900",
+ "primary-foreground": "gray-50",
+ "ring": "gray-950",
+ "secondary": "gray-100",
+ "secondary-foreground": "gray-900"
+ }
+ },
+ "cssVars": {
+ "dark": {
+ "accent": "215 27.9% 16.9%",
+ "accent-foreground": "210 20% 98%",
+ "background": "224 71.4% 4.1%",
+ "border": "215 27.9% 16.9%",
+ "card": "224 71.4% 4.1%",
+ "card-foreground": "210 20% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "210 20% 98%",
+ "foreground": "210 20% 98%",
+ "input": "215 27.9% 16.9%",
+ "muted": "215 27.9% 16.9%",
+ "muted-foreground": "217.9 10.6% 64.9%",
+ "popover": "224 71.4% 4.1%",
+ "popover-foreground": "210 20% 98%",
+ "primary": "210 20% 98%",
+ "primary-foreground": "220.9 39.3% 11%",
+ "ring": "216 12.2% 83.9%",
+ "secondary": "215 27.9% 16.9%",
+ "secondary-foreground": "210 20% 98%"
+ },
+ "light": {
+ "accent": "220 14.3% 95.9%",
+ "accent-foreground": "220.9 39.3% 11%",
+ "background": "0 0% 100%",
+ "border": "220 13% 91%",
+ "card": "0 0% 100%",
+ "card-foreground": "224 71.4% 4.1%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "210 20% 98%",
+ "foreground": "224 71.4% 4.1%",
+ "input": "220 13% 91%",
+ "muted": "220 14.3% 95.9%",
+ "muted-foreground": "220 8.9% 46.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "224 71.4% 4.1%",
+ "primary": "220.9 39.3% 11%",
+ "primary-foreground": "210 20% 98%",
+ "ring": "224 71.4% 4.1%",
+ "secondary": "220 14.3% 95.9%",
+ "secondary-foreground": "220.9 39.3% 11%"
+ }
+ },
+ "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n ",
+ "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 224 71.4% 4.1%;\n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n --primary: 220.9 39.3% 11%;\n --primary-foreground: 210 20% 98%;\n --secondary: 220 14.3% 95.9%;\n --secondary-foreground: 220.9 39.3% 11%;\n --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n --accent: 220 14.3% 95.9%;\n --accent-foreground: 220.9 39.3% 11%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 20% 98%;\n --border: 220 13% 91%;\n --input: 220 13% 91%;\n --ring: 224 71.4% 4.1%;\n --radius: 0.5rem;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n\n .dark {\n --background: 224 71.4% 4.1%;\n --foreground: 210 20% 98%;\n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n --primary: 210 20% 98%;\n --primary-foreground: 220.9 39.3% 11%;\n --secondary: 215 27.9% 16.9%;\n --secondary-foreground: 210 20% 98%;\n --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n --accent: 215 27.9% 16.9%;\n --accent-foreground: 210 20% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 20% 98%;\n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n --ring: 216 12.2% 83.9%;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/colors/index.json b/apps/www/public/r/colors/index.json
new file mode 100644
index 0000000000..4c71741904
--- /dev/null
+++ b/apps/www/public/r/colors/index.json
@@ -0,0 +1,1999 @@
+{
+ "amber": [
+ {
+ "hex": "#fffbeb",
+ "hsl": "hsl(48,100%,96.1%)",
+ "rgb": "rgb(255,251,235)",
+ "scale": 50,
+ "rgbChannel": "255 251 235",
+ "hslChannel": "48 100% 96.1%"
+ },
+ {
+ "hex": "#fef3c7",
+ "hsl": "hsl(48,96.5%,88.8%)",
+ "rgb": "rgb(254,243,199)",
+ "scale": 100,
+ "rgbChannel": "254 243 199",
+ "hslChannel": "48 96.5% 88.8%"
+ },
+ {
+ "hex": "#fde68a",
+ "hsl": "hsl(48,96.6%,76.7%)",
+ "rgb": "rgb(253,230,138)",
+ "scale": 200,
+ "rgbChannel": "253 230 138",
+ "hslChannel": "48 96.6% 76.7%"
+ },
+ {
+ "hex": "#fcd34d",
+ "hsl": "hsl(45.9,96.7%,64.5%)",
+ "rgb": "rgb(252,211,77)",
+ "scale": 300,
+ "rgbChannel": "252 211 77",
+ "hslChannel": "45.9 96.7% 64.5%"
+ },
+ {
+ "hex": "#fbbf24",
+ "hsl": "hsl(43.3,96.4%,56.3%)",
+ "rgb": "rgb(251,191,36)",
+ "scale": 400,
+ "rgbChannel": "251 191 36",
+ "hslChannel": "43.3 96.4% 56.3%"
+ },
+ {
+ "hex": "#f59e0b",
+ "hsl": "hsl(37.7,92.1%,50.2%)",
+ "rgb": "rgb(245,158,11)",
+ "scale": 500,
+ "rgbChannel": "245 158 11",
+ "hslChannel": "37.7 92.1% 50.2%"
+ },
+ {
+ "hex": "#d97706",
+ "hsl": "hsl(32.1,94.6%,43.7%)",
+ "rgb": "rgb(217,119,6)",
+ "scale": 600,
+ "rgbChannel": "217 119 6",
+ "hslChannel": "32.1 94.6% 43.7%"
+ },
+ {
+ "hex": "#b45309",
+ "hsl": "hsl(26,90.5%,37.1%)",
+ "rgb": "rgb(180,83,9)",
+ "scale": 700,
+ "rgbChannel": "180 83 9",
+ "hslChannel": "26 90.5% 37.1%"
+ },
+ {
+ "hex": "#92400e",
+ "hsl": "hsl(22.7,82.5%,31.4%)",
+ "rgb": "rgb(146,64,14)",
+ "scale": 800,
+ "rgbChannel": "146 64 14",
+ "hslChannel": "22.7 82.5% 31.4%"
+ },
+ {
+ "hex": "#78350f",
+ "hsl": "hsl(21.7,77.8%,26.5%)",
+ "rgb": "rgb(120,53,15)",
+ "scale": 900,
+ "rgbChannel": "120 53 15",
+ "hslChannel": "21.7 77.8% 26.5%"
+ },
+ {
+ "hex": "#451a03",
+ "hsl": "hsl(20.9,91.7%,14.1%)",
+ "rgb": "rgb(69,26,3)",
+ "scale": 950,
+ "rgbChannel": "69 26 3",
+ "hslChannel": "20.9 91.7% 14.1%"
+ }
+ ],
+ "black": {
+ "hex": "#000000",
+ "hsl": "hsl(0,0%,0%)",
+ "rgb": "rgb(0,0,0)",
+ "rgbChannel": "0 0 0",
+ "hslChannel": "0 0% 0%"
+ },
+ "blue": [
+ {
+ "hex": "#eff6ff",
+ "hsl": "hsl(213.8,100%,96.9%)",
+ "rgb": "rgb(239,246,255)",
+ "scale": 50,
+ "rgbChannel": "239 246 255",
+ "hslChannel": "213.8 100% 96.9%"
+ },
+ {
+ "hex": "#dbeafe",
+ "hsl": "hsl(214.3,94.6%,92.7%)",
+ "rgb": "rgb(219,234,254)",
+ "scale": 100,
+ "rgbChannel": "219 234 254",
+ "hslChannel": "214.3 94.6% 92.7%"
+ },
+ {
+ "hex": "#bfdbfe",
+ "hsl": "hsl(213.3,96.9%,87.3%)",
+ "rgb": "rgb(191,219,254)",
+ "scale": 200,
+ "rgbChannel": "191 219 254",
+ "hslChannel": "213.3 96.9% 87.3%"
+ },
+ {
+ "hex": "#93c5fd",
+ "hsl": "hsl(211.7,96.4%,78.4%)",
+ "rgb": "rgb(147,197,253)",
+ "scale": 300,
+ "rgbChannel": "147 197 253",
+ "hslChannel": "211.7 96.4% 78.4%"
+ },
+ {
+ "hex": "#60a5fa",
+ "hsl": "hsl(213.1,93.9%,67.8%)",
+ "rgb": "rgb(96,165,250)",
+ "scale": 400,
+ "rgbChannel": "96 165 250",
+ "hslChannel": "213.1 93.9% 67.8%"
+ },
+ {
+ "hex": "#3b82f6",
+ "hsl": "hsl(217.2,91.2%,59.8%)",
+ "rgb": "rgb(59,130,246)",
+ "scale": 500,
+ "rgbChannel": "59 130 246",
+ "hslChannel": "217.2 91.2% 59.8%"
+ },
+ {
+ "hex": "#2563eb",
+ "hsl": "hsl(221.2,83.2%,53.3%)",
+ "rgb": "rgb(37,99,235)",
+ "scale": 600,
+ "rgbChannel": "37 99 235",
+ "hslChannel": "221.2 83.2% 53.3%"
+ },
+ {
+ "hex": "#1d4ed8",
+ "hsl": "hsl(224.3,76.3%,48%)",
+ "rgb": "rgb(29,78,216)",
+ "scale": 700,
+ "rgbChannel": "29 78 216",
+ "hslChannel": "224.3 76.3% 48%"
+ },
+ {
+ "hex": "#1e40af",
+ "hsl": "hsl(225.9,70.7%,40.2%)",
+ "rgb": "rgb(30,64,175)",
+ "scale": 800,
+ "rgbChannel": "30 64 175",
+ "hslChannel": "225.9 70.7% 40.2%"
+ },
+ {
+ "hex": "#1e3a8a",
+ "hsl": "hsl(224.4,64.3%,32.9%)",
+ "rgb": "rgb(30,58,138)",
+ "scale": 900,
+ "rgbChannel": "30 58 138",
+ "hslChannel": "224.4 64.3% 32.9%"
+ },
+ {
+ "hex": "#172554",
+ "hsl": "hsl(226.2,57%,21%)",
+ "rgb": "rgb(23,37,84)",
+ "scale": 950,
+ "rgbChannel": "23 37 84",
+ "hslChannel": "226.2 57% 21%"
+ }
+ ],
+ "current": "currentColor",
+ "cyan": [
+ {
+ "hex": "#ecfeff",
+ "hsl": "hsl(183.2,100%,96.3%)",
+ "rgb": "rgb(236,254,255)",
+ "scale": 50,
+ "rgbChannel": "236 254 255",
+ "hslChannel": "183.2 100% 96.3%"
+ },
+ {
+ "hex": "#cffafe",
+ "hsl": "hsl(185.1,95.9%,90.4%)",
+ "rgb": "rgb(207,250,254)",
+ "scale": 100,
+ "rgbChannel": "207 250 254",
+ "hslChannel": "185.1 95.9% 90.4%"
+ },
+ {
+ "hex": "#a5f3fc",
+ "hsl": "hsl(186.2,93.5%,81.8%)",
+ "rgb": "rgb(165,243,252)",
+ "scale": 200,
+ "rgbChannel": "165 243 252",
+ "hslChannel": "186.2 93.5% 81.8%"
+ },
+ {
+ "hex": "#67e8f9",
+ "hsl": "hsl(187,92.4%,69%)",
+ "rgb": "rgb(103,232,249)",
+ "scale": 300,
+ "rgbChannel": "103 232 249",
+ "hslChannel": "187 92.4% 69%"
+ },
+ {
+ "hex": "#22d3ee",
+ "hsl": "hsl(187.9,85.7%,53.3%)",
+ "rgb": "rgb(34,211,238)",
+ "scale": 400,
+ "rgbChannel": "34 211 238",
+ "hslChannel": "187.9 85.7% 53.3%"
+ },
+ {
+ "hex": "#06b6d4",
+ "hsl": "hsl(188.7,94.5%,42.7%)",
+ "rgb": "rgb(6,182,212)",
+ "scale": 500,
+ "rgbChannel": "6 182 212",
+ "hslChannel": "188.7 94.5% 42.7%"
+ },
+ {
+ "hex": "#0891b2",
+ "hsl": "hsl(191.6,91.4%,36.5%)",
+ "rgb": "rgb(8,145,178)",
+ "scale": 600,
+ "rgbChannel": "8 145 178",
+ "hslChannel": "191.6 91.4% 36.5%"
+ },
+ {
+ "hex": "#0e7490",
+ "hsl": "hsl(192.9,82.3%,31%)",
+ "rgb": "rgb(14,116,144)",
+ "scale": 700,
+ "rgbChannel": "14 116 144",
+ "hslChannel": "192.9 82.3% 31%"
+ },
+ {
+ "hex": "#155e75",
+ "hsl": "hsl(194.4,69.6%,27.1%)",
+ "rgb": "rgb(21,94,117)",
+ "scale": 800,
+ "rgbChannel": "21 94 117",
+ "hslChannel": "194.4 69.6% 27.1%"
+ },
+ {
+ "hex": "#164e63",
+ "hsl": "hsl(196.4,63.6%,23.7%)",
+ "rgb": "rgb(22,78,99)",
+ "scale": 900,
+ "rgbChannel": "22 78 99",
+ "hslChannel": "196.4 63.6% 23.7%"
+ },
+ {
+ "hex": "#083344",
+ "hsl": "hsl(197,78.9%,14.9%)",
+ "rgb": "rgb(8,51,68)",
+ "scale": 950,
+ "rgbChannel": "8 51 68",
+ "hslChannel": "197 78.9% 14.9%"
+ }
+ ],
+ "emerald": [
+ {
+ "hex": "#ecfdf5",
+ "hsl": "hsl(151.8,81%,95.9%)",
+ "rgb": "rgb(236,253,245)",
+ "scale": 50,
+ "rgbChannel": "236 253 245",
+ "hslChannel": "151.8 81% 95.9%"
+ },
+ {
+ "hex": "#d1fae5",
+ "hsl": "hsl(149.3,80.4%,90%)",
+ "rgb": "rgb(209,250,229)",
+ "scale": 100,
+ "rgbChannel": "209 250 229",
+ "hslChannel": "149.3 80.4% 90%"
+ },
+ {
+ "hex": "#a7f3d0",
+ "hsl": "hsl(152.4,76%,80.4%)",
+ "rgb": "rgb(167,243,208)",
+ "scale": 200,
+ "rgbChannel": "167 243 208",
+ "hslChannel": "152.4 76% 80.4%"
+ },
+ {
+ "hex": "#6ee7b7",
+ "hsl": "hsl(156.2,71.6%,66.9%)",
+ "rgb": "rgb(110,231,183)",
+ "scale": 300,
+ "rgbChannel": "110 231 183",
+ "hslChannel": "156.2 71.6% 66.9%"
+ },
+ {
+ "hex": "#34d399",
+ "hsl": "hsl(158.1,64.4%,51.6%)",
+ "rgb": "rgb(52,211,153)",
+ "scale": 400,
+ "rgbChannel": "52 211 153",
+ "hslChannel": "158.1 64.4% 51.6%"
+ },
+ {
+ "hex": "#10b981",
+ "hsl": "hsl(160.1,84.1%,39.4%)",
+ "rgb": "rgb(16,185,129)",
+ "scale": 500,
+ "rgbChannel": "16 185 129",
+ "hslChannel": "160.1 84.1% 39.4%"
+ },
+ {
+ "hex": "#059669",
+ "hsl": "hsl(161.4,93.5%,30.4%)",
+ "rgb": "rgb(5,150,105)",
+ "scale": 600,
+ "rgbChannel": "5 150 105",
+ "hslChannel": "161.4 93.5% 30.4%"
+ },
+ {
+ "hex": "#047857",
+ "hsl": "hsl(162.9,93.5%,24.3%)",
+ "rgb": "rgb(4,120,87)",
+ "scale": 700,
+ "rgbChannel": "4 120 87",
+ "hslChannel": "162.9 93.5% 24.3%"
+ },
+ {
+ "hex": "#065f46",
+ "hsl": "hsl(163.1,88.1%,19.8%)",
+ "rgb": "rgb(6,95,70)",
+ "scale": 800,
+ "rgbChannel": "6 95 70",
+ "hslChannel": "163.1 88.1% 19.8%"
+ },
+ {
+ "hex": "#064e3b",
+ "hsl": "hsl(164.2,85.7%,16.5%)",
+ "rgb": "rgb(6,78,59)",
+ "scale": 900,
+ "rgbChannel": "6 78 59",
+ "hslChannel": "164.2 85.7% 16.5%"
+ },
+ {
+ "hex": "#022c22",
+ "hsl": "hsl(165.7,91.3%,9%)",
+ "rgb": "rgb(2,44,34)",
+ "scale": 950,
+ "rgbChannel": "2 44 34",
+ "hslChannel": "165.7 91.3% 9%"
+ }
+ ],
+ "fuchsia": [
+ {
+ "hex": "#fdf4ff",
+ "hsl": "hsl(289.1,100%,97.8%)",
+ "rgb": "rgb(253,244,255)",
+ "scale": 50,
+ "rgbChannel": "253 244 255",
+ "hslChannel": "289.1 100% 97.8%"
+ },
+ {
+ "hex": "#fae8ff",
+ "hsl": "hsl(287,100%,95.5%)",
+ "rgb": "rgb(250,232,255)",
+ "scale": 100,
+ "rgbChannel": "250 232 255",
+ "hslChannel": "287 100% 95.5%"
+ },
+ {
+ "hex": "#f5d0fe",
+ "hsl": "hsl(288.3,95.8%,90.6%)",
+ "rgb": "rgb(245,208,254)",
+ "scale": 200,
+ "rgbChannel": "245 208 254",
+ "hslChannel": "288.3 95.8% 90.6%"
+ },
+ {
+ "hex": "#f0abfc",
+ "hsl": "hsl(291.1,93.1%,82.9%)",
+ "rgb": "rgb(240,171,252)",
+ "scale": 300,
+ "rgbChannel": "240 171 252",
+ "hslChannel": "291.1 93.1% 82.9%"
+ },
+ {
+ "hex": "#e879f9",
+ "hsl": "hsl(292,91.4%,72.5%)",
+ "rgb": "rgb(232,121,249)",
+ "scale": 400,
+ "rgbChannel": "232 121 249",
+ "hslChannel": "292 91.4% 72.5%"
+ },
+ {
+ "hex": "#d946ef",
+ "hsl": "hsl(292.2,84.1%,60.6%)",
+ "rgb": "rgb(217,70,239)",
+ "scale": 500,
+ "rgbChannel": "217 70 239",
+ "hslChannel": "292.2 84.1% 60.6%"
+ },
+ {
+ "hex": "#c026d3",
+ "hsl": "hsl(293.4,69.5%,48.8%)",
+ "rgb": "rgb(192,38,211)",
+ "scale": 600,
+ "rgbChannel": "192 38 211",
+ "hslChannel": "293.4 69.5% 48.8%"
+ },
+ {
+ "hex": "#a21caf",
+ "hsl": "hsl(294.7,72.4%,39.8%)",
+ "rgb": "rgb(162,28,175)",
+ "scale": 700,
+ "rgbChannel": "162 28 175",
+ "hslChannel": "294.7 72.4% 39.8%"
+ },
+ {
+ "hex": "#86198f",
+ "hsl": "hsl(295.4,70.2%,32.9%)",
+ "rgb": "rgb(134,25,143)",
+ "scale": 800,
+ "rgbChannel": "134 25 143",
+ "hslChannel": "295.4 70.2% 32.9%"
+ },
+ {
+ "hex": "#701a75",
+ "hsl": "hsl(296.7,63.6%,28%)",
+ "rgb": "rgb(112,26,117)",
+ "scale": 900,
+ "rgbChannel": "112 26 117",
+ "hslChannel": "296.7 63.6% 28%"
+ },
+ {
+ "hex": "#4a044e",
+ "hsl": "hsl(296.8,90.2%,16.1%)",
+ "rgb": "rgb(74,4,78)",
+ "scale": 950,
+ "rgbChannel": "74 4 78",
+ "hslChannel": "296.8 90.2% 16.1%"
+ }
+ ],
+ "gray": [
+ {
+ "hex": "#f9fafb",
+ "hsl": "hsl(210,20%,98%)",
+ "rgb": "rgb(249,250,251)",
+ "scale": 50,
+ "rgbChannel": "249 250 251",
+ "hslChannel": "210 20% 98%"
+ },
+ {
+ "hex": "#f3f4f6",
+ "hsl": "hsl(220,14.3%,95.9%)",
+ "rgb": "rgb(243,244,246)",
+ "scale": 100,
+ "rgbChannel": "243 244 246",
+ "hslChannel": "220 14.3% 95.9%"
+ },
+ {
+ "hex": "#e5e7eb",
+ "hsl": "hsl(220,13%,91%)",
+ "rgb": "rgb(229,231,235)",
+ "scale": 200,
+ "rgbChannel": "229 231 235",
+ "hslChannel": "220 13% 91%"
+ },
+ {
+ "hex": "#d1d5db",
+ "hsl": "hsl(216,12.2%,83.9%)",
+ "rgb": "rgb(209,213,219)",
+ "scale": 300,
+ "rgbChannel": "209 213 219",
+ "hslChannel": "216 12.2% 83.9%"
+ },
+ {
+ "hex": "#9ca3af",
+ "hsl": "hsl(217.9,10.6%,64.9%)",
+ "rgb": "rgb(156,163,175)",
+ "scale": 400,
+ "rgbChannel": "156 163 175",
+ "hslChannel": "217.9 10.6% 64.9%"
+ },
+ {
+ "hex": "#6b7280",
+ "hsl": "hsl(220,8.9%,46.1%)",
+ "rgb": "rgb(107,114,128)",
+ "scale": 500,
+ "rgbChannel": "107 114 128",
+ "hslChannel": "220 8.9% 46.1%"
+ },
+ {
+ "hex": "#4b5563",
+ "hsl": "hsl(215,13.8%,34.1%)",
+ "rgb": "rgb(75,85,99)",
+ "scale": 600,
+ "rgbChannel": "75 85 99",
+ "hslChannel": "215 13.8% 34.1%"
+ },
+ {
+ "hex": "#374151",
+ "hsl": "hsl(216.9,19.1%,26.7%)",
+ "rgb": "rgb(55,65,81)",
+ "scale": 700,
+ "rgbChannel": "55 65 81",
+ "hslChannel": "216.9 19.1% 26.7%"
+ },
+ {
+ "hex": "#1f2937",
+ "hsl": "hsl(215,27.9%,16.9%)",
+ "rgb": "rgb(31,41,55)",
+ "scale": 800,
+ "rgbChannel": "31 41 55",
+ "hslChannel": "215 27.9% 16.9%"
+ },
+ {
+ "hex": "#111827",
+ "hsl": "hsl(220.9,39.3%,11%)",
+ "rgb": "rgb(17,24,39)",
+ "scale": 900,
+ "rgbChannel": "17 24 39",
+ "hslChannel": "220.9 39.3% 11%"
+ },
+ {
+ "hex": "#030712",
+ "hsl": "hsl(224,71.4%,4.1%)",
+ "rgb": "rgb(3,7,18)",
+ "scale": 950,
+ "rgbChannel": "3 7 18",
+ "hslChannel": "224 71.4% 4.1%"
+ }
+ ],
+ "green": [
+ {
+ "hex": "#f0fdf4",
+ "hsl": "hsl(138.5,76.5%,96.7%)",
+ "rgb": "rgb(240,253,244)",
+ "scale": 50,
+ "rgbChannel": "240 253 244",
+ "hslChannel": "138.5 76.5% 96.7%"
+ },
+ {
+ "hex": "#dcfce7",
+ "hsl": "hsl(140.6,84.2%,92.5%)",
+ "rgb": "rgb(220,252,231)",
+ "scale": 100,
+ "rgbChannel": "220 252 231",
+ "hslChannel": "140.6 84.2% 92.5%"
+ },
+ {
+ "hex": "#bbf7d0",
+ "hsl": "hsl(141,78.9%,85.1%)",
+ "rgb": "rgb(187,247,208)",
+ "scale": 200,
+ "rgbChannel": "187 247 208",
+ "hslChannel": "141 78.9% 85.1%"
+ },
+ {
+ "hex": "#86efac",
+ "hsl": "hsl(141.7,76.6%,73.1%)",
+ "rgb": "rgb(134,239,172)",
+ "scale": 300,
+ "rgbChannel": "134 239 172",
+ "hslChannel": "141.7 76.6% 73.1%"
+ },
+ {
+ "hex": "#4ade80",
+ "hsl": "hsl(141.9,69.2%,58%)",
+ "rgb": "rgb(74,222,128)",
+ "scale": 400,
+ "rgbChannel": "74 222 128",
+ "hslChannel": "141.9 69.2% 58%"
+ },
+ {
+ "hex": "#22c55e",
+ "hsl": "hsl(142.1,70.6%,45.3%)",
+ "rgb": "rgb(34,197,94)",
+ "scale": 500,
+ "rgbChannel": "34 197 94",
+ "hslChannel": "142.1 70.6% 45.3%"
+ },
+ {
+ "hex": "#16a34a",
+ "hsl": "hsl(142.1,76.2%,36.3%)",
+ "rgb": "rgb(22,163,74)",
+ "scale": 600,
+ "rgbChannel": "22 163 74",
+ "hslChannel": "142.1 76.2% 36.3%"
+ },
+ {
+ "hex": "#15803d",
+ "hsl": "hsl(142.4,71.8%,29.2%)",
+ "rgb": "rgb(21,128,61)",
+ "scale": 700,
+ "rgbChannel": "21 128 61",
+ "hslChannel": "142.4 71.8% 29.2%"
+ },
+ {
+ "hex": "#166534",
+ "hsl": "hsl(142.8,64.2%,24.1%)",
+ "rgb": "rgb(22,101,52)",
+ "scale": 800,
+ "rgbChannel": "22 101 52",
+ "hslChannel": "142.8 64.2% 24.1%"
+ },
+ {
+ "hex": "#14532d",
+ "hsl": "hsl(143.8,61.2%,20.2%)",
+ "rgb": "rgb(20,83,45)",
+ "scale": 900,
+ "rgbChannel": "20 83 45",
+ "hslChannel": "143.8 61.2% 20.2%"
+ },
+ {
+ "hex": "#052e16",
+ "hsl": "hsl(144.9,80.4%,10%)",
+ "rgb": "rgb(5,46,22)",
+ "scale": 950,
+ "rgbChannel": "5 46 22",
+ "hslChannel": "144.9 80.4% 10%"
+ }
+ ],
+ "indigo": [
+ {
+ "hex": "#eef2ff",
+ "hsl": "hsl(225.9,100%,96.7%)",
+ "rgb": "rgb(238,242,255)",
+ "scale": 50,
+ "rgbChannel": "238 242 255",
+ "hslChannel": "225.9 100% 96.7%"
+ },
+ {
+ "hex": "#e0e7ff",
+ "hsl": "hsl(226.5,100%,93.9%)",
+ "rgb": "rgb(224,231,255)",
+ "scale": 100,
+ "rgbChannel": "224 231 255",
+ "hslChannel": "226.5 100% 93.9%"
+ },
+ {
+ "hex": "#c7d2fe",
+ "hsl": "hsl(228,96.5%,88.8%)",
+ "rgb": "rgb(199,210,254)",
+ "scale": 200,
+ "rgbChannel": "199 210 254",
+ "hslChannel": "228 96.5% 88.8%"
+ },
+ {
+ "hex": "#a5b4fc",
+ "hsl": "hsl(229.7,93.5%,81.8%)",
+ "rgb": "rgb(165,180,252)",
+ "scale": 300,
+ "rgbChannel": "165 180 252",
+ "hslChannel": "229.7 93.5% 81.8%"
+ },
+ {
+ "hex": "#818cf8",
+ "hsl": "hsl(234.5,89.5%,73.9%)",
+ "rgb": "rgb(129,140,248)",
+ "scale": 400,
+ "rgbChannel": "129 140 248",
+ "hslChannel": "234.5 89.5% 73.9%"
+ },
+ {
+ "hex": "#6366f1",
+ "hsl": "hsl(238.7,83.5%,66.7%)",
+ "rgb": "rgb(99,102,241)",
+ "scale": 500,
+ "rgbChannel": "99 102 241",
+ "hslChannel": "238.7 83.5% 66.7%"
+ },
+ {
+ "hex": "#4f46e5",
+ "hsl": "hsl(243.4,75.4%,58.6%)",
+ "rgb": "rgb(79,70,229)",
+ "scale": 600,
+ "rgbChannel": "79 70 229",
+ "hslChannel": "243.4 75.4% 58.6%"
+ },
+ {
+ "hex": "#4338ca",
+ "hsl": "hsl(244.5,57.9%,50.6%)",
+ "rgb": "rgb(67,56,202)",
+ "scale": 700,
+ "rgbChannel": "67 56 202",
+ "hslChannel": "244.5 57.9% 50.6%"
+ },
+ {
+ "hex": "#3730a3",
+ "hsl": "hsl(243.7,54.5%,41.4%)",
+ "rgb": "rgb(55,48,163)",
+ "scale": 800,
+ "rgbChannel": "55 48 163",
+ "hslChannel": "243.7 54.5% 41.4%"
+ },
+ {
+ "hex": "#312e81",
+ "hsl": "hsl(242.2,47.4%,34.3%)",
+ "rgb": "rgb(49,46,129)",
+ "scale": 900,
+ "rgbChannel": "49 46 129",
+ "hslChannel": "242.2 47.4% 34.3%"
+ },
+ {
+ "hex": "#1e1b4b",
+ "hsl": "hsl(243.8,47.1%,20%)",
+ "rgb": "rgb(30,27,75)",
+ "scale": 950,
+ "rgbChannel": "30 27 75",
+ "hslChannel": "243.8 47.1% 20%"
+ }
+ ],
+ "inherit": "inherit",
+ "lime": [
+ {
+ "hex": "#f7fee7",
+ "hsl": "hsl(78.3,92%,95.1%)",
+ "rgb": "rgb(247,254,231)",
+ "scale": 50,
+ "rgbChannel": "247 254 231",
+ "hslChannel": "78.3 92% 95.1%"
+ },
+ {
+ "hex": "#ecfccb",
+ "hsl": "hsl(79.6,89.1%,89.2%)",
+ "rgb": "rgb(236,252,203)",
+ "scale": 100,
+ "rgbChannel": "236 252 203",
+ "hslChannel": "79.6 89.1% 89.2%"
+ },
+ {
+ "hex": "#d9f99d",
+ "hsl": "hsl(80.9,88.5%,79.6%)",
+ "rgb": "rgb(217,249,157)",
+ "scale": 200,
+ "rgbChannel": "217 249 157",
+ "hslChannel": "80.9 88.5% 79.6%"
+ },
+ {
+ "hex": "#bef264",
+ "hsl": "hsl(82,84.5%,67.1%)",
+ "rgb": "rgb(190,242,100)",
+ "scale": 300,
+ "rgbChannel": "190 242 100",
+ "hslChannel": "82 84.5% 67.1%"
+ },
+ {
+ "hex": "#a3e635",
+ "hsl": "hsl(82.7,78%,55.5%)",
+ "rgb": "rgb(163,230,53)",
+ "scale": 400,
+ "rgbChannel": "163 230 53",
+ "hslChannel": "82.7 78% 55.5%"
+ },
+ {
+ "hex": "#84cc16",
+ "hsl": "hsl(83.7,80.5%,44.3%)",
+ "rgb": "rgb(132,204,22)",
+ "scale": 500,
+ "rgbChannel": "132 204 22",
+ "hslChannel": "83.7 80.5% 44.3%"
+ },
+ {
+ "hex": "#65a30d",
+ "hsl": "hsl(84.8,85.2%,34.5%)",
+ "rgb": "rgb(101,163,13)",
+ "scale": 600,
+ "rgbChannel": "101 163 13",
+ "hslChannel": "84.8 85.2% 34.5%"
+ },
+ {
+ "hex": "#4d7c0f",
+ "hsl": "hsl(85.9,78.4%,27.3%)",
+ "rgb": "rgb(77,124,15)",
+ "scale": 700,
+ "rgbChannel": "77 124 15",
+ "hslChannel": "85.9 78.4% 27.3%"
+ },
+ {
+ "hex": "#3f6212",
+ "hsl": "hsl(86.3,69%,22.7%)",
+ "rgb": "rgb(63,98,18)",
+ "scale": 800,
+ "rgbChannel": "63 98 18",
+ "hslChannel": "86.3 69% 22.7%"
+ },
+ {
+ "hex": "#365314",
+ "hsl": "hsl(87.6,61.2%,20.2%)",
+ "rgb": "rgb(54,83,20)",
+ "scale": 900,
+ "rgbChannel": "54 83 20",
+ "hslChannel": "87.6 61.2% 20.2%"
+ },
+ {
+ "hex": "#1a2e05",
+ "hsl": "hsl(89.3,80.4%,10%)",
+ "rgb": "rgb(26,46,5)",
+ "scale": 950,
+ "rgbChannel": "26 46 5",
+ "hslChannel": "89.3 80.4% 10%"
+ }
+ ],
+ "neutral": [
+ {
+ "hex": "#fafafa",
+ "hsl": "hsl(0,0%,98%)",
+ "rgb": "rgb(250,250,250)",
+ "scale": 50,
+ "rgbChannel": "250 250 250",
+ "hslChannel": "0 0% 98%"
+ },
+ {
+ "hex": "#f5f5f5",
+ "hsl": "hsl(0,0%,96.1%)",
+ "rgb": "rgb(245,245,245)",
+ "scale": 100,
+ "rgbChannel": "245 245 245",
+ "hslChannel": "0 0% 96.1%"
+ },
+ {
+ "hex": "#e5e5e5",
+ "hsl": "hsl(0,0%,89.8%)",
+ "rgb": "rgb(229,229,229)",
+ "scale": 200,
+ "rgbChannel": "229 229 229",
+ "hslChannel": "0 0% 89.8%"
+ },
+ {
+ "hex": "#d4d4d4",
+ "hsl": "hsl(0,0%,83.1%)",
+ "rgb": "rgb(212,212,212)",
+ "scale": 300,
+ "rgbChannel": "212 212 212",
+ "hslChannel": "0 0% 83.1%"
+ },
+ {
+ "hex": "#a3a3a3",
+ "hsl": "hsl(0,0%,63.9%)",
+ "rgb": "rgb(163,163,163)",
+ "scale": 400,
+ "rgbChannel": "163 163 163",
+ "hslChannel": "0 0% 63.9%"
+ },
+ {
+ "hex": "#737373",
+ "hsl": "hsl(0,0%,45.1%)",
+ "rgb": "rgb(115,115,115)",
+ "scale": 500,
+ "rgbChannel": "115 115 115",
+ "hslChannel": "0 0% 45.1%"
+ },
+ {
+ "hex": "#525252",
+ "hsl": "hsl(0,0%,32.2%)",
+ "rgb": "rgb(82,82,82)",
+ "scale": 600,
+ "rgbChannel": "82 82 82",
+ "hslChannel": "0 0% 32.2%"
+ },
+ {
+ "hex": "#404040",
+ "hsl": "hsl(0,0%,25.1%)",
+ "rgb": "rgb(64,64,64)",
+ "scale": 700,
+ "rgbChannel": "64 64 64",
+ "hslChannel": "0 0% 25.1%"
+ },
+ {
+ "hex": "#262626",
+ "hsl": "hsl(0,0%,14.9%)",
+ "rgb": "rgb(38,38,38)",
+ "scale": 800,
+ "rgbChannel": "38 38 38",
+ "hslChannel": "0 0% 14.9%"
+ },
+ {
+ "hex": "#171717",
+ "hsl": "hsl(0,0%,9%)",
+ "rgb": "rgb(23,23,23)",
+ "scale": 900,
+ "rgbChannel": "23 23 23",
+ "hslChannel": "0 0% 9%"
+ },
+ {
+ "hex": "#0a0a0a",
+ "hsl": "hsl(0,0%,3.9%)",
+ "rgb": "rgb(10,10,10)",
+ "scale": 950,
+ "rgbChannel": "10 10 10",
+ "hslChannel": "0 0% 3.9%"
+ }
+ ],
+ "orange": [
+ {
+ "hex": "#fff7ed",
+ "hsl": "hsl(33.3,100%,96.5%)",
+ "rgb": "rgb(255,247,237)",
+ "scale": 50,
+ "rgbChannel": "255 247 237",
+ "hslChannel": "33.3 100% 96.5%"
+ },
+ {
+ "hex": "#ffedd5",
+ "hsl": "hsl(34.3,100%,91.8%)",
+ "rgb": "rgb(255,237,213)",
+ "scale": 100,
+ "rgbChannel": "255 237 213",
+ "hslChannel": "34.3 100% 91.8%"
+ },
+ {
+ "hex": "#fed7aa",
+ "hsl": "hsl(32.1,97.7%,83.1%)",
+ "rgb": "rgb(254,215,170)",
+ "scale": 200,
+ "rgbChannel": "254 215 170",
+ "hslChannel": "32.1 97.7% 83.1%"
+ },
+ {
+ "hex": "#fdba74",
+ "hsl": "hsl(30.7,97.2%,72.4%)",
+ "rgb": "rgb(253,186,116)",
+ "scale": 300,
+ "rgbChannel": "253 186 116",
+ "hslChannel": "30.7 97.2% 72.4%"
+ },
+ {
+ "hex": "#fb923c",
+ "hsl": "hsl(27,96%,61%)",
+ "rgb": "rgb(251,146,60)",
+ "scale": 400,
+ "rgbChannel": "251 146 60",
+ "hslChannel": "27 96% 61%"
+ },
+ {
+ "hex": "#f97316",
+ "hsl": "hsl(24.6,95%,53.1%)",
+ "rgb": "rgb(249,115,22)",
+ "scale": 500,
+ "rgbChannel": "249 115 22",
+ "hslChannel": "24.6 95% 53.1%"
+ },
+ {
+ "hex": "#ea580c",
+ "hsl": "hsl(20.5,90.2%,48.2%)",
+ "rgb": "rgb(234,88,12)",
+ "scale": 600,
+ "rgbChannel": "234 88 12",
+ "hslChannel": "20.5 90.2% 48.2%"
+ },
+ {
+ "hex": "#c2410c",
+ "hsl": "hsl(17.5,88.3%,40.4%)",
+ "rgb": "rgb(194,65,12)",
+ "scale": 700,
+ "rgbChannel": "194 65 12",
+ "hslChannel": "17.5 88.3% 40.4%"
+ },
+ {
+ "hex": "#9a3412",
+ "hsl": "hsl(15,79.1%,33.7%)",
+ "rgb": "rgb(154,52,18)",
+ "scale": 800,
+ "rgbChannel": "154 52 18",
+ "hslChannel": "15 79.1% 33.7%"
+ },
+ {
+ "hex": "#7c2d12",
+ "hsl": "hsl(15.3,74.6%,27.8%)",
+ "rgb": "rgb(124,45,18)",
+ "scale": 900,
+ "rgbChannel": "124 45 18",
+ "hslChannel": "15.3 74.6% 27.8%"
+ },
+ {
+ "hex": "#431407",
+ "hsl": "hsl(13,81.1%,14.5%)",
+ "rgb": "rgb(67,20,7)",
+ "scale": 950,
+ "rgbChannel": "67 20 7",
+ "hslChannel": "13 81.1% 14.5%"
+ }
+ ],
+ "pink": [
+ {
+ "hex": "#fdf2f8",
+ "hsl": "hsl(327.3,73.3%,97.1%)",
+ "rgb": "rgb(253,242,248)",
+ "scale": 50,
+ "rgbChannel": "253 242 248",
+ "hslChannel": "327.3 73.3% 97.1%"
+ },
+ {
+ "hex": "#fce7f3",
+ "hsl": "hsl(325.7,77.8%,94.7%)",
+ "rgb": "rgb(252,231,243)",
+ "scale": 100,
+ "rgbChannel": "252 231 243",
+ "hslChannel": "325.7 77.8% 94.7%"
+ },
+ {
+ "hex": "#fbcfe8",
+ "hsl": "hsl(325.9,84.6%,89.8%)",
+ "rgb": "rgb(251,207,232)",
+ "scale": 200,
+ "rgbChannel": "251 207 232",
+ "hslChannel": "325.9 84.6% 89.8%"
+ },
+ {
+ "hex": "#f9a8d4",
+ "hsl": "hsl(327.4,87.1%,81.8%)",
+ "rgb": "rgb(249,168,212)",
+ "scale": 300,
+ "rgbChannel": "249 168 212",
+ "hslChannel": "327.4 87.1% 81.8%"
+ },
+ {
+ "hex": "#f472b6",
+ "hsl": "hsl(328.6,85.5%,70.2%)",
+ "rgb": "rgb(244,114,182)",
+ "scale": 400,
+ "rgbChannel": "244 114 182",
+ "hslChannel": "328.6 85.5% 70.2%"
+ },
+ {
+ "hex": "#ec4899",
+ "hsl": "hsl(330.4,81.2%,60.4%)",
+ "rgb": "rgb(236,72,153)",
+ "scale": 500,
+ "rgbChannel": "236 72 153",
+ "hslChannel": "330.4 81.2% 60.4%"
+ },
+ {
+ "hex": "#db2777",
+ "hsl": "hsl(333.3,71.4%,50.6%)",
+ "rgb": "rgb(219,39,119)",
+ "scale": 600,
+ "rgbChannel": "219 39 119",
+ "hslChannel": "333.3 71.4% 50.6%"
+ },
+ {
+ "hex": "#be185d",
+ "hsl": "hsl(335.1,77.6%,42%)",
+ "rgb": "rgb(190,24,93)",
+ "scale": 700,
+ "rgbChannel": "190 24 93",
+ "hslChannel": "335.1 77.6% 42%"
+ },
+ {
+ "hex": "#9d174d",
+ "hsl": "hsl(335.8,74.4%,35.3%)",
+ "rgb": "rgb(157,23,77)",
+ "scale": 800,
+ "rgbChannel": "157 23 77",
+ "hslChannel": "335.8 74.4% 35.3%"
+ },
+ {
+ "hex": "#831843",
+ "hsl": "hsl(335.9,69%,30.4%)",
+ "rgb": "rgb(131,24,67)",
+ "scale": 900,
+ "rgbChannel": "131 24 67",
+ "hslChannel": "335.9 69% 30.4%"
+ },
+ {
+ "hex": "#500724",
+ "hsl": "hsl(336.2,83.9%,17.1%)",
+ "rgb": "rgb(80,7,36)",
+ "scale": 950,
+ "rgbChannel": "80 7 36",
+ "hslChannel": "336.2 83.9% 17.1%"
+ }
+ ],
+ "purple": [
+ {
+ "hex": "#faf5ff",
+ "hsl": "hsl(270,100%,98%)",
+ "rgb": "rgb(250,245,255)",
+ "scale": 50,
+ "rgbChannel": "250 245 255",
+ "hslChannel": "270 100% 98%"
+ },
+ {
+ "hex": "#f3e8ff",
+ "hsl": "hsl(268.7,100%,95.5%)",
+ "rgb": "rgb(243,232,255)",
+ "scale": 100,
+ "rgbChannel": "243 232 255",
+ "hslChannel": "268.7 100% 95.5%"
+ },
+ {
+ "hex": "#e9d5ff",
+ "hsl": "hsl(268.6,100%,91.8%)",
+ "rgb": "rgb(233,213,255)",
+ "scale": 200,
+ "rgbChannel": "233 213 255",
+ "hslChannel": "268.6 100% 91.8%"
+ },
+ {
+ "hex": "#d8b4fe",
+ "hsl": "hsl(269.2,97.4%,85.1%)",
+ "rgb": "rgb(216,180,254)",
+ "scale": 300,
+ "rgbChannel": "216 180 254",
+ "hslChannel": "269.2 97.4% 85.1%"
+ },
+ {
+ "hex": "#c084fc",
+ "hsl": "hsl(270,95.2%,75.3%)",
+ "rgb": "rgb(192,132,252)",
+ "scale": 400,
+ "rgbChannel": "192 132 252",
+ "hslChannel": "270 95.2% 75.3%"
+ },
+ {
+ "hex": "#a855f7",
+ "hsl": "hsl(270.7,91%,65.1%)",
+ "rgb": "rgb(168,85,247)",
+ "scale": 500,
+ "rgbChannel": "168 85 247",
+ "hslChannel": "270.7 91% 65.1%"
+ },
+ {
+ "hex": "#9333ea",
+ "hsl": "hsl(271.5,81.3%,55.9%)",
+ "rgb": "rgb(147,51,234)",
+ "scale": 600,
+ "rgbChannel": "147 51 234",
+ "hslChannel": "271.5 81.3% 55.9%"
+ },
+ {
+ "hex": "#7e22ce",
+ "hsl": "hsl(272.1,71.7%,47.1%)",
+ "rgb": "rgb(126,34,206)",
+ "scale": 700,
+ "rgbChannel": "126 34 206",
+ "hslChannel": "272.1 71.7% 47.1%"
+ },
+ {
+ "hex": "#6b21a8",
+ "hsl": "hsl(272.9,67.2%,39.4%)",
+ "rgb": "rgb(107,33,168)",
+ "scale": 800,
+ "rgbChannel": "107 33 168",
+ "hslChannel": "272.9 67.2% 39.4%"
+ },
+ {
+ "hex": "#581c87",
+ "hsl": "hsl(273.6,65.6%,32%)",
+ "rgb": "rgb(88,28,135)",
+ "scale": 900,
+ "rgbChannel": "88 28 135",
+ "hslChannel": "273.6 65.6% 32%"
+ },
+ {
+ "hex": "#3b0764",
+ "hsl": "hsl(273.5,86.9%,21%)",
+ "rgb": "rgb(59,7,100)",
+ "scale": 950,
+ "rgbChannel": "59 7 100",
+ "hslChannel": "273.5 86.9% 21%"
+ }
+ ],
+ "red": [
+ {
+ "hex": "#fef2f2",
+ "hsl": "hsl(0,85.7%,97.3%)",
+ "rgb": "rgb(254,242,242)",
+ "scale": 50,
+ "rgbChannel": "254 242 242",
+ "hslChannel": "0 85.7% 97.3%"
+ },
+ {
+ "hex": "#fee2e2",
+ "hsl": "hsl(0,93.3%,94.1%)",
+ "rgb": "rgb(254,226,226)",
+ "scale": 100,
+ "rgbChannel": "254 226 226",
+ "hslChannel": "0 93.3% 94.1%"
+ },
+ {
+ "hex": "#fecaca",
+ "hsl": "hsl(0,96.3%,89.4%)",
+ "rgb": "rgb(254,202,202)",
+ "scale": 200,
+ "rgbChannel": "254 202 202",
+ "hslChannel": "0 96.3% 89.4%"
+ },
+ {
+ "hex": "#fca5a5",
+ "hsl": "hsl(0,93.5%,81.8%)",
+ "rgb": "rgb(252,165,165)",
+ "scale": 300,
+ "rgbChannel": "252 165 165",
+ "hslChannel": "0 93.5% 81.8%"
+ },
+ {
+ "hex": "#f87171",
+ "hsl": "hsl(0,90.6%,70.8%)",
+ "rgb": "rgb(248,113,113)",
+ "scale": 400,
+ "rgbChannel": "248 113 113",
+ "hslChannel": "0 90.6% 70.8%"
+ },
+ {
+ "hex": "#ef4444",
+ "hsl": "hsl(0,84.2%,60.2%)",
+ "rgb": "rgb(239,68,68)",
+ "scale": 500,
+ "rgbChannel": "239 68 68",
+ "hslChannel": "0 84.2% 60.2%"
+ },
+ {
+ "hex": "#dc2626",
+ "hsl": "hsl(0,72.2%,50.6%)",
+ "rgb": "rgb(220,38,38)",
+ "scale": 600,
+ "rgbChannel": "220 38 38",
+ "hslChannel": "0 72.2% 50.6%"
+ },
+ {
+ "hex": "#b91c1c",
+ "hsl": "hsl(0,73.7%,41.8%)",
+ "rgb": "rgb(185,28,28)",
+ "scale": 700,
+ "rgbChannel": "185 28 28",
+ "hslChannel": "0 73.7% 41.8%"
+ },
+ {
+ "hex": "#991b1b",
+ "hsl": "hsl(0,70%,35.3%)",
+ "rgb": "rgb(153,27,27)",
+ "scale": 800,
+ "rgbChannel": "153 27 27",
+ "hslChannel": "0 70% 35.3%"
+ },
+ {
+ "hex": "#7f1d1d",
+ "hsl": "hsl(0,62.8%,30.6%)",
+ "rgb": "rgb(127,29,29)",
+ "scale": 900,
+ "rgbChannel": "127 29 29",
+ "hslChannel": "0 62.8% 30.6%"
+ },
+ {
+ "hex": "#450a0a",
+ "hsl": "hsl(0,74.7%,15.5%)",
+ "rgb": "rgb(69,10,10)",
+ "scale": 950,
+ "rgbChannel": "69 10 10",
+ "hslChannel": "0 74.7% 15.5%"
+ }
+ ],
+ "rose": [
+ {
+ "hex": "#fff1f2",
+ "hsl": "hsl(355.7,100%,97.3%)",
+ "rgb": "rgb(255,241,242)",
+ "scale": 50,
+ "rgbChannel": "255 241 242",
+ "hslChannel": "355.7 100% 97.3%"
+ },
+ {
+ "hex": "#ffe4e6",
+ "hsl": "hsl(355.6,100%,94.7%)",
+ "rgb": "rgb(255,228,230)",
+ "scale": 100,
+ "rgbChannel": "255 228 230",
+ "hslChannel": "355.6 100% 94.7%"
+ },
+ {
+ "hex": "#fecdd3",
+ "hsl": "hsl(352.7,96.1%,90%)",
+ "rgb": "rgb(254,205,211)",
+ "scale": 200,
+ "rgbChannel": "254 205 211",
+ "hslChannel": "352.7 96.1% 90%"
+ },
+ {
+ "hex": "#fda4af",
+ "hsl": "hsl(352.6,95.7%,81.8%)",
+ "rgb": "rgb(253,164,175)",
+ "scale": 300,
+ "rgbChannel": "253 164 175",
+ "hslChannel": "352.6 95.7% 81.8%"
+ },
+ {
+ "hex": "#fb7185",
+ "hsl": "hsl(351.3,94.5%,71.4%)",
+ "rgb": "rgb(251,113,133)",
+ "scale": 400,
+ "rgbChannel": "251 113 133",
+ "hslChannel": "351.3 94.5% 71.4%"
+ },
+ {
+ "hex": "#f43f5e",
+ "hsl": "hsl(349.7,89.2%,60.2%)",
+ "rgb": "rgb(244,63,94)",
+ "scale": 500,
+ "rgbChannel": "244 63 94",
+ "hslChannel": "349.7 89.2% 60.2%"
+ },
+ {
+ "hex": "#e11d48",
+ "hsl": "hsl(346.8,77.2%,49.8%)",
+ "rgb": "rgb(225,29,72)",
+ "scale": 600,
+ "rgbChannel": "225 29 72",
+ "hslChannel": "346.8 77.2% 49.8%"
+ },
+ {
+ "hex": "#be123c",
+ "hsl": "hsl(345.3,82.7%,40.8%)",
+ "rgb": "rgb(190,18,60)",
+ "scale": 700,
+ "rgbChannel": "190 18 60",
+ "hslChannel": "345.3 82.7% 40.8%"
+ },
+ {
+ "hex": "#9f1239",
+ "hsl": "hsl(343.4,79.7%,34.7%)",
+ "rgb": "rgb(159,18,57)",
+ "scale": 800,
+ "rgbChannel": "159 18 57",
+ "hslChannel": "343.4 79.7% 34.7%"
+ },
+ {
+ "hex": "#881337",
+ "hsl": "hsl(341.5,75.5%,30.4%)",
+ "rgb": "rgb(136,19,55)",
+ "scale": 900,
+ "rgbChannel": "136 19 55",
+ "hslChannel": "341.5 75.5% 30.4%"
+ },
+ {
+ "hex": "#4c0519",
+ "hsl": "hsl(343.1,87.7%,15.9%)",
+ "rgb": "rgb(76,5,25)",
+ "scale": 950,
+ "rgbChannel": "76 5 25",
+ "hslChannel": "343.1 87.7% 15.9%"
+ }
+ ],
+ "sky": [
+ {
+ "hex": "#f0f9ff",
+ "hsl": "hsl(204,100%,97.1%)",
+ "rgb": "rgb(240,249,255)",
+ "scale": 50,
+ "rgbChannel": "240 249 255",
+ "hslChannel": "204 100% 97.1%"
+ },
+ {
+ "hex": "#e0f2fe",
+ "hsl": "hsl(204,93.8%,93.7%)",
+ "rgb": "rgb(224,242,254)",
+ "scale": 100,
+ "rgbChannel": "224 242 254",
+ "hslChannel": "204 93.8% 93.7%"
+ },
+ {
+ "hex": "#bae6fd",
+ "hsl": "hsl(200.6,94.4%,86.1%)",
+ "rgb": "rgb(186,230,253)",
+ "scale": 200,
+ "rgbChannel": "186 230 253",
+ "hslChannel": "200.6 94.4% 86.1%"
+ },
+ {
+ "hex": "#7dd3fc",
+ "hsl": "hsl(199.4,95.5%,73.9%)",
+ "rgb": "rgb(125,211,252)",
+ "scale": 300,
+ "rgbChannel": "125 211 252",
+ "hslChannel": "199.4 95.5% 73.9%"
+ },
+ {
+ "hex": "#38bdf8",
+ "hsl": "hsl(198.4,93.2%,59.6%)",
+ "rgb": "rgb(56,189,248)",
+ "scale": 400,
+ "rgbChannel": "56 189 248",
+ "hslChannel": "198.4 93.2% 59.6%"
+ },
+ {
+ "hex": "#0ea5e9",
+ "hsl": "hsl(198.6,88.7%,48.4%)",
+ "rgb": "rgb(14,165,233)",
+ "scale": 500,
+ "rgbChannel": "14 165 233",
+ "hslChannel": "198.6 88.7% 48.4%"
+ },
+ {
+ "hex": "#0284c7",
+ "hsl": "hsl(200.4,98%,39.4%)",
+ "rgb": "rgb(2,132,199)",
+ "scale": 600,
+ "rgbChannel": "2 132 199",
+ "hslChannel": "200.4 98% 39.4%"
+ },
+ {
+ "hex": "#0369a1",
+ "hsl": "hsl(201.3,96.3%,32.2%)",
+ "rgb": "rgb(3,105,161)",
+ "scale": 700,
+ "rgbChannel": "3 105 161",
+ "hslChannel": "201.3 96.3% 32.2%"
+ },
+ {
+ "hex": "#075985",
+ "hsl": "hsl(201,90%,27.5%)",
+ "rgb": "rgb(7,89,133)",
+ "scale": 800,
+ "rgbChannel": "7 89 133",
+ "hslChannel": "201 90% 27.5%"
+ },
+ {
+ "hex": "#0c4a6e",
+ "hsl": "hsl(202,80.3%,23.9%)",
+ "rgb": "rgb(12,74,110)",
+ "scale": 900,
+ "rgbChannel": "12 74 110",
+ "hslChannel": "202 80.3% 23.9%"
+ },
+ {
+ "hex": "#082f49",
+ "hsl": "hsl(204,80.2%,15.9%)",
+ "rgb": "rgb(8,47,73)",
+ "scale": 950,
+ "rgbChannel": "8 47 73",
+ "hslChannel": "204 80.2% 15.9%"
+ }
+ ],
+ "slate": [
+ {
+ "hex": "#f8fafc",
+ "hsl": "hsl(210,40%,98%)",
+ "rgb": "rgb(248,250,252)",
+ "scale": 50,
+ "rgbChannel": "248 250 252",
+ "hslChannel": "210 40% 98%"
+ },
+ {
+ "hex": "#f1f5f9",
+ "hsl": "hsl(210,40%,96.1%)",
+ "rgb": "rgb(241,245,249)",
+ "scale": 100,
+ "rgbChannel": "241 245 249",
+ "hslChannel": "210 40% 96.1%"
+ },
+ {
+ "hex": "#e2e8f0",
+ "hsl": "hsl(214.3,31.8%,91.4%)",
+ "rgb": "rgb(226,232,240)",
+ "scale": 200,
+ "rgbChannel": "226 232 240",
+ "hslChannel": "214.3 31.8% 91.4%"
+ },
+ {
+ "hex": "#cbd5e1",
+ "hsl": "hsl(212.7,26.8%,83.9%)",
+ "rgb": "rgb(203,213,225)",
+ "scale": 300,
+ "rgbChannel": "203 213 225",
+ "hslChannel": "212.7 26.8% 83.9%"
+ },
+ {
+ "hex": "#94a3b8",
+ "hsl": "hsl(215,20.2%,65.1%)",
+ "rgb": "rgb(148,163,184)",
+ "scale": 400,
+ "rgbChannel": "148 163 184",
+ "hslChannel": "215 20.2% 65.1%"
+ },
+ {
+ "hex": "#64748b",
+ "hsl": "hsl(215.4,16.3%,46.9%)",
+ "rgb": "rgb(100,116,139)",
+ "scale": 500,
+ "rgbChannel": "100 116 139",
+ "hslChannel": "215.4 16.3% 46.9%"
+ },
+ {
+ "hex": "#475569",
+ "hsl": "hsl(215.3,19.3%,34.5%)",
+ "rgb": "rgb(71,85,105)",
+ "scale": 600,
+ "rgbChannel": "71 85 105",
+ "hslChannel": "215.3 19.3% 34.5%"
+ },
+ {
+ "hex": "#334155",
+ "hsl": "hsl(215.3,25%,26.7%)",
+ "rgb": "rgb(51,65,85)",
+ "scale": 700,
+ "rgbChannel": "51 65 85",
+ "hslChannel": "215.3 25% 26.7%"
+ },
+ {
+ "hex": "#1e293b",
+ "hsl": "hsl(217.2,32.6%,17.5%)",
+ "rgb": "rgb(30,41,59)",
+ "scale": 800,
+ "rgbChannel": "30 41 59",
+ "hslChannel": "217.2 32.6% 17.5%"
+ },
+ {
+ "hex": "#0f172a",
+ "hsl": "hsl(222.2,47.4%,11.2%)",
+ "rgb": "rgb(15,23,42)",
+ "scale": 900,
+ "rgbChannel": "15 23 42",
+ "hslChannel": "222.2 47.4% 11.2%"
+ },
+ {
+ "hex": "#020617",
+ "hsl": "hsl(222.2,84%,4.9%)",
+ "rgb": "rgb(2,6,23)",
+ "scale": 950,
+ "rgbChannel": "2 6 23",
+ "hslChannel": "222.2 84% 4.9%"
+ }
+ ],
+ "stone": [
+ {
+ "hex": "#fafaf9",
+ "hsl": "hsl(60,9.1%,97.8%)",
+ "rgb": "rgb(250,250,249)",
+ "scale": 50,
+ "rgbChannel": "250 250 249",
+ "hslChannel": "60 9.1% 97.8%"
+ },
+ {
+ "hex": "#f5f5f4",
+ "hsl": "hsl(60,4.8%,95.9%)",
+ "rgb": "rgb(245,245,244)",
+ "scale": 100,
+ "rgbChannel": "245 245 244",
+ "hslChannel": "60 4.8% 95.9%"
+ },
+ {
+ "hex": "#e7e5e4",
+ "hsl": "hsl(20,5.9%,90%)",
+ "rgb": "rgb(231,229,228)",
+ "scale": 200,
+ "rgbChannel": "231 229 228",
+ "hslChannel": "20 5.9% 90%"
+ },
+ {
+ "hex": "#d6d3d1",
+ "hsl": "hsl(24,5.7%,82.9%)",
+ "rgb": "rgb(214,211,209)",
+ "scale": 300,
+ "rgbChannel": "214 211 209",
+ "hslChannel": "24 5.7% 82.9%"
+ },
+ {
+ "hex": "#a8a29e",
+ "hsl": "hsl(24,5.4%,63.9%)",
+ "rgb": "rgb(168,162,158)",
+ "scale": 400,
+ "rgbChannel": "168 162 158",
+ "hslChannel": "24 5.4% 63.9%"
+ },
+ {
+ "hex": "#78716c",
+ "hsl": "hsl(25,5.3%,44.7%)",
+ "rgb": "rgb(120,113,108)",
+ "scale": 500,
+ "rgbChannel": "120 113 108",
+ "hslChannel": "25 5.3% 44.7%"
+ },
+ {
+ "hex": "#57534e",
+ "hsl": "hsl(33.3,5.5%,32.4%)",
+ "rgb": "rgb(87,83,78)",
+ "scale": 600,
+ "rgbChannel": "87 83 78",
+ "hslChannel": "33.3 5.5% 32.4%"
+ },
+ {
+ "hex": "#44403c",
+ "hsl": "hsl(30,6.3%,25.1%)",
+ "rgb": "rgb(68,64,60)",
+ "scale": 700,
+ "rgbChannel": "68 64 60",
+ "hslChannel": "30 6.3% 25.1%"
+ },
+ {
+ "hex": "#292524",
+ "hsl": "hsl(12,6.5%,15.1%)",
+ "rgb": "rgb(41,37,36)",
+ "scale": 800,
+ "rgbChannel": "41 37 36",
+ "hslChannel": "12 6.5% 15.1%"
+ },
+ {
+ "hex": "#1c1917",
+ "hsl": "hsl(24,9.8%,10%)",
+ "rgb": "rgb(28,25,23)",
+ "scale": 900,
+ "rgbChannel": "28 25 23",
+ "hslChannel": "24 9.8% 10%"
+ },
+ {
+ "hex": "#0c0a09",
+ "hsl": "hsl(20,14.3%,4.1%)",
+ "rgb": "rgb(12,10,9)",
+ "scale": 950,
+ "rgbChannel": "12 10 9",
+ "hslChannel": "20 14.3% 4.1%"
+ }
+ ],
+ "teal": [
+ {
+ "hex": "#f0fdfa",
+ "hsl": "hsl(166.2,76.5%,96.7%)",
+ "rgb": "rgb(240,253,250)",
+ "scale": 50,
+ "rgbChannel": "240 253 250",
+ "hslChannel": "166.2 76.5% 96.7%"
+ },
+ {
+ "hex": "#ccfbf1",
+ "hsl": "hsl(167.2,85.5%,89.2%)",
+ "rgb": "rgb(204,251,241)",
+ "scale": 100,
+ "rgbChannel": "204 251 241",
+ "hslChannel": "167.2 85.5% 89.2%"
+ },
+ {
+ "hex": "#99f6e4",
+ "hsl": "hsl(168.4,83.8%,78.2%)",
+ "rgb": "rgb(153,246,228)",
+ "scale": 200,
+ "rgbChannel": "153 246 228",
+ "hslChannel": "168.4 83.8% 78.2%"
+ },
+ {
+ "hex": "#5eead4",
+ "hsl": "hsl(170.6,76.9%,64.3%)",
+ "rgb": "rgb(94,234,212)",
+ "scale": 300,
+ "rgbChannel": "94 234 212",
+ "hslChannel": "170.6 76.9% 64.3%"
+ },
+ {
+ "hex": "#2dd4bf",
+ "hsl": "hsl(172.5,66%,50.4%)",
+ "rgb": "rgb(45,212,191)",
+ "scale": 400,
+ "rgbChannel": "45 212 191",
+ "hslChannel": "172.5 66% 50.4%"
+ },
+ {
+ "hex": "#14b8a6",
+ "hsl": "hsl(173.4,80.4%,40%)",
+ "rgb": "rgb(20,184,166)",
+ "scale": 500,
+ "rgbChannel": "20 184 166",
+ "hslChannel": "173.4 80.4% 40%"
+ },
+ {
+ "hex": "#0d9488",
+ "hsl": "hsl(174.7,83.9%,31.6%)",
+ "rgb": "rgb(13,148,136)",
+ "scale": 600,
+ "rgbChannel": "13 148 136",
+ "hslChannel": "174.7 83.9% 31.6%"
+ },
+ {
+ "hex": "#0f766e",
+ "hsl": "hsl(175.3,77.4%,26.1%)",
+ "rgb": "rgb(15,118,110)",
+ "scale": 700,
+ "rgbChannel": "15 118 110",
+ "hslChannel": "175.3 77.4% 26.1%"
+ },
+ {
+ "hex": "#115e59",
+ "hsl": "hsl(176.1,69.4%,21.8%)",
+ "rgb": "rgb(17,94,89)",
+ "scale": 800,
+ "rgbChannel": "17 94 89",
+ "hslChannel": "176.1 69.4% 21.8%"
+ },
+ {
+ "hex": "#134e4a",
+ "hsl": "hsl(175.9,60.8%,19%)",
+ "rgb": "rgb(19,78,74)",
+ "scale": 900,
+ "rgbChannel": "19 78 74",
+ "hslChannel": "175.9 60.8% 19%"
+ },
+ {
+ "hex": "#042f2e",
+ "hsl": "hsl(178.6,84.3%,10%)",
+ "rgb": "rgb(4,47,46)",
+ "scale": 950,
+ "rgbChannel": "4 47 46",
+ "hslChannel": "178.6 84.3% 10%"
+ }
+ ],
+ "transparent": "transparent",
+ "violet": [
+ {
+ "hex": "#f5f3ff",
+ "hsl": "hsl(250,100%,97.6%)",
+ "rgb": "rgb(245,243,255)",
+ "scale": 50,
+ "rgbChannel": "245 243 255",
+ "hslChannel": "250 100% 97.6%"
+ },
+ {
+ "hex": "#ede9fe",
+ "hsl": "hsl(251.4,91.3%,95.5%)",
+ "rgb": "rgb(237,233,254)",
+ "scale": 100,
+ "rgbChannel": "237 233 254",
+ "hslChannel": "251.4 91.3% 95.5%"
+ },
+ {
+ "hex": "#ddd6fe",
+ "hsl": "hsl(250.5,95.2%,91.8%)",
+ "rgb": "rgb(221,214,254)",
+ "scale": 200,
+ "rgbChannel": "221 214 254",
+ "hslChannel": "250.5 95.2% 91.8%"
+ },
+ {
+ "hex": "#c4b5fd",
+ "hsl": "hsl(252.5,94.7%,85.1%)",
+ "rgb": "rgb(196,181,253)",
+ "scale": 300,
+ "rgbChannel": "196 181 253",
+ "hslChannel": "252.5 94.7% 85.1%"
+ },
+ {
+ "hex": "#a78bfa",
+ "hsl": "hsl(255.1,91.7%,76.3%)",
+ "rgb": "rgb(167,139,250)",
+ "scale": 400,
+ "rgbChannel": "167 139 250",
+ "hslChannel": "255.1 91.7% 76.3%"
+ },
+ {
+ "hex": "#8b5cf6",
+ "hsl": "hsl(258.3,89.5%,66.3%)",
+ "rgb": "rgb(139,92,246)",
+ "scale": 500,
+ "rgbChannel": "139 92 246",
+ "hslChannel": "258.3 89.5% 66.3%"
+ },
+ {
+ "hex": "#7c3aed",
+ "hsl": "hsl(262.1,83.3%,57.8%)",
+ "rgb": "rgb(124,58,237)",
+ "scale": 600,
+ "rgbChannel": "124 58 237",
+ "hslChannel": "262.1 83.3% 57.8%"
+ },
+ {
+ "hex": "#6d28d9",
+ "hsl": "hsl(263.4,70%,50.4%)",
+ "rgb": "rgb(109,40,217)",
+ "scale": 700,
+ "rgbChannel": "109 40 217",
+ "hslChannel": "263.4 70% 50.4%"
+ },
+ {
+ "hex": "#5b21b6",
+ "hsl": "hsl(263.4,69.3%,42.2%)",
+ "rgb": "rgb(91,33,182)",
+ "scale": 800,
+ "rgbChannel": "91 33 182",
+ "hslChannel": "263.4 69.3% 42.2%"
+ },
+ {
+ "hex": "#4c1d95",
+ "hsl": "hsl(263.5,67.4%,34.9%)",
+ "rgb": "rgb(76,29,149)",
+ "scale": 900,
+ "rgbChannel": "76 29 149",
+ "hslChannel": "263.5 67.4% 34.9%"
+ },
+ {
+ "hex": "#1e1b4b",
+ "hsl": "hsl(261.2,72.6%,22.9%)",
+ "rgb": "rgb(46,16,101)",
+ "scale": 950,
+ "rgbChannel": "46 16 101",
+ "hslChannel": "261.2 72.6% 22.9%"
+ }
+ ],
+ "white": {
+ "hex": "#ffffff",
+ "hsl": "hsl(0,0%,100%)",
+ "rgb": "rgb(255,255,255)",
+ "rgbChannel": "255 255 255",
+ "hslChannel": "0 0% 100%"
+ },
+ "yellow": [
+ {
+ "hex": "#fefce8",
+ "hsl": "hsl(54.5,91.7%,95.3%)",
+ "rgb": "rgb(254,252,232)",
+ "scale": 50,
+ "rgbChannel": "254 252 232",
+ "hslChannel": "54.5 91.7% 95.3%"
+ },
+ {
+ "hex": "#fef9c3",
+ "hsl": "hsl(54.9,96.7%,88%)",
+ "rgb": "rgb(254,249,195)",
+ "scale": 100,
+ "rgbChannel": "254 249 195",
+ "hslChannel": "54.9 96.7% 88%"
+ },
+ {
+ "hex": "#fef08a",
+ "hsl": "hsl(52.8,98.3%,76.9%)",
+ "rgb": "rgb(254,240,138)",
+ "scale": 200,
+ "rgbChannel": "254 240 138",
+ "hslChannel": "52.8 98.3% 76.9%"
+ },
+ {
+ "hex": "#fde047",
+ "hsl": "hsl(50.4,97.8%,63.5%)",
+ "rgb": "rgb(253,224,71)",
+ "scale": 300,
+ "rgbChannel": "253 224 71",
+ "hslChannel": "50.4 97.8% 63.5%"
+ },
+ {
+ "hex": "#facc15",
+ "hsl": "hsl(47.9,95.8%,53.1%)",
+ "rgb": "rgb(250,204,21)",
+ "scale": 400,
+ "rgbChannel": "250 204 21",
+ "hslChannel": "47.9 95.8% 53.1%"
+ },
+ {
+ "hex": "#eab308",
+ "hsl": "hsl(45.4,93.4%,47.5%)",
+ "rgb": "rgb(234,179,8)",
+ "scale": 500,
+ "rgbChannel": "234 179 8",
+ "hslChannel": "45.4 93.4% 47.5%"
+ },
+ {
+ "hex": "#ca8a04",
+ "hsl": "hsl(40.6,96.1%,40.4%)",
+ "rgb": "rgb(202,138,4)",
+ "scale": 600,
+ "rgbChannel": "202 138 4",
+ "hslChannel": "40.6 96.1% 40.4%"
+ },
+ {
+ "hex": "#a16207",
+ "hsl": "hsl(35.5,91.7%,32.9%)",
+ "rgb": "rgb(161,98,7)",
+ "scale": 700,
+ "rgbChannel": "161 98 7",
+ "hslChannel": "35.5 91.7% 32.9%"
+ },
+ {
+ "hex": "#854d0e",
+ "hsl": "hsl(31.8,81%,28.8%)",
+ "rgb": "rgb(133,77,14)",
+ "scale": 800,
+ "rgbChannel": "133 77 14",
+ "hslChannel": "31.8 81% 28.8%"
+ },
+ {
+ "hex": "#713f12",
+ "hsl": "hsl(28.4,72.5%,25.7%)",
+ "rgb": "rgb(113,63,18)",
+ "scale": 900,
+ "rgbChannel": "113 63 18",
+ "hslChannel": "28.4 72.5% 25.7%"
+ },
+ {
+ "hex": "#422006",
+ "hsl": "hsl(26,83.3%,14.1%)",
+ "rgb": "rgb(66,32,6)",
+ "scale": 950,
+ "rgbChannel": "66 32 6",
+ "hslChannel": "26 83.3% 14.1%"
+ }
+ ],
+ "zinc": [
+ {
+ "hex": "#fafafa",
+ "hsl": "hsl(0,0%,98%)",
+ "rgb": "rgb(250,250,250)",
+ "scale": 50,
+ "rgbChannel": "250 250 250",
+ "hslChannel": "0 0% 98%"
+ },
+ {
+ "hex": "#f4f4f5",
+ "hsl": "hsl(240,4.8%,95.9%)",
+ "rgb": "rgb(244,244,245)",
+ "scale": 100,
+ "rgbChannel": "244 244 245",
+ "hslChannel": "240 4.8% 95.9%"
+ },
+ {
+ "hex": "#e4e4e7",
+ "hsl": "hsl(240,5.9%,90%)",
+ "rgb": "rgb(228,228,231)",
+ "scale": 200,
+ "rgbChannel": "228 228 231",
+ "hslChannel": "240 5.9% 90%"
+ },
+ {
+ "hex": "#d4d4d8",
+ "hsl": "hsl(240,4.9%,83.9%)",
+ "rgb": "rgb(212,212,216)",
+ "scale": 300,
+ "rgbChannel": "212 212 216",
+ "hslChannel": "240 4.9% 83.9%"
+ },
+ {
+ "hex": "#a1a1aa",
+ "hsl": "hsl(240,5%,64.9%)",
+ "rgb": "rgb(161,161,170)",
+ "scale": 400,
+ "rgbChannel": "161 161 170",
+ "hslChannel": "240 5% 64.9%"
+ },
+ {
+ "hex": "#71717a",
+ "hsl": "hsl(240,3.8%,46.1%)",
+ "rgb": "rgb(113,113,122)",
+ "scale": 500,
+ "rgbChannel": "113 113 122",
+ "hslChannel": "240 3.8% 46.1%"
+ },
+ {
+ "hex": "#52525b",
+ "hsl": "hsl(240,5.2%,33.9%)",
+ "rgb": "rgb(82,82,91)",
+ "scale": 600,
+ "rgbChannel": "82 82 91",
+ "hslChannel": "240 5.2% 33.9%"
+ },
+ {
+ "hex": "#3f3f46",
+ "hsl": "hsl(240,5.3%,26.1%)",
+ "rgb": "rgb(63,63,70)",
+ "scale": 700,
+ "rgbChannel": "63 63 70",
+ "hslChannel": "240 5.3% 26.1%"
+ },
+ {
+ "hex": "#27272a",
+ "hsl": "hsl(240,3.7%,15.9%)",
+ "rgb": "rgb(39,39,42)",
+ "scale": 800,
+ "rgbChannel": "39 39 42",
+ "hslChannel": "240 3.7% 15.9%"
+ },
+ {
+ "hex": "#18181b",
+ "hsl": "hsl(240,5.9%,10%)",
+ "rgb": "rgb(24,24,27)",
+ "scale": 900,
+ "rgbChannel": "24 24 27",
+ "hslChannel": "240 5.9% 10%"
+ },
+ {
+ "hex": "#09090b",
+ "hsl": "hsl(240,10%,3.9%)",
+ "rgb": "rgb(9,9,11)",
+ "scale": 950,
+ "rgbChannel": "9 9 11",
+ "hslChannel": "240 10% 3.9%"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/apps/www/public/r/colors/neutral.json b/apps/www/public/r/colors/neutral.json
new file mode 100644
index 0000000000..d5188ec25d
--- /dev/null
+++ b/apps/www/public/r/colors/neutral.json
@@ -0,0 +1,92 @@
+{
+ "inlineColors": {
+ "dark": {
+ "accent": "neutral-800",
+ "accent-foreground": "neutral-50",
+ "background": "neutral-950",
+ "border": "neutral-800",
+ "card": "neutral-950",
+ "card-foreground": "neutral-50",
+ "destructive": "red-900",
+ "destructive-foreground": "neutral-50",
+ "foreground": "neutral-50",
+ "input": "neutral-800",
+ "muted": "neutral-800",
+ "muted-foreground": "neutral-400",
+ "popover": "neutral-950",
+ "popover-foreground": "neutral-50",
+ "primary": "neutral-50",
+ "primary-foreground": "neutral-900",
+ "ring": "neutral-300",
+ "secondary": "neutral-800",
+ "secondary-foreground": "neutral-50"
+ },
+ "light": {
+ "accent": "neutral-100",
+ "accent-foreground": "neutral-900",
+ "background": "white",
+ "border": "neutral-200",
+ "card": "white",
+ "card-foreground": "neutral-950",
+ "destructive": "red-500",
+ "destructive-foreground": "neutral-50",
+ "foreground": "neutral-950",
+ "input": "neutral-200",
+ "muted": "neutral-100",
+ "muted-foreground": "neutral-500",
+ "popover": "white",
+ "popover-foreground": "neutral-950",
+ "primary": "neutral-900",
+ "primary-foreground": "neutral-50",
+ "ring": "neutral-950",
+ "secondary": "neutral-100",
+ "secondary-foreground": "neutral-900"
+ }
+ },
+ "cssVars": {
+ "dark": {
+ "accent": "0 0% 14.9%",
+ "accent-foreground": "0 0% 98%",
+ "background": "0 0% 3.9%",
+ "border": "0 0% 14.9%",
+ "card": "0 0% 3.9%",
+ "card-foreground": "0 0% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 98%",
+ "input": "0 0% 14.9%",
+ "muted": "0 0% 14.9%",
+ "muted-foreground": "0 0% 63.9%",
+ "popover": "0 0% 3.9%",
+ "popover-foreground": "0 0% 98%",
+ "primary": "0 0% 98%",
+ "primary-foreground": "0 0% 9%",
+ "ring": "0 0% 83.1%",
+ "secondary": "0 0% 14.9%",
+ "secondary-foreground": "0 0% 98%"
+ },
+ "light": {
+ "accent": "0 0% 96.1%",
+ "accent-foreground": "0 0% 9%",
+ "background": "0 0% 100%",
+ "border": "0 0% 89.8%",
+ "card": "0 0% 100%",
+ "card-foreground": "0 0% 3.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 3.9%",
+ "input": "0 0% 89.8%",
+ "muted": "0 0% 96.1%",
+ "muted-foreground": "0 0% 45.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "0 0% 3.9%",
+ "primary": "0 0% 9%",
+ "primary-foreground": "0 0% 98%",
+ "ring": "0 0% 3.9%",
+ "secondary": "0 0% 96.1%",
+ "secondary-foreground": "0 0% 9%"
+ }
+ },
+ "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n ",
+ "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 0 0% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 0 0% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 0 0% 3.9%;\n --primary: 0 0% 9%;\n --primary-foreground: 0 0% 98%;\n --secondary: 0 0% 96.1%;\n --secondary-foreground: 0 0% 9%;\n --muted: 0 0% 96.1%;\n --muted-foreground: 0 0% 45.1%;\n --accent: 0 0% 96.1%;\n --accent-foreground: 0 0% 9%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 89.8%;\n --input: 0 0% 89.8%;\n --ring: 0 0% 3.9%;\n --radius: 0.5rem;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n\n .dark {\n --background: 0 0% 3.9%;\n --foreground: 0 0% 98%;\n --card: 0 0% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 0 0% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 0 0% 9%;\n --secondary: 0 0% 14.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 0 0% 14.9%;\n --muted-foreground: 0 0% 63.9%;\n --accent: 0 0% 14.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 14.9%;\n --input: 0 0% 14.9%;\n --ring: 0 0% 83.1%;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/colors/slate.json b/apps/www/public/r/colors/slate.json
new file mode 100644
index 0000000000..56b7d98725
--- /dev/null
+++ b/apps/www/public/r/colors/slate.json
@@ -0,0 +1,92 @@
+{
+ "inlineColors": {
+ "dark": {
+ "accent": "slate-800",
+ "accent-foreground": "slate-50",
+ "background": "slate-950",
+ "border": "slate-800",
+ "card": "slate-950",
+ "card-foreground": "slate-50",
+ "destructive": "red-900",
+ "destructive-foreground": "slate-50",
+ "foreground": "slate-50",
+ "input": "slate-800",
+ "muted": "slate-800",
+ "muted-foreground": "slate-400",
+ "popover": "slate-950",
+ "popover-foreground": "slate-50",
+ "primary": "slate-50",
+ "primary-foreground": "slate-900",
+ "ring": "slate-300",
+ "secondary": "slate-800",
+ "secondary-foreground": "slate-50"
+ },
+ "light": {
+ "accent": "slate-100",
+ "accent-foreground": "slate-900",
+ "background": "white",
+ "border": "slate-200",
+ "card": "white",
+ "card-foreground": "slate-950",
+ "destructive": "red-500",
+ "destructive-foreground": "slate-50",
+ "foreground": "slate-950",
+ "input": "slate-200",
+ "muted": "slate-100",
+ "muted-foreground": "slate-500",
+ "popover": "white",
+ "popover-foreground": "slate-950",
+ "primary": "slate-900",
+ "primary-foreground": "slate-50",
+ "ring": "slate-950",
+ "secondary": "slate-100",
+ "secondary-foreground": "slate-900"
+ }
+ },
+ "cssVars": {
+ "dark": {
+ "accent": "217.2 32.6% 17.5%",
+ "accent-foreground": "210 40% 98%",
+ "background": "222.2 84% 4.9%",
+ "border": "217.2 32.6% 17.5%",
+ "card": "222.2 84% 4.9%",
+ "card-foreground": "210 40% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "210 40% 98%",
+ "foreground": "210 40% 98%",
+ "input": "217.2 32.6% 17.5%",
+ "muted": "217.2 32.6% 17.5%",
+ "muted-foreground": "215 20.2% 65.1%",
+ "popover": "222.2 84% 4.9%",
+ "popover-foreground": "210 40% 98%",
+ "primary": "210 40% 98%",
+ "primary-foreground": "222.2 47.4% 11.2%",
+ "ring": "212.7 26.8% 83.9%",
+ "secondary": "217.2 32.6% 17.5%",
+ "secondary-foreground": "210 40% 98%"
+ },
+ "light": {
+ "accent": "210 40% 96.1%",
+ "accent-foreground": "222.2 47.4% 11.2%",
+ "background": "0 0% 100%",
+ "border": "214.3 31.8% 91.4%",
+ "card": "0 0% 100%",
+ "card-foreground": "222.2 84% 4.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "210 40% 98%",
+ "foreground": "222.2 84% 4.9%",
+ "input": "214.3 31.8% 91.4%",
+ "muted": "210 40% 96.1%",
+ "muted-foreground": "215.4 16.3% 46.9%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "222.2 84% 4.9%",
+ "primary": "222.2 47.4% 11.2%",
+ "primary-foreground": "210 40% 98%",
+ "ring": "222.2 84% 4.9%",
+ "secondary": "210 40% 96.1%",
+ "secondary-foreground": "222.2 47.4% 11.2%"
+ }
+ },
+ "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n ",
+ "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n --radius: 0.5rem;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n\n .dark {\n --background: 222.2 84% 4.9%;\n --foreground: 210 40% 98%;\n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n --muted: 217.2 32.6% 17.5%;\n --muted-foreground: 215 20.2% 65.1%;\n --accent: 217.2 32.6% 17.5%;\n --accent-foreground: 210 40% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/colors/stone.json b/apps/www/public/r/colors/stone.json
new file mode 100644
index 0000000000..89cd6dff50
--- /dev/null
+++ b/apps/www/public/r/colors/stone.json
@@ -0,0 +1,92 @@
+{
+ "inlineColors": {
+ "dark": {
+ "accent": "stone-800",
+ "accent-foreground": "stone-50",
+ "background": "stone-950",
+ "border": "stone-800",
+ "card": "stone-950",
+ "card-foreground": "stone-50",
+ "destructive": "red-900",
+ "destructive-foreground": "stone-50",
+ "foreground": "stone-50",
+ "input": "stone-800",
+ "muted": "stone-800",
+ "muted-foreground": "stone-400",
+ "popover": "stone-950",
+ "popover-foreground": "stone-50",
+ "primary": "stone-50",
+ "primary-foreground": "stone-900",
+ "ring": "stone-300",
+ "secondary": "stone-800",
+ "secondary-foreground": "stone-50"
+ },
+ "light": {
+ "accent": "stone-100",
+ "accent-foreground": "stone-900",
+ "background": "white",
+ "border": "stone-200",
+ "card": "white",
+ "card-foreground": "stone-950",
+ "destructive": "red-500",
+ "destructive-foreground": "stone-50",
+ "foreground": "stone-950",
+ "input": "stone-200",
+ "muted": "stone-100",
+ "muted-foreground": "stone-500",
+ "popover": "white",
+ "popover-foreground": "stone-950",
+ "primary": "stone-900",
+ "primary-foreground": "stone-50",
+ "ring": "stone-950",
+ "secondary": "stone-100",
+ "secondary-foreground": "stone-900"
+ }
+ },
+ "cssVars": {
+ "dark": {
+ "accent": "12 6.5% 15.1%",
+ "accent-foreground": "60 9.1% 97.8%",
+ "background": "20 14.3% 4.1%",
+ "border": "12 6.5% 15.1%",
+ "card": "20 14.3% 4.1%",
+ "card-foreground": "60 9.1% 97.8%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "60 9.1% 97.8%",
+ "foreground": "60 9.1% 97.8%",
+ "input": "12 6.5% 15.1%",
+ "muted": "12 6.5% 15.1%",
+ "muted-foreground": "24 5.4% 63.9%",
+ "popover": "20 14.3% 4.1%",
+ "popover-foreground": "60 9.1% 97.8%",
+ "primary": "60 9.1% 97.8%",
+ "primary-foreground": "24 9.8% 10%",
+ "ring": "24 5.7% 82.9%",
+ "secondary": "12 6.5% 15.1%",
+ "secondary-foreground": "60 9.1% 97.8%"
+ },
+ "light": {
+ "accent": "60 4.8% 95.9%",
+ "accent-foreground": "24 9.8% 10%",
+ "background": "0 0% 100%",
+ "border": "20 5.9% 90%",
+ "card": "0 0% 100%",
+ "card-foreground": "20 14.3% 4.1%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "60 9.1% 97.8%",
+ "foreground": "20 14.3% 4.1%",
+ "input": "20 5.9% 90%",
+ "muted": "60 4.8% 95.9%",
+ "muted-foreground": "25 5.3% 44.7%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "20 14.3% 4.1%",
+ "primary": "24 9.8% 10%",
+ "primary-foreground": "60 9.1% 97.8%",
+ "ring": "20 14.3% 4.1%",
+ "secondary": "60 4.8% 95.9%",
+ "secondary-foreground": "24 9.8% 10%"
+ }
+ },
+ "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n ",
+ "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 20 14.3% 4.1%;\n --card: 0 0% 100%;\n --card-foreground: 20 14.3% 4.1%;\n --popover: 0 0% 100%;\n --popover-foreground: 20 14.3% 4.1%;\n --primary: 24 9.8% 10%;\n --primary-foreground: 60 9.1% 97.8%;\n --secondary: 60 4.8% 95.9%;\n --secondary-foreground: 24 9.8% 10%;\n --muted: 60 4.8% 95.9%;\n --muted-foreground: 25 5.3% 44.7%;\n --accent: 60 4.8% 95.9%;\n --accent-foreground: 24 9.8% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 60 9.1% 97.8%;\n --border: 20 5.9% 90%;\n --input: 20 5.9% 90%;\n --ring: 20 14.3% 4.1%;\n --radius: 0.5rem;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n\n .dark {\n --background: 20 14.3% 4.1%;\n --foreground: 60 9.1% 97.8%;\n --card: 20 14.3% 4.1%;\n --card-foreground: 60 9.1% 97.8%;\n --popover: 20 14.3% 4.1%;\n --popover-foreground: 60 9.1% 97.8%;\n --primary: 60 9.1% 97.8%;\n --primary-foreground: 24 9.8% 10%;\n --secondary: 12 6.5% 15.1%;\n --secondary-foreground: 60 9.1% 97.8%;\n --muted: 12 6.5% 15.1%;\n --muted-foreground: 24 5.4% 63.9%;\n --accent: 12 6.5% 15.1%;\n --accent-foreground: 60 9.1% 97.8%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 60 9.1% 97.8%;\n --border: 12 6.5% 15.1%;\n --input: 12 6.5% 15.1%;\n --ring: 24 5.7% 82.9%;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/colors/zinc.json b/apps/www/public/r/colors/zinc.json
new file mode 100644
index 0000000000..940841648e
--- /dev/null
+++ b/apps/www/public/r/colors/zinc.json
@@ -0,0 +1,92 @@
+{
+ "inlineColors": {
+ "dark": {
+ "accent": "zinc-800",
+ "accent-foreground": "zinc-50",
+ "background": "zinc-950",
+ "border": "zinc-800",
+ "card": "zinc-950",
+ "card-foreground": "zinc-50",
+ "destructive": "red-900",
+ "destructive-foreground": "zinc-50",
+ "foreground": "zinc-50",
+ "input": "zinc-800",
+ "muted": "zinc-800",
+ "muted-foreground": "zinc-400",
+ "popover": "zinc-950",
+ "popover-foreground": "zinc-50",
+ "primary": "zinc-50",
+ "primary-foreground": "zinc-900",
+ "ring": "zinc-300",
+ "secondary": "zinc-800",
+ "secondary-foreground": "zinc-50"
+ },
+ "light": {
+ "accent": "zinc-100",
+ "accent-foreground": "zinc-900",
+ "background": "white",
+ "border": "zinc-200",
+ "card": "white",
+ "card-foreground": "zinc-950",
+ "destructive": "red-500",
+ "destructive-foreground": "zinc-50",
+ "foreground": "zinc-950",
+ "input": "zinc-200",
+ "muted": "zinc-100",
+ "muted-foreground": "zinc-500",
+ "popover": "white",
+ "popover-foreground": "zinc-950",
+ "primary": "zinc-900",
+ "primary-foreground": "zinc-50",
+ "ring": "zinc-950",
+ "secondary": "zinc-100",
+ "secondary-foreground": "zinc-900"
+ }
+ },
+ "cssVars": {
+ "dark": {
+ "accent": "240 3.7% 15.9%",
+ "accent-foreground": "0 0% 98%",
+ "background": "240 10% 3.9%",
+ "border": "240 3.7% 15.9%",
+ "card": "240 10% 3.9%",
+ "card-foreground": "0 0% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 98%",
+ "input": "240 3.7% 15.9%",
+ "muted": "240 3.7% 15.9%",
+ "muted-foreground": "240 5% 64.9%",
+ "popover": "240 10% 3.9%",
+ "popover-foreground": "0 0% 98%",
+ "primary": "0 0% 98%",
+ "primary-foreground": "240 5.9% 10%",
+ "ring": "240 4.9% 83.9%",
+ "secondary": "240 3.7% 15.9%",
+ "secondary-foreground": "0 0% 98%"
+ },
+ "light": {
+ "accent": "240 4.8% 95.9%",
+ "accent-foreground": "240 5.9% 10%",
+ "background": "0 0% 100%",
+ "border": "240 5.9% 90%",
+ "card": "0 0% 100%",
+ "card-foreground": "240 10% 3.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "240 10% 3.9%",
+ "input": "240 5.9% 90%",
+ "muted": "240 4.8% 95.9%",
+ "muted-foreground": "240 3.8% 46.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "240 10% 3.9%",
+ "primary": "240 5.9% 10%",
+ "primary-foreground": "0 0% 98%",
+ "ring": "240 10% 3.9%",
+ "secondary": "240 4.8% 95.9%",
+ "secondary-foreground": "240 5.9% 10%"
+ }
+ },
+ "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n ",
+ "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 240 10% 3.9%;\n --radius: 0.5rem;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n\n .dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 240 4.9% 83.9%;\n --chart-1: ;\n --chart-2: ;\n --chart-3: ;\n --chart-4: ;\n --chart-5: ;\n }\n}\n\n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/index.json b/apps/www/public/r/index.json
new file mode 100644
index 0000000000..05a1d3220d
--- /dev/null
+++ b/apps/www/public/r/index.json
@@ -0,0 +1,1242 @@
+[
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/editor.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "editor",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-cloud"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/cloud.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/cloud-attachment-element.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/cloud-image-element.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/cloud-resize-controls.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/cloud-status-bar.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/cloud-toolbar-buttons.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "cloud",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/code-block-element.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/code-block-element.css",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/code-block-combobox.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-block-element",
+ "registryDependencies": [
+ "command"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-layout"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/column-element.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/column-group-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "column-element",
+ "registryDependencies": [
+ "command",
+ "resizable"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/color-dropdown-menu.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/color-constants.ts",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/color-dropdown-menu-items.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/color-input.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/color-picker.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/colors-custom.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "color-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar",
+ "separator",
+ "button",
+ "tooltip"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-comments"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/comments-popover.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-avatar.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-create-form.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-item.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-more-dropdown.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-reply-items.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-resolve-button.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/comment-value.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comments-popover",
+ "registryDependencies": [
+ "popover",
+ "avatar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-dnd",
+ "react-dnd",
+ "react-dnd-html5-backend"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/draggable.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/with-draggables.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "draggable",
+ "registryDependencies": [
+ "tooltip"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-popover"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/emoji-dropdown-menu.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-toolbar-dropdown.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-icons.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker-content.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker-navigation.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker-preview.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker-search-and-clear.tsx",
+ "type": "registry:ui"
+ },
+ {
+ "path": "plate-ui/emoji-picker-search-bar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "emoji-dropdown-menu",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-emoji"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/emoji-input-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "emoji-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-alignment"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/align-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "align-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-avatar"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/avatar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "avatar",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-block-quote"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/blockquote-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "blockquote-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-date"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/date-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "date-element",
+ "registryDependencies": [
+ "calendar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "react-day-picker@8.10.1",
+ "date-fns"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/calendar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "calendar",
+ "registryDependencies": [
+ "button"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-slot"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "button",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-caption"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/caption.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "caption",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-checkbox"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/checkbox.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "checkbox",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/code-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/code-line-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-line-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/code-syntax-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-syntax-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "cmdk"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/command.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "command",
+ "registryDependencies": [
+ "dialog"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-comments"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/comment-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comment-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/comment-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comment-toolbar-button",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/cursor-overlay.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "cursor-overlay",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-dialog"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/dialog.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "dialog",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-dropdown-menu"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "dropdown-menu",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-excalidraw"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/excalidraw-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "excalidraw-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/fixed-toolbar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "fixed-toolbar",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/fixed-toolbar-buttons.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "fixed-toolbar-buttons",
+ "registryDependencies": [
+ "toolbar",
+ "insert-dropdown-menu",
+ "mark-toolbar-button",
+ "mode-dropdown-menu",
+ "turn-into-dropdown-menu"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-floating"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/floating-toolbar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "floating-toolbar",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/floating-toolbar-buttons.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "floating-toolbar-buttons",
+ "registryDependencies": [
+ "mark-toolbar-button",
+ "more-dropdown-menu",
+ "turn-into-dropdown-menu"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/heading-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "heading-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-highlight"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/highlight-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "highlight-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-horizontal-rule"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/hr-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "hr-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/image-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "image-element",
+ "registryDependencies": [
+ "media-popover",
+ "caption",
+ "resizable"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-indent-list"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/indent-list-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "indent-list-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-indent"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/indent-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "indent-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@ariakit/react",
+ "@udecode/plate-combobox"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/inline-combobox.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "inline-combobox",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/input.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "input",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-block-quote",
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/insert-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "insert-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-kbd"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/kbd-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "kbd-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-line-height"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/line-height-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "line-height-dropdown-menu",
+ "registryDependencies": [
+ "toolbar",
+ "dropdown-menu"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/link-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/link-floating-toolbar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-floating-toolbar",
+ "registryDependencies": [
+ "button",
+ "input",
+ "popover",
+ "separator"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/link-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/list-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "list-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/list-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "list-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/mark-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mark-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-media",
+ "react-tweet",
+ "react-lite-youtube-embed"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/media-embed-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-embed-element",
+ "registryDependencies": [
+ "media-popover",
+ "caption",
+ "resizable"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/media-popover.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-popover",
+ "registryDependencies": [
+ "button",
+ "input",
+ "popover",
+ "separator"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/media-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-mention"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/mention-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mention-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-mention"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/mention-input-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mention-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [],
+ "files": [
+ {
+ "path": "plate-ui/mode-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mode-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/more-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "more-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-indent"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/outdent-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "outdent-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "files": [
+ {
+ "path": "plate-ui/paragraph-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "paragraph-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/placeholder.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "placeholder",
+ "registryDependencies": [
+ "paragraph-element"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-popover"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/popover.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "popover",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-find-replace"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/search-highlight-leaf.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "search-highlight-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-separator"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/separator.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "separator",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-heading",
+ "@udecode/plate-indent-list"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/slash-input-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "slash-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/table-cell-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-cell-element",
+ "registryDependencies": [
+ "resizable"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/table-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/table-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-element",
+ "registryDependencies": [
+ "dropdown-menu"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/table-row-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-row-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/todo-list-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "todo-list-element",
+ "registryDependencies": [
+ "checkbox"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-toggle"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/toggle-element.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toggle-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-toggle"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/toggle-toolbar-button.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toggle-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-toolbar"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/toolbar.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toolbar",
+ "registryDependencies": [
+ "tooltip",
+ "separator"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@radix-ui/react-tooltip"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/tooltip.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "tooltip",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-block-quote",
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/turn-into-dropdown-menu.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "turn-into-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+ },
+ {
+ "dependencies": [
+ "@udecode/plate-resizable"
+ ],
+ "files": [
+ {
+ "path": "plate-ui/resizable.tsx",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "resizable",
+ "registryDependencies": [],
+ "type": "registry:ui"
+ }
+]
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/align-dropdown-menu.json b/apps/www/public/r/styles/default/align-dropdown-menu.json
new file mode 100644
index 0000000000..c7021beead
--- /dev/null
+++ b/apps/www/public/r/styles/default/align-dropdown-menu.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@udecode/plate-alignment"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport {\n useAlignDropdownMenu,\n useAlignDropdownMenuState,\n} from '@udecode/plate-alignment/react';\n\nimport { Icons, iconVariants } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nconst items = [\n {\n icon: Icons.alignLeft,\n value: 'left',\n },\n {\n icon: Icons.alignCenter,\n value: 'center',\n },\n {\n icon: Icons.alignRight,\n value: 'right',\n },\n {\n icon: Icons.alignJustify,\n value: 'justify',\n },\n];\n\nexport function AlignDropdownMenu({ children, ...props }: DropdownMenuProps) {\n const state = useAlignDropdownMenuState();\n const { radioGroupProps } = useAlignDropdownMenu(state);\n\n const openState = useOpenState();\n const IconValue =\n items.find((item) => item.value === radioGroupProps.value)?.icon ??\n Icons.alignLeft;\n\n return (\n \n \n \n \n \n \n\n \n \n {items.map(({ icon: Icon, value: itemValue }) => (\n \n \n \n ))}\n \n \n \n );\n}\n",
+ "path": "plate-ui/align-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "align-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/avatar.json b/apps/www/public/r/styles/default/avatar.json
new file mode 100644
index 0000000000..70bcfc351e
--- /dev/null
+++ b/apps/www/public/r/styles/default/avatar.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-avatar"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport { withCn } from '@udecode/cn';\n\nexport const Avatar = withCn(\n AvatarPrimitive.Root,\n 'relative flex size-10 shrink-0 overflow-hidden rounded-full'\n);\n\nexport const AvatarImage = withCn(\n AvatarPrimitive.Image,\n 'aspect-square size-full'\n);\n\nexport const AvatarFallback = withCn(\n AvatarPrimitive.Fallback,\n 'flex size-full items-center justify-center rounded-full bg-muted'\n);\n",
+ "path": "plate-ui/avatar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "avatar",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/blockquote-element.json b/apps/www/public/r/styles/default/blockquote-element.json
new file mode 100644
index 0000000000..5b55d29b44
--- /dev/null
+++ b/apps/www/public/r/styles/default/blockquote-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-block-quote"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\n\nexport const BlockquoteElement = withRef(\n ({ children, className, ...props }, ref) => {\n return (\n \n {children} \n \n );\n }\n);\n",
+ "path": "plate-ui/blockquote-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "blockquote-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/button.json b/apps/www/public/r/styles/default/button.json
new file mode 100644
index 0000000000..7beeda0cdc
--- /dev/null
+++ b/apps/www/public/r/styles/default/button.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-slot"
+ ],
+ "files": [
+ {
+ "content": "import * as React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { cn, withRef } from '@udecode/cn';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center 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',\n {\n defaultVariants: {\n size: 'default',\n variant: 'default',\n },\n variants: {\n isMenu: {\n true: 'h-auto w-full cursor-pointer justify-start',\n },\n size: {\n default: 'h-10 px-4 py-2',\n icon: 'size-10',\n lg: 'h-11 rounded-md px-8',\n none: '',\n sm: 'h-9 rounded-md px-3',\n sms: 'size-9 rounded-md px-0',\n xs: 'h-8 rounded-md px-3',\n },\n variant: {\n default: 'bg-primary text-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n inlineLink: 'text-base text-primary underline underline-offset-4',\n link: 'text-primary underline-offset-4 hover:underline',\n outline:\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n },\n },\n }\n);\n\nexport const Button = withRef<\n 'button',\n {\n asChild?: boolean;\n } & VariantProps\n>(({ asChild = false, className, isMenu, size, variant, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n \n );\n});\n",
+ "path": "plate-ui/button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "button",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/calendar.json b/apps/www/public/r/styles/default/calendar.json
new file mode 100644
index 0000000000..1b6e34ceec
--- /dev/null
+++ b/apps/www/public/r/styles/default/calendar.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "react-day-picker@8.10.1",
+ "date-fns"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '@udecode/cn';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\nimport { buttonVariants } from './button';\n\nexport type CalendarProps = React.ComponentProps;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n ,\n IconRight: () => ,\n }}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n );\n}\n\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n",
+ "path": "plate-ui/calendar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "calendar",
+ "registryDependencies": [
+ "button"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/caption.json b/apps/www/public/r/styles/default/caption.json
new file mode 100644
index 0000000000..0b54b6daeb
--- /dev/null
+++ b/apps/www/public/r/styles/default/caption.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-caption"
+ ],
+ "files": [
+ {
+ "content": "import {\n cn,\n createPrimitiveComponent,\n withCn,\n withVariants,\n} from '@udecode/cn';\nimport {\n Caption as CaptionPrimitive,\n CaptionTextarea as CaptionTextareaPrimitive,\n useCaptionButton,\n useCaptionButtonState,\n} from '@udecode/plate-caption/react';\nimport { cva } from 'class-variance-authority';\n\nimport { Button } from './button';\n\nconst captionVariants = cva('max-w-full', {\n defaultVariants: {\n align: 'center',\n },\n variants: {\n align: {\n center: 'mx-auto',\n left: 'mr-auto',\n right: 'ml-auto',\n },\n },\n});\n\nexport const Caption = withVariants(CaptionPrimitive, captionVariants, [\n 'align',\n]);\n\nexport const CaptionTextarea = withCn(\n CaptionTextareaPrimitive,\n cn(\n 'mt-2 w-full resize-none border-none bg-inherit p-0 font-[inherit] text-inherit',\n 'focus:outline-none focus:[&::placeholder]:opacity-0',\n 'text-center print:placeholder:text-transparent'\n )\n);\n\nexport const CaptionButton = createPrimitiveComponent(Button)({\n propsHook: useCaptionButton,\n stateHook: useCaptionButtonState,\n});\n",
+ "path": "plate-ui/caption.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "caption",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/checkbox.json b/apps/www/public/r/styles/default/checkbox.json
new file mode 100644
index 0000000000..fa82dd5000
--- /dev/null
+++ b/apps/www/public/r/styles/default/checkbox.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-checkbox"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { cn, withRef } from '@udecode/cn';\n\nimport { Icons } from '@/components/icons';\n\nexport const Checkbox = withRef(\n ({ className, ...props }, ref) => (\n \n \n \n \n \n )\n);\n",
+ "path": "plate-ui/checkbox.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "checkbox",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/cloud.json b/apps/www/public/r/styles/default/cloud.json
new file mode 100644
index 0000000000..e0bdc07c42
--- /dev/null
+++ b/apps/www/public/r/styles/default/cloud.json
@@ -0,0 +1,46 @@
+{
+ "dependencies": [
+ "@udecode/plate-cloud"
+ ],
+ "files": [
+ {
+ "content": "export * from './cloud-attachment-element';\n\nexport * from './cloud-image-element';\n\nexport * from './cloud-resize-controls';\n\nexport * from './cloud-status-bar';\n\nexport * from './cloud-toolbar-buttons';\n",
+ "path": "plate-ui/cloud.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n type TCloudAttachmentElement,\n useCloudAttachmentElementState,\n} from '@udecode/plate-cloud';\nimport {\n type PlateElementProps,\n PlateElement,\n} from '@udecode/plate-common/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { StatusBar } from './cloud-status-bar';\n\nexport interface CloudAttachmentElementProps\n extends PlateElementProps {}\n\nexport function CloudAttachmentElement({\n className,\n ...props\n}: CloudAttachmentElementProps) {\n const { children, element } = props;\n\n const { focused, selected, upload } = useCloudAttachmentElementState({\n element,\n });\n\n return (\n \n \n \n
\n \n
{element.filename}
\n
\n \n {element.bytes} bytes\n
\n \n
\n \n {upload.status === 'success' && (\n
\n \n \n )}\n
\n {children}\n \n );\n}\n",
+ "path": "plate-ui/cloud-attachment-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n type TCloudImageElement,\n useCloudImageElementState,\n} from '@udecode/plate-cloud';\nimport {\n type PlateElementProps,\n PlateElement,\n} from '@udecode/plate-common/react';\n\nimport { ResizeControls } from './cloud-resize-controls';\nimport { StatusBar } from './cloud-status-bar';\n\nexport interface CloudImageElementProps\n extends PlateElementProps {}\n\nexport function CloudImageElement({\n className,\n ...props\n}: CloudImageElementProps) {\n const { children, element } = props;\n\n const { focused, selected, setSize, size, src, srcSet, upload } =\n useCloudImageElementState({ element });\n\n return (\n \n on the inside is display: 'block'.\n */\n verticalAlign: 'top',\n }}\n contentEditable={false}\n >\n {src === '' ? (\n
\n ) : (\n \n )}\n \n \n
\n {selected && focused && (\n \n )}\n \n {children}\n \n );\n}\n",
+ "path": "plate-ui/cloud-image-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React, {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useRef,\n useState,\n} from 'react';\n\nimport { resizeInWidth } from '@portive/client';\nimport {\n type TCloudImageElement,\n CloudImagePlugin,\n} from '@udecode/plate-cloud';\nimport { setNodes } from '@udecode/plate-common';\nimport { findNodePath, useEditorRef } from '@udecode/plate-common/react';\n\ntype ImageSize = { height: number; width: number };\n\ntype SetImageSize = Dispatch>;\n\n/** The resize label that shows the width/height of the image */\nfunction ResizeLabel({ size }: { size: { height: number; width: number } }) {\n const isBelow = size.width < 100 || size.height < 100;\n const bottom = isBelow ? -24 : 4;\n\n return (\n \n {size.width} × {size.height}\n
\n );\n}\n\n/** The little divets on the resize handle bar. */\nconst barStyle = {\n background: 'rgba(255,255,255,0.75)',\n height: 16,\n position: 'absolute',\n top: 8,\n width: 1,\n} as const;\n\n/** The handle used to drag resize an image */\nfunction ResizeHandles({\n onMouseDown,\n}: {\n onMouseDown: React.MouseEventHandler;\n}) {\n return (\n <>\n {/* Invisible Handle */}\n \n {/* Visible Handle */}\n
\n
\n >\n );\n}\n\nexport function ResizeControls({\n element,\n setSize,\n size,\n}: {\n element: TCloudImageElement;\n setSize: SetImageSize;\n size: ImageSize;\n}) {\n const editor = useEditorRef();\n const [isResizing, setIsResizing] = useState(false);\n\n const { maxResizeWidth, minResizeWidth } =\n editor.getOptions(CloudImagePlugin);\n\n const currentSizeRef = useRef<{ height: number; width: number }>();\n\n const onMouseDown = useCallback(\n (mouseDownEvent: React.MouseEvent) => {\n setIsResizing(true);\n const startX = mouseDownEvent.clientX;\n const startWidth = size.width;\n const minWidth = minResizeWidth;\n const maxWidth = Math.min(element.maxWidth, maxResizeWidth);\n\n /**\n * Handle resize dragging through an event handler on mouseMove on the\n * document.\n */\n function onDocumentMouseMove(mouseMoveEvent: MouseEvent) {\n mouseMoveEvent.preventDefault();\n mouseMoveEvent.stopPropagation();\n /** Calculate the proposed width based on drag position */\n const proposedWidth = startWidth + mouseMoveEvent.clientX - startX;\n\n /** Constrain the proposed with between min, max and original width */\n const nextWidth = Math.min(maxWidth, Math.max(minWidth, proposedWidth));\n\n const currentSize = resizeInWidth(\n { height: element.maxHeight, width: element.maxWidth },\n nextWidth\n );\n\n currentSizeRef.current = currentSize;\n setSize(currentSize);\n }\n\n const originalCursor = document.body.style.cursor;\n\n /** When the user releases the mouse, remove all the event handlers */\n function onDocumentMouseUp() {\n setIsResizing(false);\n document.removeEventListener('mousemove', onDocumentMouseMove);\n document.removeEventListener('mouseup', onDocumentMouseUp);\n document.body.style.cursor = originalCursor;\n\n const at = findNodePath(editor, element);\n\n if (!currentSizeRef.current) return;\n\n setNodes(editor, currentSizeRef.current, { at });\n }\n\n /** Attach document event listeners */\n document.addEventListener('mousemove', onDocumentMouseMove);\n document.addEventListener('mouseup', onDocumentMouseUp);\n\n /**\n * While dragging, we want the cursor to be `ew-resize` (left-right arrow)\n * even if the cursor happens to not be exactly on the handle at the\n * moment due to a delay in the cursor moving to a location and the image\n * resizing to it.\n *\n * Also, image has max width/height and the cursor can fall outside of it.\n */\n document.body.style.cursor = 'ew-resize';\n },\n [size.width, minResizeWidth, element, maxResizeWidth, setSize, editor]\n );\n\n if (element.width < minResizeWidth) return null;\n\n return (\n <>\n {isResizing ? : null}\n \n >\n );\n}\n",
+ "path": "plate-ui/cloud-resize-controls.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React, { type HTMLAttributes, useEffect, useRef, useState } from 'react';\n\nimport type { Upload, UploadProgress } from '@udecode/plate-cloud';\n\nimport { cn } from '@udecode/cn';\n\nexport function ProgressBar({\n className,\n upload,\n ...props\n}: {\n upload: UploadProgress;\n} & HTMLAttributes) {\n const [width, setWidth] = useState(null);\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current) setWidth(ref.current.offsetWidth);\n }, []);\n\n /**\n * This formula looks a little funny because we want the `0` value of the\n * progress bar to have a width that is still the height of the progress bar.\n *\n * This is for a few reasons:\n *\n * 1. We want the zero point to start with the progress bar being a circle\n * 2. If we want rounded edges, if the width is shorter than the height, we get\n * an oval instead of a circle\n * 3. The halfway point looks visually wrong because of the circle progress bar\n * when it is technically at the halfway point.\n */\n const progressWidth =\n width == null\n ? 0\n : (upload.sentBytes / upload.totalBytes) * (width - 16) + 16;\n\n return (\n \n );\n}\n\nexport function FailBar({\n className,\n ...props\n}: HTMLAttributes) {\n return (\n
\n );\n}\n\nexport function StatusBar(props: {\n upload: Upload;\n children?: React.ReactNode;\n}) {\n const { children, upload } = props;\n\n switch (upload.status) {\n case 'progress': {\n return ;\n }\n case 'error': {\n return Upload Failed ;\n }\n case 'not-found': {\n return Uploading... ;\n }\n case 'success': {\n return children || null;\n }\n default: {\n throw new Error(`Should be unreachable`);\n }\n }\n}\n",
+ "path": "plate-ui/cloud-status-bar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { CloudPlugin } from '@udecode/plate-cloud';\nimport { useEditorPlugin } from '@udecode/plate-common/react';\n\nconst buttonStyle: React.CSSProperties = {\n background: '#f0f0f0',\n border: 'none',\n cursor: 'pointer',\n marginRight: 4,\n padding: 8,\n};\n\nexport function CloudToolbarButtons() {\n const { api, editor } = useEditorPlugin(CloudPlugin);\n\n const getSaveValue = () => {\n console.info('editor.children', editor.children);\n console.info('editor.cloud.getSaveValue()', api.cloud.getSaveValue());\n };\n\n const finishUploads = async () => {\n await api.cloud.finishUploads();\n };\n\n return (\n <>\n \n Get Save Value\n \n \n Await Finish Uploads\n \n \n Note: After clicking a button, output will be shown in console.\n \n >\n );\n}\n",
+ "path": "plate-ui/cloud-toolbar-buttons.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "cloud",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/code-block-element.json b/apps/www/public/r/styles/default/code-block-element.json
new file mode 100644
index 0000000000..8690146cfd
--- /dev/null
+++ b/apps/www/public/r/styles/default/code-block-element.json
@@ -0,0 +1,30 @@
+{
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { useCodeBlockElementState } from '@udecode/plate-code-block/react';\nimport { PlateElement } from '@udecode/plate-common/react';\n\nimport { CodeBlockCombobox } from './code-block-combobox';\n\nimport './code-block-element.css';\n\nexport const CodeBlockElement = withRef(\n ({ children, className, ...props }, ref) => {\n const { element } = props;\n const state = useCodeBlockElementState({ element });\n\n return (\n \n \n {children}
\n \n\n {state.syntax && (\n \n \n
\n )}\n \n );\n }\n);\n",
+ "path": "plate-ui/code-block-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": ".slate-code_block code[class*='language-'],\n.slate-code_block pre[class*='language-'] {\n background: hsl(230, 1%, 98%);\n color: hsl(230, 8%, 24%);\n font-family: 'Fira Code', 'Fira Mono', Menlo, Consolas, 'DejaVu Sans Mono',\n monospace;\n direction: ltr;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n line-height: 1.5;\n -moz-tab-size: 2;\n -o-tab-size: 2;\n tab-size: 2;\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n}\n\n/* Selection */\n.slate-code_block code[class*='language-']::-moz-selection,\n.slate-code_block code[class*='language-'] *::-moz-selection,\n.slate-code_block pre[class*='language-'] *::-moz-selection {\n background: hsl(230, 1%, 90%);\n color: inherit;\n}\n\n.slate-code_block code[class*='language-']::selection,\n.slate-code_block code[class*='language-'] *::selection,\n.slate-code_block pre[class*='language-'] *::selection {\n background: hsl(230, 1%, 90%);\n color: inherit;\n}\n\n/* Code blocks */\n.slate-code_block pre[class*='language-'] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n border-radius: 0.3em;\n}\n\n/* Inline code */\n.slate-code_block :not(pre) > code[class*='language-'] {\n padding: 0.2em 0.3em;\n border-radius: 0.3em;\n white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.cdata {\n color: hsl(230, 4%, 64%);\n}\n\n.token.doctype,\n.token.punctuation,\n.token.entity {\n color: hsl(230, 8%, 24%);\n}\n\n.token.attr-name,\n.token.class-name,\n.token.boolean,\n.token.constant,\n.token.number,\n.token.atrule {\n color: hsl(35, 99%, 36%);\n}\n\n.token.keyword {\n color: hsl(301, 63%, 40%);\n}\n\n.token.property,\n.token.tag,\n.token.symbol,\n.token.deleted,\n.token.important {\n color: hsl(5, 74%, 59%);\n}\n\n.token.selector,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted,\n.token.regex,\n.token.attr-value,\n.token.attr-value > .token.punctuation {\n color: hsl(119, 34%, 47%);\n}\n\n.token.variable,\n.token.operator,\n.token.function {\n color: hsl(221, 87%, 60%);\n}\n\n.token.url {\n color: hsl(198, 99%, 37%);\n}\n\n/* HTML overrides */\n.token.attr-value > .token.punctuation.attr-equals,\n.token.special-attr > .token.attr-value > .token.value.css {\n color: hsl(230, 8%, 24%);\n}\n\n/* CSS overrides */\n.language-css .token.selector {\n color: hsl(5, 74%, 59%);\n}\n\n.language-css .token.property {\n color: hsl(230, 8%, 24%);\n}\n\n.language-css .token.function,\n.language-css .token.url > .token.function {\n color: hsl(198, 99%, 37%);\n}\n\n.language-css .token.url > .token.string.url {\n color: hsl(119, 34%, 47%);\n}\n\n.language-css .token.important,\n.language-css .token.atrule .token.rule {\n color: hsl(301, 63%, 40%);\n}\n\n/* JS overrides */\n.language-javascript .token.operator {\n color: hsl(301, 63%, 40%);\n}\n\n.language-javascript\n .token.template-string\n > .token.interpolation\n > .token.interpolation-punctuation.punctuation {\n color: hsl(344, 84%, 43%);\n}\n\n/* JSON overrides */\n.language-json .token.operator {\n color: hsl(230, 8%, 24%);\n}\n\n.language-json .token.null.keyword {\n color: hsl(35, 99%, 36%);\n}\n\n/* MD overrides */\n.language-markdown .token.url,\n.language-markdown .token.url > .token.operator,\n.language-markdown .token.url-reference.url > .token.string {\n color: hsl(230, 8%, 24%);\n}\n\n.language-markdown .token.url > .token.content {\n color: hsl(221, 87%, 60%);\n}\n\n.language-markdown .token.url > .token.url,\n.language-markdown .token.url-reference.url {\n color: hsl(198, 99%, 37%);\n}\n\n.language-markdown .token.blockquote.punctuation,\n.language-markdown .token.hr.punctuation {\n color: hsl(230, 4%, 64%);\n font-style: italic;\n}\n\n.language-markdown .token.code-snippet {\n color: hsl(119, 34%, 47%);\n}\n\n.language-markdown .token.bold .token.content {\n color: hsl(35, 99%, 36%);\n}\n\n.language-markdown .token.italic .token.content {\n color: hsl(301, 63%, 40%);\n}\n\n.language-markdown .token.strike .token.content,\n.language-markdown .token.strike .token.punctuation,\n.language-markdown .token.list.punctuation,\n.language-markdown .token.title.important > .token.punctuation {\n color: hsl(5, 74%, 59%);\n}\n\n/* General */\n.token.bold {\n font-weight: bold;\n}\n\n.token.comment,\n.token.italic {\n font-style: italic;\n}\n\n.token.entity {\n cursor: help;\n}\n\n.token.namespace {\n opacity: 0.8;\n}\n\n/* Plugin overrides */\n/* Selectors should have higher specificity than those in the plugins' default stylesheets */\n\n/* Show Invisibles plugin overrides */\n.token.token.tab:not(:empty):before,\n.token.token.cr:before,\n.token.token.lf:before,\n.token.token.space:before {\n color: hsla(230, 8%, 24%, 0.2);\n}\n\n/* Toolbar plugin overrides */\n/* Space out all buttons and move them away from the right edge of the code block */\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item {\n margin-right: 0.4em;\n}\n\n/* Styling the buttons */\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > span {\n background: hsl(230, 1%, 90%);\n color: hsl(230, 6%, 44%);\n padding: 0.1em 0.4em;\n border-radius: 0.3em;\n}\n\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,\ndiv.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus {\n background: hsl(230, 1%, 78%); /* custom: darken(--syntax-bg, 20%) */\n color: hsl(230, 8%, 24%);\n}\n\n/* Line Highlight plugin overrides */\n/* The highlighted line itself */\n.line-highlight.line-highlight {\n background: hsla(230, 8%, 24%, 0.05);\n}\n\n/* Default line numbers in Line Highlight plugin */\n.line-highlight.line-highlight:before,\n.line-highlight.line-highlight[data-end]:after {\n background: hsl(230, 1%, 90%);\n color: hsl(230, 8%, 24%);\n padding: 0.1em 0.6em;\n border-radius: 0.3em;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); /* same as Toolbar plugin default */\n}\n\n/* Hovering over a linkable line number (in the gutter area) */\n/* Requires Line Numbers plugin as well */\npre[id].linkable-line-numbers.linkable-line-numbers\n span.line-numbers-rows\n > span:hover:before {\n background-color: hsla(230, 8%, 24%, 0.05);\n}\n\n/* Line Numbers and Command Line plugins overrides */\n/* Line separating gutter from coding area */\n.line-numbers.line-numbers .line-numbers-rows,\n.command-line .command-line-prompt {\n border-right-color: hsla(230, 8%, 24%, 0.2);\n}\n\n/* Stuff in the gutter */\n.line-numbers .line-numbers-rows > span:before,\n.command-line .command-line-prompt > span:before {\n color: hsl(230, 1%, 62%);\n}\n\n/* Match Braces plugin overrides */\n/* Note: Outline colour is inherited from the braces */\n.rainbow-braces .token.token.punctuation.brace-level-1,\n.rainbow-braces .token.token.punctuation.brace-level-5,\n.rainbow-braces .token.token.punctuation.brace-level-9 {\n color: hsl(5, 74%, 59%);\n}\n\n.rainbow-braces .token.token.punctuation.brace-level-2,\n.rainbow-braces .token.token.punctuation.brace-level-6,\n.rainbow-braces .token.token.punctuation.brace-level-10 {\n color: hsl(119, 34%, 47%);\n}\n\n.rainbow-braces .token.token.punctuation.brace-level-3,\n.rainbow-braces .token.token.punctuation.brace-level-7,\n.rainbow-braces .token.token.punctuation.brace-level-11 {\n color: hsl(221, 87%, 60%);\n}\n\n.rainbow-braces .token.token.punctuation.brace-level-4,\n.rainbow-braces .token.token.punctuation.brace-level-8,\n.rainbow-braces .token.token.punctuation.brace-level-12 {\n color: hsl(301, 63%, 40%);\n}\n\n/* Diff Highlight plugin overrides */\n/* Taken from https://github.com/atom/github/blob/master/styles/variables.less */\npre.diff-highlight > code .token.token.deleted:not(.prefix),\npre > code.diff-highlight .token.token.deleted:not(.prefix) {\n background-color: hsla(353, 100%, 66%, 0.15);\n}\n\npre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection,\npre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection,\npre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,\npre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection {\n background-color: hsla(353, 95%, 66%, 0.25);\n}\n\npre.diff-highlight > code .token.token.deleted:not(.prefix)::selection,\npre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection,\npre > code.diff-highlight .token.token.deleted:not(.prefix)::selection,\npre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection {\n background-color: hsla(353, 95%, 66%, 0.25);\n}\n\npre.diff-highlight > code .token.token.inserted:not(.prefix),\npre > code.diff-highlight .token.token.inserted:not(.prefix) {\n background-color: hsla(137, 100%, 55%, 0.15);\n}\n\npre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection,\npre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection,\npre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,\npre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection {\n background-color: hsla(135, 73%, 55%, 0.25);\n}\n\npre.diff-highlight > code .token.token.inserted:not(.prefix)::selection,\npre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection,\npre > code.diff-highlight .token.token.inserted:not(.prefix)::selection,\npre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection {\n background-color: hsla(135, 73%, 55%, 0.25);\n}\n\n/* Previewers plugin overrides */\n/* Based on https://github.com/atom-community/atom-ide-datatip/blob/master/styles/atom-ide-datatips.less and https://github.com/atom/atom/blob/master/packages/one-light-ui */\n/* Border around popup */\n.prism-previewer.prism-previewer:before,\n.prism-previewer-gradient.prism-previewer-gradient div {\n border-color: hsl(0, 0, 95%);\n}\n\n/* Angle and time should remain as circles and are hence not included */\n.prism-previewer-color.prism-previewer-color:before,\n.prism-previewer-gradient.prism-previewer-gradient div,\n.prism-previewer-easing.prism-previewer-easing:before {\n border-radius: 0.3em;\n}\n\n/* Triangles pointing to the code */\n.prism-previewer.prism-previewer:after {\n border-top-color: hsl(0, 0, 95%);\n}\n\n.prism-previewer-flipped.prism-previewer-flipped.after {\n border-bottom-color: hsl(0, 0, 95%);\n}\n\n/* Background colour within the popup */\n.prism-previewer-angle.prism-previewer-angle:before,\n.prism-previewer-time.prism-previewer-time:before,\n.prism-previewer-easing.prism-previewer-easing {\n background: hsl(0, 0%, 100%);\n}\n\n/* For angle, this is the positive area (eg. 90deg will display one quadrant in this colour) */\n/* For time, this is the alternate colour */\n.prism-previewer-angle.prism-previewer-angle circle,\n.prism-previewer-time.prism-previewer-time circle {\n stroke: hsl(230, 8%, 24%);\n stroke-opacity: 1;\n}\n\n/* Stroke colours of the handle, direction point, and vector itself */\n.prism-previewer-easing.prism-previewer-easing circle,\n.prism-previewer-easing.prism-previewer-easing path,\n.prism-previewer-easing.prism-previewer-easing line {\n stroke: hsl(230, 8%, 24%);\n}\n\n/* Fill colour of the handle */\n.prism-previewer-easing.prism-previewer-easing circle {\n fill: transparent;\n}\n",
+ "path": "plate-ui/code-block-element.css",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\n/* eslint-disable unicorn/prefer-export-from */\n\nimport React, { useState } from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n useCodeBlockCombobox,\n useCodeBlockComboboxState,\n} from '@udecode/plate-code-block/react';\n// Prism must be imported before all language files\nimport Prism from 'prismjs';\n\nimport { Icons } from '@/components/icons';\n\nimport { Button } from './button';\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from './command';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\nimport 'prismjs/components/prism-antlr4.js';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-cmake.js';\nimport 'prismjs/components/prism-coffeescript.js';\nimport 'prismjs/components/prism-cpp.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-css.js';\nimport 'prismjs/components/prism-dart.js';\n// import 'prismjs/components/prism-django.js';\nimport 'prismjs/components/prism-docker.js';\n// import 'prismjs/components/prism-ejs.js';\nimport 'prismjs/components/prism-erlang.js';\nimport 'prismjs/components/prism-git.js';\nimport 'prismjs/components/prism-go.js';\nimport 'prismjs/components/prism-graphql.js';\nimport 'prismjs/components/prism-groovy.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-json.js';\nimport 'prismjs/components/prism-jsx.js';\nimport 'prismjs/components/prism-kotlin.js';\nimport 'prismjs/components/prism-latex.js';\nimport 'prismjs/components/prism-less.js';\nimport 'prismjs/components/prism-lua.js';\nimport 'prismjs/components/prism-makefile.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-matlab.js';\nimport 'prismjs/components/prism-mermaid.js';\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-perl.js';\n// import 'prismjs/components/prism-php.js';\nimport 'prismjs/components/prism-powershell.js';\nimport 'prismjs/components/prism-properties.js';\nimport 'prismjs/components/prism-protobuf.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-r.js';\nimport 'prismjs/components/prism-ruby.js';\nimport 'prismjs/components/prism-sass.js';\nimport 'prismjs/components/prism-scala.js';\nimport 'prismjs/components/prism-scheme.js';\nimport 'prismjs/components/prism-scss.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-tsx.js';\nimport 'prismjs/components/prism-typescript.js';\nimport 'prismjs/components/prism-wasm.js';\nimport 'prismjs/components/prism-yaml.js';\n\nexport { Prism };\n\nconst languages: { label: string; value: string }[] = [\n { label: 'Plain Text', value: 'text' },\n { label: 'Bash', value: 'bash' },\n { label: 'CSS', value: 'css' },\n { label: 'Git', value: 'git' },\n { label: 'GraphQL', value: 'graphql' },\n { label: 'HTML', value: 'html' },\n { label: 'JavaScript', value: 'javascript' },\n { label: 'JSON', value: 'json' },\n { label: 'JSX', value: 'jsx' },\n { label: 'Markdown', value: 'markdown' },\n { label: 'SQL', value: 'sql' },\n { label: 'SVG', value: 'svg' },\n { label: 'TSX', value: 'tsx' },\n { label: 'TypeScript', value: 'typescript' },\n { label: 'WebAssembly', value: 'wasm' },\n { label: 'ANTLR4', value: 'antlr4' },\n { label: 'C', value: 'c' },\n { label: 'CMake', value: 'cmake' },\n { label: 'CoffeeScript', value: 'coffeescript' },\n { label: 'C#', value: 'csharp' },\n { label: 'Dart', value: 'dart' },\n { label: 'Django', value: 'django' },\n { label: 'Docker', value: 'docker' },\n { label: 'EJS', value: 'ejs' },\n { label: 'Erlang', value: 'erlang' },\n { label: 'Go', value: 'go' },\n { label: 'Groovy', value: 'groovy' },\n { label: 'Java', value: 'java' },\n { label: 'Kotlin', value: 'kotlin' },\n { label: 'LaTeX', value: 'latex' },\n { label: 'Less', value: 'less' },\n { label: 'Lua', value: 'lua' },\n { label: 'Makefile', value: 'makefile' },\n { label: 'Markup', value: 'markup' },\n { label: 'MATLAB', value: 'matlab' },\n { label: 'Mermaid', value: 'mermaid' },\n { label: 'Objective-C', value: 'objectivec' },\n { label: 'Perl', value: 'perl' },\n { label: 'PHP', value: 'php' },\n { label: 'PowerShell', value: 'powershell' },\n { label: '.properties', value: 'properties' },\n { label: 'Protocol Buffers', value: 'protobuf' },\n { label: 'Python', value: 'python' },\n { label: 'R', value: 'r' },\n { label: 'Ruby', value: 'ruby' },\n { label: 'Sass (Sass)', value: 'sass' },\n // FIXME: Error with current scala grammar\n { label: 'Scala', value: 'scala' },\n { label: 'Scheme', value: 'scheme' },\n { label: 'Sass (Scss)', value: 'scss' },\n { label: 'Shell', value: 'shell' },\n { label: 'Swift', value: 'swift' },\n { label: 'XML', value: 'xml' },\n { label: 'YAML', value: 'yaml' },\n];\n\nexport function CodeBlockCombobox() {\n const state = useCodeBlockComboboxState();\n const { commandItemProps } = useCodeBlockCombobox(state);\n\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState('');\n\n if (state.readOnly) return null;\n\n const items = languages.filter(\n (language) =>\n !value ||\n language.label.toLowerCase().includes(value.toLowerCase()) ||\n language.value.toLowerCase().includes(value.toLowerCase())\n );\n\n return (\n \n \n \n {state.value\n ? languages.find((language) => language.value === state.value)\n ?.label\n : 'Plain Text'}\n \n \n \n \n \n setValue(value)}\n placeholder=\"Search language...\"\n />\n No language found. \n\n \n {items.map((language) => (\n {\n commandItemProps.onSelect(_value);\n setOpen(false);\n }}\n >\n \n {language.label}\n \n ))}\n \n \n \n \n );\n}\n",
+ "path": "plate-ui/code-block-combobox.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-block-element",
+ "registryDependencies": [
+ "command"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/code-leaf.json b/apps/www/public/r/styles/default/code-leaf.json
new file mode 100644
index 0000000000..8bad418f95
--- /dev/null
+++ b/apps/www/public/r/styles/default/code-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateLeaf } from '@udecode/plate-common/react';\n\nexport const CodeLeaf = withRef(\n ({ children, className, ...props }, ref) => {\n return (\n \n {children}
\n \n );\n }\n);\n",
+ "path": "plate-ui/code-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/code-line-element.json b/apps/www/public/r/styles/default/code-line-element.json
new file mode 100644
index 0000000000..eed0120cb4
--- /dev/null
+++ b/apps/www/public/r/styles/default/code-line-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\n\nexport const CodeLineElement = withRef((props, ref) => (\n \n));\n",
+ "path": "plate-ui/code-line-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-line-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/code-syntax-leaf.json b/apps/www/public/r/styles/default/code-syntax-leaf.json
new file mode 100644
index 0000000000..aee34edf07
--- /dev/null
+++ b/apps/www/public/r/styles/default/code-syntax-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-code-block"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { useCodeSyntaxLeaf } from '@udecode/plate-code-block/react';\nimport { PlateLeaf } from '@udecode/plate-common/react';\n\nexport const CodeSyntaxLeaf = withRef(\n ({ children, ...props }, ref) => {\n const { leaf } = props;\n\n const { tokenProps } = useCodeSyntaxLeaf({ leaf });\n\n return (\n \n {children} \n \n );\n }\n);\n",
+ "path": "plate-ui/code-syntax-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "code-syntax-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/color-dropdown-menu.json b/apps/www/public/r/styles/default/color-dropdown-menu.json
new file mode 100644
index 0000000000..efc5a7ad01
--- /dev/null
+++ b/apps/www/public/r/styles/default/color-dropdown-menu.json
@@ -0,0 +1,50 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport {\n useColorDropdownMenu,\n useColorDropdownMenuState,\n} from '@udecode/plate-font/react';\n\nimport { DEFAULT_COLORS, DEFAULT_CUSTOM_COLORS } from './color-constants';\nimport { ColorPicker } from './color-picker';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nexport type TColor = {\n isBrightColor: boolean;\n name: string;\n value: string;\n};\n\ntype ColorDropdownMenuProps = {\n nodeType: string;\n tooltip?: string;\n} & DropdownMenuProps;\n\nexport function ColorDropdownMenu({\n children,\n nodeType,\n tooltip,\n}: ColorDropdownMenuProps) {\n const state = useColorDropdownMenuState({\n closeOnSelect: true,\n colors: DEFAULT_COLORS,\n customColors: DEFAULT_CUSTOM_COLORS,\n nodeType,\n });\n\n const { buttonProps, menuProps } = useColorDropdownMenu(state);\n\n return (\n \n \n \n {children}\n \n \n\n \n \n \n \n );\n}\n",
+ "path": "plate-ui/color-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "export const DEFAULT_COLORS = [\n {\n isBrightColor: false,\n name: 'black',\n value: '#000000',\n },\n {\n isBrightColor: false,\n name: 'dark grey 4',\n value: '#434343',\n },\n {\n isBrightColor: false,\n name: 'dark grey 3',\n value: '#666666',\n },\n {\n isBrightColor: false,\n name: 'dark grey 2',\n value: '#999999',\n },\n {\n isBrightColor: false,\n name: 'dark grey 1',\n value: '#B7B7B7',\n },\n {\n isBrightColor: false,\n name: 'grey',\n value: '#CCCCCC',\n },\n {\n isBrightColor: false,\n name: 'light grey 1',\n value: '#D9D9D9',\n },\n {\n isBrightColor: true,\n name: 'light grey 2',\n value: '#EFEFEF',\n },\n {\n isBrightColor: true,\n name: 'light grey 3',\n value: '#F3F3F3',\n },\n {\n isBrightColor: true,\n name: 'white',\n value: '#FFFFFF',\n },\n {\n isBrightColor: false,\n name: 'red berry',\n value: '#980100',\n },\n {\n isBrightColor: false,\n name: 'red',\n value: '#FE0000',\n },\n {\n isBrightColor: false,\n name: 'orange',\n value: '#FE9900',\n },\n {\n isBrightColor: true,\n name: 'yellow',\n value: '#FEFF00',\n },\n {\n isBrightColor: false,\n name: 'green',\n value: '#00FF00',\n },\n {\n isBrightColor: false,\n name: 'cyan',\n value: '#00FFFF',\n },\n {\n isBrightColor: false,\n name: 'cornflower blue',\n value: '#4B85E8',\n },\n {\n isBrightColor: false,\n name: 'blue',\n value: '#1300FF',\n },\n {\n isBrightColor: false,\n name: 'purple',\n value: '#9900FF',\n },\n {\n isBrightColor: false,\n name: 'magenta',\n value: '#FF00FF',\n },\n\n {\n isBrightColor: false,\n name: 'light red berry 3',\n value: '#E6B8AF',\n },\n {\n isBrightColor: false,\n name: 'light red 3',\n value: '#F4CCCC',\n },\n {\n isBrightColor: true,\n name: 'light orange 3',\n value: '#FCE4CD',\n },\n {\n isBrightColor: true,\n name: 'light yellow 3',\n value: '#FFF2CC',\n },\n {\n isBrightColor: true,\n name: 'light green 3',\n value: '#D9EAD3',\n },\n {\n isBrightColor: false,\n name: 'light cyan 3',\n value: '#D0DFE3',\n },\n {\n isBrightColor: false,\n name: 'light cornflower blue 3',\n value: '#C9DAF8',\n },\n {\n isBrightColor: true,\n name: 'light blue 3',\n value: '#CFE1F3',\n },\n {\n isBrightColor: true,\n name: 'light purple 3',\n value: '#D9D2E9',\n },\n {\n isBrightColor: true,\n name: 'light magenta 3',\n value: '#EAD1DB',\n },\n\n {\n isBrightColor: false,\n name: 'light red berry 2',\n value: '#DC7E6B',\n },\n {\n isBrightColor: false,\n name: 'light red 2',\n value: '#EA9999',\n },\n {\n isBrightColor: false,\n name: 'light orange 2',\n value: '#F9CB9C',\n },\n {\n isBrightColor: true,\n name: 'light yellow 2',\n value: '#FFE598',\n },\n {\n isBrightColor: false,\n name: 'light green 2',\n value: '#B7D6A8',\n },\n {\n isBrightColor: false,\n name: 'light cyan 2',\n value: '#A1C4C9',\n },\n {\n isBrightColor: false,\n name: 'light cornflower blue 2',\n value: '#A4C2F4',\n },\n {\n isBrightColor: false,\n name: 'light blue 2',\n value: '#9FC5E8',\n },\n {\n isBrightColor: false,\n name: 'light purple 2',\n value: '#B5A7D5',\n },\n {\n isBrightColor: false,\n name: 'light magenta 2',\n value: '#D5A6BD',\n },\n\n {\n isBrightColor: false,\n name: 'light red berry 1',\n value: '#CC4125',\n },\n {\n isBrightColor: false,\n name: 'light red 1',\n value: '#E06666',\n },\n {\n isBrightColor: false,\n name: 'light orange 1',\n value: '#F6B26B',\n },\n {\n isBrightColor: false,\n name: 'light yellow 1',\n value: '#FFD966',\n },\n {\n isBrightColor: false,\n name: 'light green 1',\n value: '#93C47D',\n },\n {\n isBrightColor: false,\n name: 'light cyan 1',\n value: '#76A5AE',\n },\n {\n isBrightColor: false,\n name: 'light cornflower blue 1',\n value: '#6C9EEB',\n },\n {\n isBrightColor: false,\n name: 'light blue 1',\n value: '#6FA8DC',\n },\n {\n isBrightColor: false,\n name: 'light purple 1',\n value: '#8D7CC3',\n },\n {\n isBrightColor: false,\n name: 'light magenta 1',\n value: '#C27BA0',\n },\n\n {\n isBrightColor: false,\n name: 'dark red berry 1',\n value: '#A61B00',\n },\n {\n isBrightColor: false,\n name: 'dark red 1',\n value: '#CC0000',\n },\n {\n isBrightColor: false,\n name: 'dark orange 1',\n value: '#E59138',\n },\n {\n isBrightColor: false,\n name: 'dark yellow 1',\n value: '#F1C231',\n },\n {\n isBrightColor: false,\n name: 'dark green 1',\n value: '#6AA74F',\n },\n {\n isBrightColor: false,\n name: 'dark cyan 1',\n value: '#45818E',\n },\n {\n isBrightColor: false,\n name: 'dark cornflower blue 1',\n value: '#3B78D8',\n },\n {\n isBrightColor: false,\n name: 'dark blue 1',\n value: '#3E84C6',\n },\n {\n isBrightColor: false,\n name: 'dark purple 1',\n value: '#664EA6',\n },\n {\n isBrightColor: false,\n name: 'dark magenta 1',\n value: '#A64D78',\n },\n\n {\n isBrightColor: false,\n name: 'dark red berry 2',\n value: '#84200D',\n },\n {\n isBrightColor: false,\n name: 'dark red 2',\n value: '#990001',\n },\n {\n isBrightColor: false,\n name: 'dark orange 2',\n value: '#B45F05',\n },\n {\n isBrightColor: false,\n name: 'dark yellow 2',\n value: '#BF9002',\n },\n {\n isBrightColor: false,\n name: 'dark green 2',\n value: '#38761D',\n },\n {\n isBrightColor: false,\n name: 'dark cyan 2',\n value: '#124F5C',\n },\n {\n isBrightColor: false,\n name: 'dark cornflower blue 2',\n value: '#1155CB',\n },\n {\n isBrightColor: false,\n name: 'dark blue 2',\n value: '#0C5394',\n },\n {\n isBrightColor: false,\n name: 'dark purple 2',\n value: '#351C75',\n },\n {\n isBrightColor: false,\n name: 'dark magenta 2',\n value: '#741B47',\n },\n\n {\n isBrightColor: false,\n name: 'dark red berry 3',\n value: '#5B0F00',\n },\n {\n isBrightColor: false,\n name: 'dark red 3',\n value: '#660000',\n },\n {\n isBrightColor: false,\n name: 'dark orange 3',\n value: '#783F04',\n },\n {\n isBrightColor: false,\n name: 'dark yellow 3',\n value: '#7E6000',\n },\n {\n isBrightColor: false,\n name: 'dark green 3',\n value: '#274E12',\n },\n {\n isBrightColor: false,\n name: 'dark cyan 3',\n value: '#0D343D',\n },\n {\n isBrightColor: false,\n name: 'dark cornflower blue 3',\n value: '#1B4487',\n },\n {\n isBrightColor: false,\n name: 'dark blue 3',\n value: '#083763',\n },\n {\n isBrightColor: false,\n name: 'dark purple 3',\n value: '#1F124D',\n },\n {\n isBrightColor: false,\n name: 'dark magenta 3',\n value: '#4C1130',\n },\n];\n\nexport const DEFAULT_CUSTOM_COLORS = [\n {\n isBrightColor: false,\n name: 'dark orange 3',\n value: '#783F04',\n },\n {\n isBrightColor: false,\n name: 'dark grey 3',\n value: '#666666',\n },\n {\n isBrightColor: false,\n name: 'dark grey 2',\n value: '#999999',\n },\n {\n isBrightColor: false,\n name: 'light cornflower blue 1',\n value: '#6C9EEB',\n },\n {\n isBrightColor: false,\n name: 'dark magenta 3',\n value: '#4C1130',\n },\n];\n",
+ "path": "plate-ui/color-constants.ts",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { DropdownMenuItemProps } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@udecode/cn';\n\nimport { Icons } from '@/components/icons';\n\nimport type { TColor } from './color-dropdown-menu';\n\nimport { buttonVariants } from './button';\nimport { DropdownMenuItem } from './dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\n\ntype ColorDropdownMenuItemProps = {\n isBrightColor: boolean;\n isSelected: boolean;\n updateColor: (color: string) => void;\n value: string;\n name?: string;\n} & DropdownMenuItemProps;\n\nexport function ColorDropdownMenuItem({\n className,\n isBrightColor,\n isSelected,\n name,\n updateColor,\n value,\n ...props\n}: ColorDropdownMenuItemProps) {\n const content = (\n {\n e.preventDefault();\n updateColor(value);\n }}\n {...props}\n >\n {isSelected ? : null}\n \n );\n\n return name ? (\n \n {content} \n {name} \n \n ) : (\n content\n );\n}\n\ntype ColorDropdownMenuItemsProps = {\n colors: TColor[];\n updateColor: (color: string) => void;\n color?: string;\n} & React.HTMLAttributes;\n\nexport function ColorDropdownMenuItems({\n className,\n color,\n colors,\n updateColor,\n ...props\n}: ColorDropdownMenuItemsProps) {\n return (\n \n {colors.map(({ isBrightColor, name, value }) => (\n \n ))}\n
\n );\n}\n",
+ "path": "plate-ui/color-dropdown-menu-items.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { useComposedRef } from '@udecode/plate-common/react';\nimport { useColorInput } from '@udecode/plate-font/react';\n\nexport const ColorInput = withRef<'input'>(\n ({ children, className, value = '#000000', ...props }, ref) => {\n const { childProps, inputRef } = useColorInput();\n\n return (\n \n {React.Children.map(children, (child) => {\n if (!child) return child;\n\n return React.cloneElement(child as React.ReactElement, childProps);\n })}\n\n \n
\n );\n }\n);\n",
+ "path": "plate-ui/color-input.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\n\nimport type { TColor } from './color-dropdown-menu';\n\nimport { buttonVariants } from './button';\nimport { ColorDropdownMenuItems } from './color-dropdown-menu-items';\nimport { ColorsCustom } from './colors-custom';\nimport { DropdownMenuItem } from './dropdown-menu';\nimport { Separator } from './separator';\n\nexport const ColorPickerContent = withRef<\n 'div',\n {\n clearColor: () => void;\n colors: TColor[];\n customColors: TColor[];\n updateColor: (color: string) => void;\n updateCustomColor: (color: string) => void;\n color?: string;\n }\n>(\n (\n {\n className,\n clearColor,\n color,\n colors,\n customColors,\n updateColor,\n updateCustomColor,\n ...props\n },\n ref\n ) => {\n return (\n \n \n\n \n\n \n {color && (\n \n Clear\n \n )}\n
\n );\n }\n);\n\nexport const ColorPicker = React.memo(\n ColorPickerContent,\n (prev, next) =>\n prev.color === next.color &&\n prev.colors === next.colors &&\n prev.customColors === next.customColors\n);\n",
+ "path": "plate-ui/color-picker.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport {\n useColorsCustom,\n useColorsCustomState,\n} from '@udecode/plate-font/react';\n\nimport type { TColor } from './color-dropdown-menu';\n\nimport { buttonVariants } from './button';\nimport { ColorDropdownMenuItems } from './color-dropdown-menu-items';\nimport { ColorInput } from './color-input';\nimport { DropdownMenuItem } from './dropdown-menu';\n\ntype ColorsCustomProps = {\n colors: TColor[];\n customColors: TColor[];\n updateColor: (color: string) => void;\n updateCustomColor: (color: string) => void;\n color?: string;\n};\n\nexport function ColorsCustom({\n color,\n colors,\n customColors,\n updateColor,\n updateCustomColor,\n}: ColorsCustomProps) {\n const state = useColorsCustomState({\n color,\n colors,\n customColors,\n updateCustomColor,\n });\n const { inputProps, menuItemProps } = useColorsCustom(state);\n\n return (\n \n \n \n CUSTOM\n \n \n\n \n
\n );\n}\n",
+ "path": "plate-ui/colors-custom.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "color-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar",
+ "separator",
+ "button",
+ "tooltip"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/column-element.json b/apps/www/public/r/styles/default/column-element.json
new file mode 100644
index 0000000000..30c842633f
--- /dev/null
+++ b/apps/www/public/r/styles/default/column-element.json
@@ -0,0 +1,25 @@
+{
+ "dependencies": [
+ "@udecode/plate-layout"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { TColumnElement } from '@udecode/plate-layout';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement, useElement, withHOC } from '@udecode/plate-common/react';\nimport { ResizableProvider } from '@udecode/plate-resizable';\nimport { useReadOnly } from 'slate-react';\n\nexport const ColumnElement = withHOC(\n ResizableProvider,\n withRef(({ children, className, ...props }, ref) => {\n const readOnly = useReadOnly();\n const { width } = useElement();\n\n return (\n \n {children}\n \n );\n })\n);\n",
+ "path": "plate-ui/column-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import React from 'react';\n\nimport type { TColumnElement } from '@udecode/plate-layout';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n PlateElement,\n useElement,\n useRemoveNodeButton,\n} from '@udecode/plate-common/react';\nimport {\n ColumnItemPlugin,\n useColumnState,\n useDebouncePopoverOpen,\n} from '@udecode/plate-layout/react';\nimport { useReadOnly } from 'slate-react';\n\nimport { Icons } from '@/components/icons';\n\nimport { Button } from './button';\nimport { Popover, PopoverAnchor, PopoverContent } from './popover';\nimport { Separator } from './separator';\n\nexport const ColumnGroupElement = withRef(\n ({ children, className, ...props }, ref) => {\n return (\n \n \n {children}
\n \n \n );\n }\n);\n\nexport function ColumnFloatingToolbar({ children }: React.PropsWithChildren) {\n const readOnly = useReadOnly();\n\n const {\n setDoubleColumn,\n setDoubleSideDoubleColumn,\n setLeftSideDoubleColumn,\n setRightSideDoubleColumn,\n setThreeColumn,\n } = useColumnState();\n\n const element = useElement(ColumnItemPlugin.key);\n\n const { props: buttonProps } = useRemoveNodeButton({ element });\n\n const isOpen = useDebouncePopoverOpen();\n\n if (readOnly) return <>{children}>;\n\n return (\n \n {children} \n e.preventDefault()}\n align=\"center\"\n side=\"top\"\n sideOffset={10}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n
\n \n \n );\n}\n",
+ "path": "plate-ui/column-group-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "column-element",
+ "registryDependencies": [
+ "command",
+ "resizable"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/command.json b/apps/www/public/r/styles/default/command.json
new file mode 100644
index 0000000000..27e905e3d3
--- /dev/null
+++ b/apps/www/public/r/styles/default/command.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "cmdk"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\n\nimport type { DialogProps } from '@radix-ui/react-dialog';\n\nimport { cn, createPrimitiveElement, withCn, withRef } from '@udecode/cn';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { Icons } from '@/components/icons';\n\nimport { Dialog, DialogContent } from './dialog';\n\nexport const Command = withCn(\n CommandPrimitive,\n 'flex size-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground'\n);\n\nexport function CommandDialog({ children, ...props }: DialogProps) {\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nexport const CommandInput = withRef(\n ({ className, ...props }, ref) => (\n \n \n \n
\n )\n);\n\nexport const CommandList = withCn(\n CommandPrimitive.List,\n 'max-h-[500px] overflow-y-auto overflow-x-hidden'\n);\n\nexport const CommandEmpty = withCn(\n CommandPrimitive.Empty,\n 'py-6 text-center text-sm'\n);\n\nexport const CommandGroup = withCn(\n CommandPrimitive.Group,\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground'\n);\n\nexport const CommandSeparator = withCn(\n CommandPrimitive.Separator,\n '-mx-1 h-px bg-border'\n);\n\nexport const CommandItem = withCn(\n CommandPrimitive.Item,\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50'\n);\n\nexport const CommandShortcut = withCn(\n createPrimitiveElement('span'),\n 'ml-auto text-xs tracking-widest text-muted-foreground'\n);\n",
+ "path": "plate-ui/command.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "command",
+ "registryDependencies": [
+ "dialog"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/comment-leaf.json b/apps/www/public/r/styles/default/comment-leaf.json
new file mode 100644
index 0000000000..744474f69c
--- /dev/null
+++ b/apps/www/public/r/styles/default/comment-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-comments"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { TCommentText } from '@udecode/plate-comments';\n\nimport { cn } from '@udecode/cn';\nimport {\n useCommentLeaf,\n useCommentLeafState,\n} from '@udecode/plate-comments/react';\nimport { type PlateLeafProps, PlateLeaf } from '@udecode/plate-common/react';\n\nexport function CommentLeaf({\n className,\n ...props\n}: PlateLeafProps) {\n const { children, leaf, nodeProps } = props;\n\n const state = useCommentLeafState({ leaf });\n const { props: rootProps } = useCommentLeaf(state);\n\n if (!state.commentCount) return <>{children}>;\n\n let aboveChildren = <>{children}>;\n\n if (!state.isActive) {\n for (let i = 1; i < state.commentCount; i++) {\n aboveChildren = {aboveChildren} ;\n }\n }\n\n return (\n \n {aboveChildren}\n \n );\n}\n",
+ "path": "plate-ui/comment-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comment-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/comment-toolbar-button.json b/apps/www/public/r/styles/default/comment-toolbar-button.json
new file mode 100644
index 0000000000..eac032483c
--- /dev/null
+++ b/apps/www/public/r/styles/default/comment-toolbar-button.json
@@ -0,0 +1,14 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { useCommentAddButton } from '@udecode/plate-comments/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport function CommentToolbarButton() {\n const { hidden, props } = useCommentAddButton();\n\n if (hidden) return null;\n\n return (\n \n \n \n );\n}\n",
+ "path": "plate-ui/comment-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comment-toolbar-button",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/comments-popover.json b/apps/www/public/r/styles/default/comments-popover.json
new file mode 100644
index 0000000000..1886c715e0
--- /dev/null
+++ b/apps/www/public/r/styles/default/comments-popover.json
@@ -0,0 +1,61 @@
+{
+ "dependencies": [
+ "@udecode/plate-comments"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n CommentProvider,\n CommentsPositioner,\n SCOPE_ACTIVE_COMMENT,\n useFloatingCommentsContentState,\n useFloatingCommentsState,\n} from '@udecode/plate-comments/react';\nimport { PortalBody } from '@udecode/plate-common/react';\n\nimport { CommentCreateForm } from './comment-create-form';\nimport { CommentItem } from './comment-item';\nimport { CommentReplyItems } from './comment-reply-items';\nimport { popoverVariants } from './popover';\n\nexport type FloatingCommentsContentProps = {\n disableForm?: boolean;\n};\n\nexport function CommentsPopoverContent(props: FloatingCommentsContentProps) {\n const { disableForm } = props;\n\n const { activeCommentId, hasNoComment, myUserId, ref } =\n useFloatingCommentsContentState();\n\n return (\n \n );\n}\n\nexport function CommentsPopover() {\n const { activeCommentId, loaded } = useFloatingCommentsState();\n\n if (!loaded || !activeCommentId) return null;\n\n return (\n \n \n \n \n \n );\n}\n",
+ "path": "plate-ui/comments-popover.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { CommentsPlugin } from '@udecode/plate-comments/react';\nimport { useEditorPlugin } from '@udecode/plate-common/react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from './avatar';\n\nexport function CommentAvatar({ userId }: { userId: string | null }) {\n const { useOption } = useEditorPlugin(CommentsPlugin);\n const user = useOption('userById', userId);\n\n if (!user) return null;\n\n return (\n \n \n {user.name?.[0]} \n \n );\n}\n",
+ "path": "plate-ui/comment-avatar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n CommentNewSubmitButton,\n CommentNewTextarea,\n CommentsPlugin,\n} from '@udecode/plate-comments/react';\nimport { useEditorPlugin } from '@udecode/plate-common/react';\n\nimport { buttonVariants } from './button';\nimport { CommentAvatar } from './comment-avatar';\nimport { inputVariants } from './input';\n\nexport function CommentCreateForm() {\n const { useOption } = useEditorPlugin(CommentsPlugin);\n\n const myUserId = useOption('myUserId');\n\n return (\n \n
\n\n
\n \n\n \n Comment\n \n
\n
\n );\n}\n",
+ "path": "plate-ui/comment-create-form.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport {\n CommentProvider,\n CommentsPlugin,\n useCommentItemContentState,\n} from '@udecode/plate-comments/react';\nimport { useEditorPlugin } from '@udecode/plate-common/react';\nimport { formatDistance } from 'date-fns';\n\nimport { CommentAvatar } from './comment-avatar';\nimport { CommentMoreDropdown } from './comment-more-dropdown';\nimport { CommentResolveButton } from './comment-resolve-button';\nimport { CommentValue } from './comment-value';\n\ntype PlateCommentProps = {\n commentId: string;\n};\n\nfunction CommentItemContent() {\n const {\n comment,\n commentText,\n editingValue,\n isMyComment,\n isReplyComment,\n user,\n } = useCommentItemContentState();\n\n return (\n \n
\n
\n\n
{user?.name} \n\n
\n {formatDistance(comment.createdAt, Date.now())} ago\n
\n\n {isMyComment && (\n
\n {isReplyComment ? null : }\n\n \n
\n )}\n
\n\n
\n {editingValue ? (\n
\n ) : (\n
{commentText}
\n )}\n
\n
\n );\n}\n\nexport function CommentItem({ commentId }: PlateCommentProps) {\n const { useOption } = useEditorPlugin(CommentsPlugin);\n const comment = useOption('commentById', commentId);\n\n if (!comment) return null;\n\n return (\n \n );\n}\n",
+ "path": "plate-ui/comment-item.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n useCommentDeleteButton,\n useCommentDeleteButtonState,\n useCommentEditButton,\n useCommentEditButtonState,\n} from '@udecode/plate-comments/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { Button } from './button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from './dropdown-menu';\n\nexport function CommentMoreDropdown() {\n const editButtonState = useCommentEditButtonState();\n const { props: editProps } = useCommentEditButton(editButtonState);\n const deleteButtonState = useCommentDeleteButtonState();\n const { props: deleteProps } = useCommentDeleteButton(deleteButtonState);\n\n return (\n \n \n \n \n \n \n \n Edit comment \n Delete comment \n \n \n );\n}\n",
+ "path": "plate-ui/comment-more-dropdown.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport {\n SCOPE_ACTIVE_COMMENT,\n useCommentReplies,\n} from '@udecode/plate-comments/react';\n\nimport { CommentItem } from './comment-item';\n\nexport function CommentReplyItems() {\n const commentReplies = useCommentReplies(SCOPE_ACTIVE_COMMENT);\n\n return (\n <>\n {Object.keys(commentReplies).map((id) => (\n \n ))}\n >\n );\n}\n",
+ "path": "plate-ui/comment-reply-items.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n CommentResolveButton as CommentResolveButtonPrimitive,\n useComment,\n} from '@udecode/plate-comments/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { buttonVariants } from './button';\n\nexport function CommentResolveButton() {\n const comment = useComment()!;\n\n return (\n \n {comment.isResolved ? (\n \n ) : (\n \n )}\n \n );\n}\n",
+ "path": "plate-ui/comment-resolve-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n CommentEditActions,\n CommentEditTextarea,\n} from '@udecode/plate-comments/react';\n\nimport { buttonVariants } from './button';\nimport { inputVariants } from './input';\n\nexport function CommentValue() {\n return (\n \n
\n\n
\n \n Cancel\n \n\n \n Save\n \n
\n
\n );\n}\n",
+ "path": "plate-ui/comment-value.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "comments-popover",
+ "registryDependencies": [
+ "popover",
+ "avatar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/cursor-overlay.json b/apps/www/public/r/styles/default/cursor-overlay.json
new file mode 100644
index 0000000000..353b337305
--- /dev/null
+++ b/apps/www/public/r/styles/default/cursor-overlay.json
@@ -0,0 +1,14 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport {\n createPlatePlugin,\n findEventRange,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport {\n type CursorData,\n type CursorOverlayProps,\n type CursorProps,\n type CursorState,\n CursorOverlay as CursorOverlayPrimitive,\n} from '@udecode/plate-cursor';\nimport { DndPlugin } from '@udecode/plate-dnd';\n\nexport function Cursor({\n caretPosition,\n classNames,\n data,\n disableCaret,\n disableSelection,\n selectionRects,\n}: CursorProps) {\n const { style, selectionStyle = style } = data ?? ({} as CursorData);\n\n return (\n <>\n {!disableSelection &&\n selectionRects.map((position, i) => (\n
\n ))}\n {!disableCaret && caretPosition && (\n
\n )}\n >\n );\n}\n\nexport function CursorOverlay({ cursors, ...props }: CursorOverlayProps) {\n const editor = useEditorRef();\n const dynamicCursors = editor.useOption(DragOverCursorPlugin, 'cursors');\n\n const allCursors = { ...cursors, ...dynamicCursors };\n\n return (\n \n );\n}\n\nconst DragOverCursorPlugin = createPlatePlugin({\n key: 'dragOverCursor',\n options: { cursors: {} as Record> },\n handlers: {\n onDragEnd: ({ editor, plugin }) => {\n editor.setOption(plugin, 'cursors', {});\n },\n onDragLeave: ({ editor, plugin }) => {\n editor.setOption(plugin, 'cursors', {});\n },\n onDragOver: ({ editor, event, plugin }) => {\n if (editor.getOptions(DndPlugin).isDragging) return;\n\n const range = findEventRange(editor, event);\n\n if (!range) return;\n\n editor.setOption(plugin, 'cursors', {\n drag: {\n key: 'drag',\n data: {\n style: {\n backgroundColor: 'hsl(222.2 47.4% 11.2%)',\n width: 3,\n },\n },\n selection: range,\n },\n });\n },\n onDrop: ({ editor, plugin }) => {\n editor.setOption(plugin, 'cursors', {});\n },\n },\n});\n",
+ "path": "plate-ui/cursor-overlay.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "cursor-overlay",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/date-element.json b/apps/www/public/r/styles/default/date-element.json
new file mode 100644
index 0000000000..c032708515
--- /dev/null
+++ b/apps/www/public/r/styles/default/date-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-date"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { setNodes } from '@udecode/plate-common';\nimport { PlateElement, findNodePath } from '@udecode/plate-common/react';\n\nimport { Calendar } from './calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\nexport const DateElement = withRef(\n ({ children, className, ...props }, ref) => {\n const { editor, element } = props;\n\n return (\n \n \n \n \n {element.date ? (\n (() => {\n const today = new Date();\n const elementDate = new Date(element.date as string);\n const isToday =\n elementDate.getDate() === today.getDate() &&\n elementDate.getMonth() === today.getMonth() &&\n elementDate.getFullYear() === today.getFullYear();\n\n const isYesterday =\n new Date(\n today.setDate(today.getDate() - 1)\n ).toDateString() === elementDate.toDateString();\n const isTomorrow =\n new Date(\n today.setDate(today.getDate() + 2)\n ).toDateString() === elementDate.toDateString();\n\n if (isToday) return 'Today';\n if (isYesterday) return 'Yesterday';\n if (isTomorrow) return 'Tomorrow';\n\n return elementDate.toLocaleDateString(undefined, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n })()\n ) : (\n Pick a date \n )}\n \n \n \n {\n if (!date) return;\n\n setNodes(\n editor,\n { date: date.toDateString() },\n { at: findNodePath(editor, element) }\n );\n }}\n mode=\"single\"\n initialFocus\n />\n \n \n {children}\n \n );\n }\n);\n",
+ "path": "plate-ui/date-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "date-element",
+ "registryDependencies": [
+ "calendar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/dialog.json b/apps/www/public/r/styles/default/dialog.json
new file mode 100644
index 0000000000..5cdad6293d
--- /dev/null
+++ b/apps/www/public/r/styles/default/dialog.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-dialog"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { cn, createPrimitiveElement, withCn, withRef } from '@udecode/cn';\n\nimport { Icons } from '@/components/icons';\n\nexport const Dialog = DialogPrimitive.Root;\n\nexport const DialogTrigger = DialogPrimitive.Trigger;\n\nexport const DialogPortal = DialogPrimitive.Portal;\n\nexport const DialogClose = DialogPrimitive.Close;\n\nexport const DialogOverlay = withCn(\n DialogPrimitive.Overlay,\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'\n);\n\nexport const DialogContent = withRef(\n ({ children, className, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close \n \n \n \n )\n);\n\nexport const DialogHeader = withCn(\n createPrimitiveElement('div'),\n 'flex flex-col space-y-1.5 text-center sm:text-left'\n);\n\nexport const DialogFooter = withCn(\n createPrimitiveElement('div'),\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2'\n);\n\nexport const DialogTitle = withCn(\n DialogPrimitive.Title,\n 'text-lg font-semibold leading-none tracking-tight'\n);\n\nexport const DialogDescription = withCn(\n DialogPrimitive.Description,\n 'text-sm text-muted-foreground'\n);\n",
+ "path": "plate-ui/dialog.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "dialog",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/draggable.json b/apps/www/public/r/styles/default/draggable.json
new file mode 100644
index 0000000000..2cad99ce70
--- /dev/null
+++ b/apps/www/public/r/styles/default/draggable.json
@@ -0,0 +1,26 @@
+{
+ "dependencies": [
+ "@udecode/plate-dnd",
+ "react-dnd",
+ "react-dnd-html5-backend"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { ClassNames, TEditor } from '@udecode/plate-common';\nimport type { DropTargetMonitor } from 'react-dnd';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n type PlateElementProps,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport {\n type DragItemNode,\n useDraggable,\n useDraggableState,\n} from '@udecode/plate-dnd';\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipPortal,\n TooltipTrigger,\n} from './tooltip';\n\nexport interface DraggableProps\n extends PlateElementProps,\n ClassNames<{\n /** Block. */\n block: string;\n\n /** Block and gutter. */\n blockAndGutter: string;\n\n /** Block toolbar in the gutter. */\n blockToolbar: string;\n\n /**\n * Block toolbar wrapper in the gutter left. It has the height of a line\n * of the block.\n */\n blockToolbarWrapper: string;\n\n blockWrapper: string;\n\n /** Button to dnd the block, in the block toolbar. */\n dragHandle: string;\n\n /** Icon of the drag button, in the drag icon. */\n dragIcon: string;\n\n /** Show a dropline above or below the block when dragging a block. */\n dropLine: string;\n\n /** Gutter at the left side of the editor. It has the height of the block */\n gutterLeft: string;\n }> {\n /**\n * Intercepts the drop handling. If `false` is returned, the default drop\n * behavior is called after. If `true` is returned, the default behavior is\n * not called.\n */\n onDropHandler?: (\n editor: TEditor,\n props: {\n id: string;\n dragItem: DragItemNode;\n monitor: DropTargetMonitor;\n nodeRef: any;\n }\n ) => boolean;\n}\n\nconst DragHandle = () => {\n const editor = useEditorRef();\n\n return (\n \n \n {\n event.stopPropagation();\n event.preventDefault();\n\n // if (element.id) {\n // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);\n // api.blockContextMenu.show(editor.id, event as any);\n // }\n }}\n onMouseDown={() => {\n editor\n .getApi(BlockSelectionPlugin)\n .blockSelection.resetSelectedIds();\n }}\n />\n \n \n Drag to move \n \n \n );\n};\n\nexport const Draggable = withRef<'div', DraggableProps>(\n ({ className, classNames = {}, onDropHandler, ...props }, ref) => {\n const { children, element } = props;\n\n const state = useDraggableState({ element, onDropHandler });\n const { dropLine, isDragging, isHovered } = state;\n const {\n droplineProps,\n groupProps,\n gutterLeftProps,\n previewRef,\n handleRef,\n } = useDraggable(state);\n\n return (\n \n
\n
\n
\n
\n {isHovered && }\n
\n
\n
\n
\n\n
\n {children}\n\n {!!dropLine && (\n
\n )}\n
\n
\n );\n }\n);\n",
+ "path": "plate-ui/draggable.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import type { FC } from 'react';\n\nimport { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport { CodeBlockPlugin } from '@udecode/plate-code-block/react';\nimport {\n ParagraphPlugin,\n createNodesWithHOC,\n} from '@udecode/plate-common/react';\nimport {\n type WithDraggableOptions,\n withDraggable as withDraggablePrimitive,\n} from '@udecode/plate-dnd';\nimport { ExcalidrawPlugin } from '@udecode/plate-excalidraw/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\nimport { ColumnPlugin } from '@udecode/plate-layout/react';\nimport {\n BulletedListPlugin,\n NumberedListPlugin,\n} from '@udecode/plate-list/react';\nimport {\n ImagePlugin,\n MediaEmbedPlugin,\n PlaceholderPlugin,\n} from '@udecode/plate-media/react';\nimport { TablePlugin } from '@udecode/plate-table/react';\nimport { TogglePlugin } from '@udecode/plate-toggle/react';\n\nimport { type DraggableProps, Draggable } from './draggable';\n\nexport const withDraggable = (\n Component: FC,\n options?: WithDraggableOptions<\n Partial>\n >\n) =>\n withDraggablePrimitive(Draggable, Component, options as any);\n\nexport const withDraggablesPrimitive = createNodesWithHOC(withDraggable);\n\nexport const withDraggables = (components: any) => {\n return withDraggablesPrimitive(components, [\n {\n keys: [\n ParagraphPlugin.key,\n BulletedListPlugin.key,\n NumberedListPlugin.key,\n ],\n level: 0,\n },\n {\n key: HEADING_KEYS.h1,\n draggableProps: {\n classNames: {\n blockToolbarWrapper: 'h-[1.3em]',\n gutterLeft: 'px-0 pb-1 text-[1.875em]',\n },\n },\n },\n {\n key: HEADING_KEYS.h2,\n draggableProps: {\n classNames: {\n blockToolbarWrapper: 'h-[1.3em]',\n gutterLeft: 'px-0 pb-1 text-[1.5em]',\n },\n },\n },\n {\n key: HEADING_KEYS.h3,\n draggableProps: {\n classNames: {\n blockToolbarWrapper: 'h-[1.3em]',\n gutterLeft: 'pt-[2px] px-0 pb-1 text-[1.25em]',\n },\n },\n },\n {\n keys: [HEADING_KEYS.h4, HEADING_KEYS.h5],\n draggableProps: {\n classNames: {\n blockToolbarWrapper: 'h-[1.3em]',\n gutterLeft: 'pt-[3px] px-0 pb-0 text-[1.1em]',\n },\n },\n },\n {\n keys: [ParagraphPlugin.key],\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-[3px] px-0 pb-0',\n },\n },\n },\n {\n keys: [HEADING_KEYS.h6, BulletedListPlugin.key, NumberedListPlugin.key],\n draggableProps: {\n classNames: {\n gutterLeft: 'px-0 pb-0',\n },\n },\n },\n {\n key: BlockquotePlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'px-0 pb-0',\n },\n },\n },\n {\n key: CodeBlockPlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-6 px-0 pb-0',\n },\n },\n },\n {\n key: ImagePlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-0 px-0 pb-0',\n },\n },\n },\n {\n key: MediaEmbedPlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-0 px-0 pb-0',\n },\n },\n },\n {\n key: ExcalidrawPlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-0 px-0 pb-0',\n },\n },\n },\n {\n key: TogglePlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-0 px-0 pb-0',\n },\n },\n },\n {\n key: ColumnPlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-0 px-0 pb-0',\n },\n },\n },\n {\n key: PlaceholderPlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-3 px-0 pb-0',\n },\n },\n },\n {\n key: TablePlugin.key,\n draggableProps: {\n classNames: {\n gutterLeft: 'pt-3 px-0 pb-0',\n },\n },\n },\n ]);\n};\n",
+ "path": "plate-ui/with-draggables.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "draggable",
+ "registryDependencies": [
+ "tooltip"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/dropdown-menu.json b/apps/www/public/r/styles/default/dropdown-menu.json
new file mode 100644
index 0000000000..a402ada7cd
--- /dev/null
+++ b/apps/www/public/r/styles/default/dropdown-menu.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-dropdown-menu"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport {\n cn,\n createPrimitiveElement,\n withCn,\n withProps,\n withRef,\n withVariants,\n} from '@udecode/cn';\nimport { cva } from 'class-variance-authority';\n\nimport { Icons } from '@/components/icons';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport const DropdownMenuSubTrigger = withRef<\n typeof DropdownMenuPrimitive.SubTrigger,\n {\n inset?: boolean;\n }\n>(({ children, className, inset, ...props }, ref) => (\n \n {children}\n \n \n));\n\nexport const DropdownMenuSubContent = withCn(\n DropdownMenuPrimitive.SubContent,\n 'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'\n);\n\nconst DropdownMenuContentVariants = withProps(DropdownMenuPrimitive.Content, {\n className: cn(\n 'z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2'\n ),\n sideOffset: 4,\n});\n\nexport const DropdownMenuContent = withRef<\n typeof DropdownMenuPrimitive.Content\n>(({ ...props }, ref) => (\n \n \n \n));\n\nconst menuItemVariants = cva(\n cn(\n 'relative flex h-9 cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50'\n ),\n {\n variants: {\n inset: {\n true: 'pl-8',\n },\n },\n }\n);\n\nexport const DropdownMenuItem = withVariants(\n DropdownMenuPrimitive.Item,\n menuItemVariants,\n ['inset']\n);\n\nexport const DropdownMenuCheckboxItem = withRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n>(({ children, className, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\n\nexport const DropdownMenuRadioItem = withRef<\n typeof DropdownMenuPrimitive.RadioItem,\n {\n hideIcon?: boolean;\n }\n>(({ children, className, hideIcon, ...props }, ref) => (\n \n {!hideIcon && (\n \n \n \n \n \n )}\n {children}\n \n));\n\nconst dropdownMenuLabelVariants = cva(\n cn('select-none px-2 py-1.5 text-sm font-semibold'),\n {\n variants: {\n inset: {\n true: 'pl-8',\n },\n },\n }\n);\n\nexport const DropdownMenuLabel = withVariants(\n DropdownMenuPrimitive.Label,\n dropdownMenuLabelVariants,\n ['inset']\n);\n\nexport const DropdownMenuSeparator = withCn(\n DropdownMenuPrimitive.Separator,\n '-mx-1 my-1 h-px bg-muted'\n);\n\nexport const DropdownMenuShortcut = withCn(\n createPrimitiveElement('span'),\n 'ml-auto text-xs tracking-widest opacity-60'\n);\n\nexport const useOpenState = () => {\n const [open, setOpen] = useState(false);\n\n const onOpenChange = useCallback(\n (_value = !open) => {\n setOpen(_value);\n },\n [open]\n );\n\n return {\n open,\n onOpenChange,\n };\n};\n",
+ "path": "plate-ui/dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "dropdown-menu",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/editor.json b/apps/www/public/r/styles/default/editor.json
new file mode 100644
index 0000000000..fe33ac37e5
--- /dev/null
+++ b/apps/www/public/r/styles/default/editor.json
@@ -0,0 +1,14 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { PlateContentProps } from '@udecode/plate-common/react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@udecode/cn';\nimport { PlateContent } from '@udecode/plate-common/react';\nimport { cva } from 'class-variance-authority';\n\nconst editorVariants = cva(\n cn(\n 'relative overflow-x-auto whitespace-pre-wrap break-words text-foreground',\n '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',\n '[&_[data-slate-placeholder]]:text-muted-foreground [&_[data-slate-placeholder]]:!opacity-100',\n '[&_[data-slate-placeholder]]:top-[auto_!important]',\n '[&_strong]:font-bold'\n ),\n {\n defaultVariants: {\n focusRing: true,\n size: 'sm',\n variant: 'outline',\n },\n variants: {\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n },\n focusRing: {\n false: '',\n true: 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n },\n focused: {\n true: 'ring-2 ring-ring ring-offset-2',\n },\n size: {\n md: 'text-base',\n sm: 'text-sm',\n },\n variant: {\n ghost: '',\n outline: 'border border-input',\n },\n },\n }\n);\n\nexport type EditorProps = PlateContentProps &\n VariantProps;\n\nconst Editor = React.forwardRef(\n (\n {\n className,\n disabled,\n focusRing,\n focused,\n readOnly,\n size,\n variant,\n ...props\n },\n ref\n ) => {\n return (\n \n );\n }\n);\nEditor.displayName = 'Editor';\n\nexport { Editor };\n",
+ "path": "plate-ui/editor.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "editor",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/emoji-dropdown-menu.json b/apps/www/public/r/styles/default/emoji-dropdown-menu.json
new file mode 100644
index 0000000000..e67936adb2
--- /dev/null
+++ b/apps/www/public/r/styles/default/emoji-dropdown-menu.json
@@ -0,0 +1,66 @@
+{
+ "dependencies": [
+ "@radix-ui/react-popover"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport {\n type EmojiDropdownMenuOptions,\n useEmojiDropdownMenuState,\n} from '@udecode/plate-emoji/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { emojiCategoryIcons, emojiSearchIcons } from './emoji-icons';\nimport { EmojiPicker } from './emoji-picker';\nimport { EmojiToolbarDropdown } from './emoji-toolbar-dropdown';\nimport { ToolbarButton } from './toolbar';\n\ntype EmojiDropdownMenuProps = {\n options?: EmojiDropdownMenuOptions;\n} & React.ComponentPropsWithoutRef;\n\nexport function EmojiDropdownMenu({\n options,\n ...props\n}: EmojiDropdownMenuProps) {\n const { emojiPickerState, isOpen, setIsOpen } =\n useEmojiDropdownMenuState(options);\n\n return (\n \n \n \n }\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n >\n \n \n );\n}\n",
+ "path": "plate-ui/emoji-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import React, { type ReactNode } from 'react';\n\nimport * as Popover from '@radix-ui/react-popover';\n\ntype EmojiToolbarDropdownProps = {\n children: ReactNode;\n control: ReactNode;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n};\n\nexport function EmojiToolbarDropdown({\n children,\n control,\n isOpen,\n setIsOpen,\n}: EmojiToolbarDropdownProps) {\n return (\n \n {control} \n\n \n {children} \n \n \n );\n}\n",
+ "path": "plate-ui/emoji-toolbar-dropdown.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import type React from 'react';\n\nimport type { EmojiCategoryList } from '@udecode/plate-emoji';\n\nimport {\n AppleIcon,\n ClockIcon,\n CompassIcon,\n DeleteIcon,\n FlagIcon,\n LeafIcon,\n LightbulbIcon,\n MusicIcon,\n SearchIcon,\n SmileIcon,\n StarIcon,\n} from 'lucide-react';\n\nexport const emojiCategoryIcons: Record<\n EmojiCategoryList,\n { outline: React.ReactElement; solid: React.ReactElement }\n> = {\n activity: {\n outline: (\n \n \n \n \n \n \n ),\n // Needed to add another solid variant - outline will be used for now\n solid: (\n \n \n \n \n \n \n ),\n },\n\n custom: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n flags: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n foods: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n frequent: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n nature: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n objects: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n people: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n places: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n\n symbols: {\n outline: ,\n // Needed to add another solid variant - outline will be used for now\n solid: ,\n },\n};\n\nexport const emojiSearchIcons = {\n delete: ,\n\n loupe: ,\n};\n",
+ "path": "plate-ui/emoji-icons.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import React from 'react';\n\nimport type { UseEmojiPickerType } from '@udecode/plate-emoji/react';\n\nimport { cn } from '@udecode/cn';\nimport { EmojiSettings } from '@udecode/plate-emoji';\n\nimport { EmojiPickerContent } from './emoji-picker-content';\nimport { EmojiPickerNavigation } from './emoji-picker-navigation';\nimport { EmojiPickerPreview } from './emoji-picker-preview';\nimport { EmojiPickerSearchAndClear } from './emoji-picker-search-and-clear';\nimport { EmojiPickerSearchBar } from './emoji-picker-search-bar';\n\nexport function EmojiPicker({\n clearSearch,\n emoji,\n emojiLibrary,\n focusedCategory,\n hasFound,\n i18n,\n icons,\n isSearching,\n refs,\n searchResult,\n searchValue,\n setSearch,\n settings = EmojiSettings,\n visibleCategories,\n handleCategoryClick,\n onMouseOver,\n onSelectEmoji,\n}: UseEmojiPickerType) {\n return (\n \n \n \n \n \n \n \n
\n );\n}\n",
+ "path": "plate-ui/emoji-picker.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import { memo, useCallback } from 'react';\n\nimport type { UseEmojiPickerType } from '@udecode/plate-emoji/react';\n\nimport { cn } from '@udecode/cn';\nimport { type Emoji, type GridRow, EmojiSettings } from '@udecode/plate-emoji';\n\nexport type EmojiPickerContentProps = Pick<\n UseEmojiPickerType,\n | 'emojiLibrary'\n | 'i18n'\n | 'isSearching'\n | 'onMouseOver'\n | 'onSelectEmoji'\n | 'refs'\n | 'searchResult'\n | 'settings'\n | 'visibleCategories'\n>;\n\nexport type EmojiButtonProps = {\n emoji: Emoji;\n index: number;\n onMouseOver: (emoji?: Emoji) => void;\n onSelect: (emoji: Emoji) => void;\n};\n\nexport type RowOfButtonsProps = {\n row: GridRow;\n} & Pick;\n\nconst Button = memo(\n ({ emoji, index, onMouseOver, onSelect }: EmojiButtonProps) => {\n return (\n onSelect(emoji)}\n onMouseEnter={() => onMouseOver(emoji)}\n onMouseLeave={() => onMouseOver()}\n aria-label={emoji.skins[0].native}\n data-index={index}\n tabIndex={-1}\n type=\"button\"\n >\n
\n \n {emoji.skins[0].native}\n \n \n );\n }\n);\nButton.displayName = 'Button';\n\nconst RowOfButtons = memo(\n ({ emojiLibrary, row, onMouseOver, onSelectEmoji }: RowOfButtonsProps) => (\n \n {row.elements.map((emojiId, index) => (\n \n ))}\n
\n )\n);\nRowOfButtons.displayName = 'RowOfButtons';\n\nexport function EmojiPickerContent({\n emojiLibrary,\n i18n,\n isSearching = false,\n refs,\n searchResult,\n settings = EmojiSettings,\n visibleCategories,\n onMouseOver,\n onSelectEmoji,\n}: EmojiPickerContentProps) {\n const getRowWidth = settings.perLine.value * settings.buttonSize.value;\n\n const isCategoryVisible = useCallback(\n (categoryId: any) => {\n return visibleCategories.has(categoryId)\n ? visibleCategories.get(categoryId)\n : false;\n },\n [visibleCategories]\n );\n\n const EmojiList = useCallback(() => {\n return emojiLibrary\n .getGrid()\n .sections()\n .map(({ id: categoryId }) => {\n const section = emojiLibrary.getGrid().section(categoryId);\n const { buttonSize } = settings;\n\n return (\n \n
\n {i18n.categories[categoryId]}\n
\n
\n {isCategoryVisible(categoryId) &&\n section\n .getRows()\n .map((row: GridRow) => (\n \n ))}\n
\n
\n );\n });\n }, [\n emojiLibrary,\n getRowWidth,\n i18n.categories,\n isCategoryVisible,\n onSelectEmoji,\n onMouseOver,\n settings,\n ]);\n\n const SearchList = useCallback(() => {\n return (\n \n
\n {i18n.searchResult}\n
\n
\n {searchResult.map((emoji: Emoji, index: number) => (\n \n ))}\n
\n
\n );\n }, [\n emojiLibrary,\n getRowWidth,\n i18n.searchResult,\n searchResult,\n onSelectEmoji,\n onMouseOver,\n ]);\n\n return (\n \n
\n {isSearching ? SearchList() : EmojiList()}\n
\n
\n );\n}\n",
+ "path": "plate-ui/emoji-picker-content.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import React from 'react';\n\nimport type { EmojiCategoryList } from '@udecode/plate-emoji';\nimport type {\n IEmojiFloatingLibrary,\n UseEmojiPickerType,\n} from '@udecode/plate-emoji/react';\n\nimport { cn } from '@udecode/cn';\n\nimport { Button } from './button';\n\nexport type EmojiPickerNavigationProps = {\n onClick: (id: EmojiCategoryList) => void;\n} & Pick<\n UseEmojiPickerType,\n 'emojiLibrary' | 'focusedCategory' | 'i18n' | 'icons'\n>;\n\nconst getBarProperty = (\n emojiLibrary: IEmojiFloatingLibrary,\n focusedCategory?: EmojiCategoryList\n) => {\n let width = 0;\n let position = 0;\n\n if (focusedCategory) {\n width = 100 / emojiLibrary.getGrid().size;\n position = focusedCategory\n ? emojiLibrary.indexOf(focusedCategory) * 100\n : 0;\n }\n\n return { position, width };\n};\n\nexport function EmojiPickerNavigation({\n emojiLibrary,\n focusedCategory,\n i18n,\n icons,\n onClick,\n}: EmojiPickerNavigationProps) {\n const { position, width } = getBarProperty(emojiLibrary, focusedCategory);\n\n return (\n \n \n {emojiLibrary\n .getGrid()\n .sections()\n .map(({ id }) => (\n
onClick(id)}\n title={i18n.categories[id]}\n aria-label={i18n.categories[id]}\n type=\"button\"\n >\n {icons.categories[id].outline} \n \n ))}\n
\n
\n \n );\n}\n",
+ "path": "plate-ui/emoji-picker-navigation.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import type { UseEmojiPickerType } from '@udecode/plate-emoji/react';\n\nexport type EmojiPickerPreviewProps = Pick<\n UseEmojiPickerType,\n 'emoji' | 'hasFound' | 'i18n' | 'isSearching'\n>;\n\nexport type EmojiPreviewProps = Pick;\n\nexport type NoEmojiPreviewProps = Pick;\n\nexport type PickAnEmojiPreviewProps = NoEmojiPreviewProps;\n\nfunction EmojiPreview({ emoji }: EmojiPreviewProps) {\n return (\n \n
\n {emoji?.skins[0].native}\n
\n
\n
{emoji?.name}
\n
{`:${emoji?.id}:`}
\n
\n
\n );\n}\n\nfunction NoEmoji({ i18n }: NoEmojiPreviewProps) {\n return (\n \n
😢
\n
\n
\n {i18n.searchNoResultsTitle}\n
\n
{i18n.searchNoResultsSubtitle}
\n
\n
\n );\n}\n\nfunction PickAnEmoji({ i18n }: PickAnEmojiPreviewProps) {\n return (\n \n );\n}\n\nexport function EmojiPickerPreview({\n emoji,\n hasFound = true,\n i18n,\n isSearching = false,\n ...props\n}: EmojiPickerPreviewProps) {\n const showPickEmoji = !emoji && !(isSearching && !hasFound);\n const showNoEmoji = isSearching && !hasFound;\n const showPreview = emoji;\n\n return (\n <>\n {showPreview && }\n {showPickEmoji && }\n {showNoEmoji && }\n >\n );\n}\n",
+ "path": "plate-ui/emoji-picker-preview.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import type { UseEmojiPickerType } from '@udecode/plate-emoji/react';\n\nimport { cn } from '@udecode/cn';\nimport { DeleteIcon, SearchIcon } from 'lucide-react';\n\nimport { Button } from './button';\n\nexport type EmojiPickerSearchAndClearProps = Pick<\n UseEmojiPickerType,\n 'clearSearch' | 'i18n' | 'searchValue'\n>;\n\nexport function EmojiPickerSearchAndClear({\n clearSearch,\n i18n,\n searchValue,\n}: EmojiPickerSearchAndClearProps) {\n return (\n \n
\n \n
\n {searchValue && (\n
\n \n \n )}\n
\n );\n}\n",
+ "path": "plate-ui/emoji-picker-search-and-clear.tsx",
+ "target": "",
+ "type": "registry:ui"
+ },
+ {
+ "content": "import type { ReactNode } from 'react';\n\nimport type { UseEmojiPickerType } from '@udecode/plate-emoji/react';\n\nexport type EmojiPickerSearchBarProps = {\n children: ReactNode;\n} & Pick;\n\nexport function EmojiPickerSearchBar({\n children,\n i18n,\n searchValue,\n setSearch,\n}: EmojiPickerSearchBarProps) {\n return (\n \n
\n setSearch(event.target.value)}\n placeholder={i18n.search}\n aria-label=\"Search\"\n autoComplete=\"off\"\n type=\"text\"\n />\n {children}\n
\n
\n );\n}\n",
+ "path": "plate-ui/emoji-picker-search-bar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "emoji-dropdown-menu",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/emoji-input-element.json b/apps/www/public/r/styles/default/emoji-input-element.json
new file mode 100644
index 0000000000..ceef1bb623
--- /dev/null
+++ b/apps/www/public/r/styles/default/emoji-input-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-emoji"
+ ],
+ "files": [
+ {
+ "content": "import React, { useMemo, useState } from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { EmojiInlineIndexSearch, insertEmoji } from '@udecode/plate-emoji';\n\nimport { useDebounce } from '@/hooks/use-debounce';\n\nimport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n} from './inline-combobox';\n\nexport const EmojiInputElement = withRef(\n ({ className, ...props }, ref) => {\n const { children, editor, element } = props;\n const [value, setValue] = useState('');\n const debouncedValue = useDebounce(value, 100);\n const isPending = value !== debouncedValue;\n\n const filteredEmojis = useMemo(() => {\n if (debouncedValue.trim().length === 0) return [];\n\n return EmojiInlineIndexSearch.getInstance()\n .search(debouncedValue.replace(/:$/, ''))\n .get();\n }, [debouncedValue]);\n\n return (\n \n \n \n\n \n {!isPending && (\n No matching emoji found \n )}\n\n {filteredEmojis.map((emoji) => (\n insertEmoji(editor, emoji)}\n >\n {emoji.skins[0].native} {emoji.name}\n \n ))}\n \n \n\n {children}\n \n );\n }\n);\n",
+ "path": "plate-ui/emoji-input-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "emoji-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/excalidraw-element.json b/apps/www/public/r/styles/default/excalidraw-element.json
new file mode 100644
index 0000000000..216544d224
--- /dev/null
+++ b/apps/www/public/r/styles/default/excalidraw-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-excalidraw"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { useExcalidrawElement } from '@udecode/plate-excalidraw/react';\n\nexport const ExcalidrawElement = withRef(\n ({ nodeProps, ...props }, ref) => {\n const { children, element } = props;\n\n const { Excalidraw, excalidrawProps } = useExcalidrawElement({\n element,\n });\n\n return (\n \n \n
\n {Excalidraw && (\n \n )}\n
\n
\n {children}\n \n );\n }\n);\n",
+ "path": "plate-ui/excalidraw-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "excalidraw-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/fixed-toolbar-buttons.json b/apps/www/public/r/styles/default/fixed-toolbar-buttons.json
new file mode 100644
index 0000000000..c124afefcf
--- /dev/null
+++ b/apps/www/public/r/styles/default/fixed-toolbar-buttons.json
@@ -0,0 +1,22 @@
+{
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport {\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport { useEditorReadOnly } from '@udecode/plate-common/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { InsertDropdownMenu } from './insert-dropdown-menu';\nimport { MarkToolbarButton } from './mark-toolbar-button';\nimport { ModeDropdownMenu } from './mode-dropdown-menu';\nimport { ToolbarGroup } from './toolbar';\nimport { TurnIntoDropdownMenu } from './turn-into-dropdown-menu';\n\nexport function FixedToolbarButtons() {\n const readOnly = useEditorReadOnly();\n\n return (\n \n
\n {!readOnly && (\n <>\n
\n \n \n \n\n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n >\n )}\n\n
\n\n
\n \n \n
\n
\n );\n}\n",
+ "path": "plate-ui/fixed-toolbar-buttons.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "fixed-toolbar-buttons",
+ "registryDependencies": [
+ "toolbar",
+ "insert-dropdown-menu",
+ "mark-toolbar-button",
+ "mode-dropdown-menu",
+ "turn-into-dropdown-menu"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/fixed-toolbar.json b/apps/www/public/r/styles/default/fixed-toolbar.json
new file mode 100644
index 0000000000..4b3a2201a1
--- /dev/null
+++ b/apps/www/public/r/styles/default/fixed-toolbar.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "import { withCn } from '@udecode/cn';\n\nimport { Toolbar } from './toolbar';\n\nexport const FixedToolbar = withCn(\n Toolbar,\n 'supports-backdrop-blur:bg-background/60 sticky left-0 top-0 z-50 w-full justify-between overflow-x-auto rounded-t-lg border-b border-b-border bg-background/95 backdrop-blur'\n);\n",
+ "path": "plate-ui/fixed-toolbar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "fixed-toolbar",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/floating-toolbar-buttons.json b/apps/www/public/r/styles/default/floating-toolbar-buttons.json
new file mode 100644
index 0000000000..a82d31fcd1
--- /dev/null
+++ b/apps/www/public/r/styles/default/floating-toolbar-buttons.json
@@ -0,0 +1,20 @@
+{
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport {\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport { useEditorReadOnly } from '@udecode/plate-common/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { MarkToolbarButton } from './mark-toolbar-button';\nimport { TurnIntoDropdownMenu } from './turn-into-dropdown-menu';\n\nexport function FloatingToolbarButtons() {\n const readOnly = useEditorReadOnly();\n\n return (\n <>\n {!readOnly && (\n <>\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n >\n )}\n >\n );\n}\n",
+ "path": "plate-ui/floating-toolbar-buttons.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "floating-toolbar-buttons",
+ "registryDependencies": [
+ "mark-toolbar-button",
+ "more-dropdown-menu",
+ "turn-into-dropdown-menu"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/floating-toolbar.json b/apps/www/public/r/styles/default/floating-toolbar.json
new file mode 100644
index 0000000000..af61bbd306
--- /dev/null
+++ b/apps/www/public/r/styles/default/floating-toolbar.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-floating"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n PortalBody,\n useComposedRef,\n useEditorId,\n useEventEditorSelectors,\n} from '@udecode/plate-common/react';\nimport {\n type FloatingToolbarState,\n flip,\n offset,\n useFloatingToolbar,\n useFloatingToolbarState,\n} from '@udecode/plate-floating';\n\nimport { Toolbar } from './toolbar';\n\nexport const FloatingToolbar = withRef<\n typeof Toolbar,\n {\n state?: FloatingToolbarState;\n }\n>(({ children, state, ...props }, componentRef) => {\n const editorId = useEditorId();\n const focusedEditorId = useEventEditorSelectors.focus();\n\n const floatingToolbarState = useFloatingToolbarState({\n editorId,\n focusedEditorId,\n ...state,\n floatingOptions: {\n middleware: [\n offset(12),\n flip({\n fallbackPlacements: [\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n ],\n padding: 12,\n }),\n ],\n placement: 'top',\n ...state?.floatingOptions,\n },\n });\n\n const {\n hidden,\n props: rootProps,\n ref: floatingRef,\n } = useFloatingToolbar(floatingToolbarState);\n\n const ref = useComposedRef(componentRef, floatingRef);\n\n if (hidden) return null;\n\n return (\n \n \n {children}\n \n \n );\n});\n",
+ "path": "plate-ui/floating-toolbar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "floating-toolbar",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/heading-element.json b/apps/www/public/r/styles/default/heading-element.json
new file mode 100644
index 0000000000..d303d0196e
--- /dev/null
+++ b/apps/www/public/r/styles/default/heading-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef, withVariants } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { cva } from 'class-variance-authority';\n\nconst headingVariants = cva('', {\n variants: {\n isFirstBlock: {\n false: '',\n true: 'mt-0',\n },\n variant: {\n h1: 'mb-1 mt-[2em] font-heading text-4xl font-bold',\n h2: 'mb-px mt-[1.4em] font-heading text-2xl font-semibold tracking-tight',\n h3: 'mb-px mt-[1em] font-heading text-xl font-semibold tracking-tight',\n h4: 'mt-[0.75em] font-heading text-lg font-semibold tracking-tight',\n h5: 'mt-[0.75em] text-lg font-semibold tracking-tight',\n h6: 'mt-[0.75em] text-base font-semibold tracking-tight',\n },\n },\n});\n\nconst HeadingElementVariants = withVariants(PlateElement, headingVariants, [\n 'isFirstBlock',\n 'variant',\n]);\n\nexport const HeadingElement = withRef(\n ({ children, isFirstBlock, variant = 'h1', ...props }, ref) => {\n const { editor, element } = props;\n\n const Element = variant!;\n\n return (\n \n {children} \n \n );\n }\n);\n",
+ "path": "plate-ui/heading-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "heading-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/highlight-leaf.json b/apps/www/public/r/styles/default/highlight-leaf.json
new file mode 100644
index 0000000000..69e88f4af4
--- /dev/null
+++ b/apps/www/public/r/styles/default/highlight-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-highlight"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateLeaf } from '@udecode/plate-common/react';\n\nexport const HighlightLeaf = withRef(\n ({ children, className, ...props }, ref) => (\n \n {children} \n \n )\n);\n",
+ "path": "plate-ui/highlight-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "highlight-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/hr-element.json b/apps/www/public/r/styles/default/hr-element.json
new file mode 100644
index 0000000000..2f40010324
--- /dev/null
+++ b/apps/www/public/r/styles/default/hr-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-horizontal-rule"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { useFocused, useSelected } from 'slate-react';\n\nexport const HrElement = withRef(\n ({ className, nodeProps, ...props }, ref) => {\n const { children } = props;\n\n const selected = useSelected();\n const focused = useFocused();\n\n return (\n \n \n
\n \n {children}\n \n );\n }\n);\n",
+ "path": "plate-ui/hr-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "hr-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/image-element.json b/apps/www/public/r/styles/default/image-element.json
new file mode 100644
index 0000000000..305022c002
--- /dev/null
+++ b/apps/www/public/r/styles/default/image-element.json
@@ -0,0 +1,20 @@
+{
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement, withHOC } from '@udecode/plate-common/react';\nimport { Image, ImagePlugin, useMediaState } from '@udecode/plate-media/react';\nimport { ResizableProvider, useResizableStore } from '@udecode/plate-resizable';\n\nimport { Caption, CaptionTextarea } from './caption';\nimport { MediaPopover } from './media-popover';\nimport {\n Resizable,\n ResizeHandle,\n mediaResizeHandleVariants,\n} from './resizable';\n\nexport const ImageElement = withHOC(\n ResizableProvider,\n withRef(\n ({ children, className, nodeProps, ...props }, ref) => {\n const { align = 'center', focused, readOnly, selected } = useMediaState();\n\n const width = useResizableStore().get.width();\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n\n {children}\n \n \n );\n }\n )\n);\n",
+ "path": "plate-ui/image-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "image-element",
+ "registryDependencies": [
+ "media-popover",
+ "caption",
+ "resizable"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/indent-list-toolbar-button.json b/apps/www/public/r/styles/default/indent-list-toolbar-button.json
new file mode 100644
index 0000000000..23b6684f0b
--- /dev/null
+++ b/apps/www/public/r/styles/default/indent-list-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-indent-list"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { ListStyleType } from '@udecode/plate-indent-list';\nimport {\n useIndentListToolbarButton,\n useIndentListToolbarButtonState,\n} from '@udecode/plate-indent-list/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const IndentListToolbarButton = withRef<\n typeof ToolbarButton,\n {\n nodeType?: ListStyleType;\n }\n>(({ nodeType = ListStyleType.Disc }, ref) => {\n const state = useIndentListToolbarButtonState({ nodeType });\n const { props } = useIndentListToolbarButton(state);\n\n return (\n \n {nodeType === ListStyleType.Disc ? : }\n \n );\n});\n",
+ "path": "plate-ui/indent-list-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "indent-list-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/indent-toolbar-button.json b/apps/www/public/r/styles/default/indent-toolbar-button.json
new file mode 100644
index 0000000000..c2ad89f8f7
--- /dev/null
+++ b/apps/www/public/r/styles/default/indent-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-indent"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { useIndentButton } from '@udecode/plate-indent/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const IndentToolbarButton = withRef(\n (rest, ref) => {\n const { props } = useIndentButton();\n\n return (\n \n \n \n );\n }\n);\n",
+ "path": "plate-ui/indent-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "indent-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/index.json b/apps/www/public/r/styles/default/index.json
new file mode 100644
index 0000000000..d13e4c8203
--- /dev/null
+++ b/apps/www/public/r/styles/default/index.json
@@ -0,0 +1,21 @@
+{
+ "name": "default",
+ "type": "registry:style",
+ "dependencies": [
+ "tailwindcss-animate",
+ "class-variance-authority",
+ "lucide-react"
+ ],
+ "registryDependencies": [
+ "utils"
+ ],
+ "tailwind": {
+ "config": {
+ "plugins": [
+ "require(\"tailwindcss-animate\")"
+ ]
+ }
+ },
+ "cssVars": {},
+ "files": []
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/inline-combobox.json b/apps/www/public/r/styles/default/inline-combobox.json
new file mode 100644
index 0000000000..bc19d2a5cd
--- /dev/null
+++ b/apps/www/public/r/styles/default/inline-combobox.json
@@ -0,0 +1,17 @@
+{
+ "dependencies": [
+ "@ariakit/react",
+ "@udecode/plate-combobox"
+ ],
+ "files": [
+ {
+ "content": "import React, {\n type HTMLAttributes,\n type ReactNode,\n type RefObject,\n createContext,\n forwardRef,\n startTransition,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport type { PointRef } from 'slate';\n\nimport {\n type ComboboxItemProps,\n Combobox,\n ComboboxItem,\n ComboboxPopover,\n ComboboxProvider,\n Portal,\n useComboboxContext,\n useComboboxStore,\n} from '@ariakit/react';\nimport { cn } from '@udecode/cn';\nimport { filterWords } from '@udecode/plate-combobox';\nimport {\n type UseComboboxInputResult,\n useComboboxInput,\n useHTMLInputCursorState,\n} from '@udecode/plate-combobox/react';\nimport {\n type TElement,\n createPointRef,\n getPointBefore,\n insertText,\n moveSelection,\n} from '@udecode/plate-common';\nimport {\n findNodePath,\n useComposedRef,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport { cva } from 'class-variance-authority';\n\ntype FilterFn = (\n item: { value: string; keywords?: string[] },\n search: string\n) => boolean;\n\ninterface InlineComboboxContextValue {\n filter: FilterFn | false;\n inputProps: UseComboboxInputResult['props'];\n inputRef: RefObject;\n removeInput: UseComboboxInputResult['removeInput'];\n setHasEmpty: (hasEmpty: boolean) => void;\n showTrigger: boolean;\n trigger: string;\n}\n\nconst InlineComboboxContext = createContext(\n null as any\n);\n\nexport const defaultFilter: FilterFn = ({ keywords = [], value }, search) =>\n [value, ...keywords].some((keyword) => filterWords(keyword, search));\n\ninterface InlineComboboxProps {\n children: ReactNode;\n element: TElement;\n trigger: string;\n filter?: FilterFn | false;\n hideWhenNoValue?: boolean;\n setValue?: (value: string) => void;\n showTrigger?: boolean;\n value?: string;\n}\n\nconst InlineCombobox = ({\n children,\n element,\n filter = defaultFilter,\n hideWhenNoValue = false,\n setValue: setValueProp,\n showTrigger = true,\n trigger,\n value: valueProp,\n}: InlineComboboxProps) => {\n const editor = useEditorRef();\n const inputRef = React.useRef(null);\n const cursorState = useHTMLInputCursorState(inputRef);\n\n const [valueState, setValueState] = useState('');\n const hasValueProp = valueProp !== undefined;\n const value = hasValueProp ? valueProp : valueState;\n\n const setValue = useCallback(\n (newValue: string) => {\n setValueProp?.(newValue);\n\n if (!hasValueProp) {\n setValueState(newValue);\n }\n },\n [setValueProp, hasValueProp]\n );\n\n /**\n * Track the point just before the input element so we know where to\n * insertText if the combobox closes due to a selection change.\n */\n const [insertPoint, setInsertPoint] = useState(null);\n\n useEffect(() => {\n const path = findNodePath(editor, element);\n\n if (!path) return;\n\n const point = getPointBefore(editor, path);\n\n if (!point) return;\n\n const pointRef = createPointRef(editor, point);\n setInsertPoint(pointRef);\n\n return () => {\n pointRef.unref();\n };\n }, [editor, element]);\n\n const { props: inputProps, removeInput } = useComboboxInput({\n cancelInputOnBlur: false,\n cursorState,\n ref: inputRef,\n onCancelInput: (cause) => {\n if (cause !== 'backspace') {\n insertText(editor, trigger + value, {\n at: insertPoint?.current ?? undefined,\n });\n }\n if (cause === 'arrowLeft' || cause === 'arrowRight') {\n moveSelection(editor, {\n distance: 1,\n reverse: cause === 'arrowLeft',\n });\n }\n },\n });\n\n const [hasEmpty, setHasEmpty] = useState(false);\n\n const contextValue: InlineComboboxContextValue = useMemo(\n () => ({\n filter,\n inputProps,\n inputRef,\n removeInput,\n setHasEmpty,\n showTrigger,\n trigger,\n }),\n [\n trigger,\n showTrigger,\n filter,\n inputRef,\n inputProps,\n removeInput,\n setHasEmpty,\n ]\n );\n\n const store = useComboboxStore({\n // open: ,\n setValue: (newValue) => startTransition(() => setValue(newValue)),\n });\n\n const items = store.useState('items');\n\n /**\n * If there is no active ID and the list of items changes, select the first\n * item.\n */\n useEffect(() => {\n if (!store.getState().activeId) {\n store.setActiveId(store.first());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items, store]);\n\n return (\n \n 0 || hasEmpty) &&\n (!hideWhenNoValue || value.length > 0)\n }\n store={store}\n >\n \n {children}\n \n \n \n );\n};\n\nconst InlineComboboxInput = forwardRef<\n HTMLInputElement,\n HTMLAttributes\n>(({ className, ...props }, propRef) => {\n const {\n inputProps,\n inputRef: contextRef,\n showTrigger,\n trigger,\n } = useContext(InlineComboboxContext);\n\n const store = useComboboxContext()!;\n const value = store.useState('value');\n\n const ref = useComposedRef(propRef, contextRef);\n\n /**\n * To create an auto-resizing input, we render a visually hidden span\n * containing the input value and position the input element on top of it.\n * This works well for all cases except when input exceeds the width of the\n * container.\n */\n\n return (\n <>\n {showTrigger && trigger}\n\n \n \n {value || '\\u200B'}\n \n\n \n \n >\n );\n});\n\nInlineComboboxInput.displayName = 'InlineComboboxInput';\n\nconst InlineComboboxContent: typeof ComboboxPopover = ({\n className,\n ...props\n}) => {\n // Portal prevents CSS from leaking into popover\n return (\n \n \n \n );\n};\n\nconst comboboxItemVariants = cva(\n 'relative flex h-9 select-none items-center rounded-sm px-2 py-1.5 text-sm text-foreground outline-none',\n {\n defaultVariants: {\n interactive: true,\n },\n variants: {\n interactive: {\n false: '',\n true: 'cursor-pointer transition-colors hover:bg-accent hover:text-accent-foreground data-[active-item=true]:bg-accent data-[active-item=true]:text-accent-foreground',\n },\n },\n }\n);\n\nexport type InlineComboboxItemProps = {\n keywords?: string[];\n} & ComboboxItemProps &\n Required>;\n\nconst InlineComboboxItem = ({\n className,\n keywords,\n onClick,\n ...props\n}: InlineComboboxItemProps) => {\n const { value } = props;\n\n const { filter, removeInput } = useContext(InlineComboboxContext);\n\n const store = useComboboxContext()!;\n\n // Optimization: Do not subscribe to value if filter is false\n const search = filter && store.useState('value');\n\n const visible = useMemo(\n () => !filter || filter({ keywords, value }, search as string),\n [filter, value, keywords, search]\n );\n\n if (!visible) return null;\n\n return (\n {\n removeInput(true);\n onClick?.(event);\n }}\n {...props}\n />\n );\n};\n\nconst InlineComboboxEmpty = ({\n children,\n className,\n}: HTMLAttributes) => {\n const { setHasEmpty } = useContext(InlineComboboxContext);\n const store = useComboboxContext()!;\n const items = store.useState('items');\n\n useEffect(() => {\n setHasEmpty(true);\n\n return () => {\n setHasEmpty(false);\n };\n }, [setHasEmpty]);\n\n if (items.length > 0) return null;\n\n return (\n \n {children}\n
\n );\n};\n\nexport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n};\n",
+ "path": "plate-ui/inline-combobox.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "inline-combobox",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/input.json b/apps/www/public/r/styles/default/input.json
new file mode 100644
index 0000000000..6f913b7f35
--- /dev/null
+++ b/apps/www/public/r/styles/default/input.json
@@ -0,0 +1,14 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "import { withVariants } from '@udecode/cn';\nimport { cva } from 'class-variance-authority';\n\nexport const inputVariants = cva(\n 'flex w-full rounded-md bg-transparent text-sm file:border-0 file:bg-background file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n {\n defaultVariants: {\n h: 'md',\n variant: 'default',\n },\n variants: {\n h: {\n md: 'h-10 px-3 py-2',\n sm: 'h-9 px-3 py-2',\n },\n variant: {\n default:\n 'border border-input ring-offset-background focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ghost: 'border-none focus-visible:ring-transparent',\n },\n },\n }\n);\n\nexport const Input = withVariants('input', inputVariants, ['variant', 'h']);\n",
+ "path": "plate-ui/input.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "input",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/insert-dropdown-menu.json b/apps/www/public/r/styles/default/insert-dropdown-menu.json
new file mode 100644
index 0000000000..e4574215c1
--- /dev/null
+++ b/apps/www/public/r/styles/default/insert-dropdown-menu.json
@@ -0,0 +1,20 @@
+{
+ "dependencies": [
+ "@udecode/plate-block-quote",
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport { insertEmptyElement } from '@udecode/plate-common';\nimport {\n ParagraphPlugin,\n focusEditor,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nconst items = [\n {\n items: [\n {\n description: 'Paragraph',\n icon: Icons.paragraph,\n label: 'Paragraph',\n value: ParagraphPlugin.key,\n },\n {\n description: 'Heading 1',\n icon: Icons.h1,\n label: 'Heading 1',\n value: HEADING_KEYS.h1,\n },\n {\n description: 'Heading 2',\n icon: Icons.h2,\n label: 'Heading 2',\n value: HEADING_KEYS.h2,\n },\n {\n description: 'Heading 3',\n icon: Icons.h3,\n label: 'Heading 3',\n value: HEADING_KEYS.h3,\n },\n {\n description: 'Quote (⌘+⇧+.)',\n icon: Icons.blockquote,\n label: 'Quote',\n value: BlockquotePlugin.key,\n },\n // {\n // value: TablePlugin.key,\n // label: 'Table',\n // description: 'Table',\n // icon: Icons.table,\n // },\n // {\n // value: 'ul',\n // label: 'Bulleted list',\n // description: 'Bulleted list',\n // icon: Icons.ul,\n // },\n // {\n // value: 'ol',\n // label: 'Numbered list',\n // description: 'Numbered list',\n // icon: Icons.ol,\n // },\n // {\n // value: HorizontalRulePlugin.key,\n // label: 'Divider',\n // description: 'Divider (---)',\n // icon: Icons.hr,\n // },\n ],\n label: 'Basic blocks',\n },\n // {\n // label: 'Media',\n // items: [\n // {\n // value: CodeBlockPlugin.key,\n // label: 'Code',\n // description: 'Code (```)',\n // icon: Icons.codeblock,\n // },\n // {\n // value: ImagePlugin.key,\n // label: 'Image',\n // description: 'Image',\n // icon: Icons.image,\n // },\n // {\n // value: MediaEmbedPlugin.key,\n // label: 'Embed',\n // description: 'Embed',\n // icon: Icons.embed,\n // },\n // {\n // value: ExcalidrawPlugin.key,\n // label: 'Excalidraw',\n // description: 'Excalidraw',\n // icon: Icons.excalidraw,\n // },\n // ],\n // },\n // {\n // label: 'Inline',\n // items: [\n // {\n // value: LinkPlugin.key,\n // label: 'Link',\n // description: 'Link',\n // icon: Icons.link,\n // },\n // ],\n // },\n];\n\nexport function InsertDropdownMenu(props: DropdownMenuProps) {\n const editor = useEditorRef();\n const openState = useOpenState();\n\n return (\n \n \n \n \n \n \n\n \n {items.map(({ items: nestedItems, label }, index) => (\n \n {index !== 0 && }\n\n {label} \n {nestedItems.map(\n ({ icon: Icon, label: itemLabel, value: type }) => (\n {\n switch (type) {\n // case CodeBlockPlugin.key: {\n // insertEmptyCodeBlock(editor);\n //\n // break;\n // }\n // case ImagePlugin.key: {\n // await insertMedia(editor, { type: ImagePlugin.key });\n //\n // break;\n // }\n // case MediaEmbedPlugin.key: {\n // await insertMedia(editor, {\n // type: MediaEmbedPlugin.key,\n // });\n //\n // break;\n // }\n // case 'ul':\n // case 'ol': {\n // insertEmptyElement(editor, ParagraphPlugin.key, {\n // select: true,\n // nextBlock: true,\n // });\n //\n // if (settingsStore.get.checkedId(IndentListPlugin.key)) {\n // toggleIndentList(editor, {\n // listStyleType: type === 'ul' ? 'disc' : 'decimal',\n // });\n // } else if (settingsStore.get.checkedId('list')) {\n // toggleList(editor, { type });\n // }\n //\n // break;\n // }\n // case TablePlugin.key: {\n // insertTable(editor);\n //\n // break;\n // }\n // case LinkPlugin.key: {\n // triggerFloatingLink(editor, { focused: true });\n //\n // break;\n // }\n default: {\n insertEmptyElement(editor, type, {\n nextBlock: true,\n select: true,\n });\n }\n }\n\n focusEditor(editor);\n }}\n >\n \n {itemLabel}\n \n )\n )}\n \n ))}\n \n \n );\n}\n",
+ "path": "plate-ui/insert-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "insert-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/kbd-leaf.json b/apps/www/public/r/styles/default/kbd-leaf.json
new file mode 100644
index 0000000000..c0591669d6
--- /dev/null
+++ b/apps/www/public/r/styles/default/kbd-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-kbd"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateLeaf } from '@udecode/plate-common/react';\n\nexport const KbdLeaf = withRef(\n ({ children, className, ...props }, ref) => (\n \n {children} \n \n )\n);\n",
+ "path": "plate-ui/kbd-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "kbd-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/line-height-dropdown-menu.json b/apps/www/public/r/styles/default/line-height-dropdown-menu.json
new file mode 100644
index 0000000000..c5206046b0
--- /dev/null
+++ b/apps/www/public/r/styles/default/line-height-dropdown-menu.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@udecode/plate-line-height"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport {\n useLineHeightDropdownMenu,\n useLineHeightDropdownMenuState,\n} from '@udecode/plate-line-height/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nexport function LineHeightDropdownMenu({ ...props }: DropdownMenuProps) {\n const openState = useOpenState();\n const state = useLineHeightDropdownMenuState();\n const { radioGroupProps } = useLineHeightDropdownMenu(state);\n\n return (\n \n \n \n \n \n \n\n \n \n {state.values.map((_value) => (\n \n {_value}\n \n ))}\n \n \n \n );\n}\n",
+ "path": "plate-ui/line-height-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "line-height-dropdown-menu",
+ "registryDependencies": [
+ "toolbar",
+ "dropdown-menu"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/link-element.json b/apps/www/public/r/styles/default/link-element.json
new file mode 100644
index 0000000000..2403a9bbb3
--- /dev/null
+++ b/apps/www/public/r/styles/default/link-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { TLinkElement } from '@udecode/plate-link';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement, useElement } from '@udecode/plate-common/react';\nimport { useLink } from '@udecode/plate-link/react';\n\nexport const LinkElement = withRef(\n ({ children, className, ...props }, ref) => {\n const element = useElement();\n const { props: linkProps } = useLink({ element });\n\n return (\n \n {children} \n \n );\n }\n);\n",
+ "path": "plate-ui/link-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/link-floating-toolbar.json b/apps/www/public/r/styles/default/link-floating-toolbar.json
new file mode 100644
index 0000000000..8b9ff6eb19
--- /dev/null
+++ b/apps/www/public/r/styles/default/link-floating-toolbar.json
@@ -0,0 +1,21 @@
+{
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport { useFormInputProps } from '@udecode/plate-common/react';\nimport {\n type UseVirtualFloatingOptions,\n flip,\n offset,\n} from '@udecode/plate-floating';\nimport {\n type LinkFloatingToolbarState,\n FloatingLinkUrlInput,\n LinkOpenButton,\n useFloatingLinkEdit,\n useFloatingLinkEditState,\n useFloatingLinkInsert,\n useFloatingLinkInsertState,\n} from '@udecode/plate-link/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { buttonVariants } from './button';\nimport { inputVariants } from './input';\nimport { popoverVariants } from './popover';\nimport { Separator } from './separator';\n\nconst floatingOptions: UseVirtualFloatingOptions = {\n middleware: [\n offset(12),\n flip({\n fallbackPlacements: ['bottom-end', 'top-start', 'top-end'],\n padding: 12,\n }),\n ],\n placement: 'bottom-start',\n};\n\nexport interface LinkFloatingToolbarProps {\n state?: LinkFloatingToolbarState;\n}\n\nexport function LinkFloatingToolbar({ state }: LinkFloatingToolbarProps) {\n const insertState = useFloatingLinkInsertState({\n ...state,\n floatingOptions: {\n ...floatingOptions,\n ...state?.floatingOptions,\n },\n });\n const {\n hidden,\n props: insertProps,\n ref: insertRef,\n textInputProps,\n } = useFloatingLinkInsert(insertState);\n\n const editState = useFloatingLinkEditState({\n ...state,\n floatingOptions: {\n ...floatingOptions,\n ...state?.floatingOptions,\n },\n });\n const {\n editButtonProps,\n props: editProps,\n ref: editRef,\n unlinkButtonProps,\n } = useFloatingLinkEdit(editState);\n const inputProps = useFormInputProps({\n preventDefaultOnEnterKeydown: true,\n });\n\n if (hidden) return null;\n\n const input = (\n \n );\n\n const editContent = editState.isEditing ? (\n input\n ) : (\n \n \n Edit link\n \n\n \n\n \n \n \n\n \n\n \n \n \n
\n );\n\n return (\n <>\n \n {input}\n
\n\n \n {editContent}\n
\n >\n );\n}\n",
+ "path": "plate-ui/link-floating-toolbar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-floating-toolbar",
+ "registryDependencies": [
+ "button",
+ "input",
+ "popover",
+ "separator"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/link-toolbar-button.json b/apps/www/public/r/styles/default/link-toolbar-button.json
new file mode 100644
index 0000000000..8b5c675a42
--- /dev/null
+++ b/apps/www/public/r/styles/default/link-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-link"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport {\n useLinkToolbarButton,\n useLinkToolbarButtonState,\n} from '@udecode/plate-link/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const LinkToolbarButton = withRef((rest, ref) => {\n const state = useLinkToolbarButtonState();\n const { props } = useLinkToolbarButton(state);\n\n return (\n \n \n \n );\n});\n",
+ "path": "plate-ui/link-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "link-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/list-element.json b/apps/www/public/r/styles/default/list-element.json
new file mode 100644
index 0000000000..8e7e5db116
--- /dev/null
+++ b/apps/www/public/r/styles/default/list-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef, withVariants } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { cva } from 'class-variance-authority';\n\nconst listVariants = cva('m-0 ps-6', {\n variants: {\n variant: {\n ol: 'list-decimal',\n ul: 'list-disc [&_ul]:list-[circle] [&_ul_ul]:list-[square]',\n },\n },\n});\n\nconst ListElementVariants = withVariants(PlateElement, listVariants, [\n 'variant',\n]);\n\nexport const ListElement = withRef(\n ({ children, variant = 'ul', ...props }, ref) => {\n const Component = variant!;\n\n return (\n \n {children} \n \n );\n }\n);\n",
+ "path": "plate-ui/list-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "list-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/list-toolbar-button.json b/apps/www/public/r/styles/default/list-toolbar-button.json
new file mode 100644
index 0000000000..c7adf0008d
--- /dev/null
+++ b/apps/www/public/r/styles/default/list-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport {\n BulletedListPlugin,\n useListToolbarButton,\n useListToolbarButtonState,\n} from '@udecode/plate-list/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const ListToolbarButton = withRef<\n typeof ToolbarButton,\n {\n nodeType?: string;\n }\n>(({ nodeType = BulletedListPlugin.key, ...rest }, ref) => {\n const state = useListToolbarButtonState({ nodeType });\n const { props } = useListToolbarButton(state);\n\n return (\n \n {nodeType === BulletedListPlugin.key ? : }\n \n );\n});\n",
+ "path": "plate-ui/list-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "list-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/mark-toolbar-button.json b/apps/www/public/r/styles/default/mark-toolbar-button.json
new file mode 100644
index 0000000000..c5e554328d
--- /dev/null
+++ b/apps/www/public/r/styles/default/mark-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport {\n useMarkToolbarButton,\n useMarkToolbarButtonState,\n} from '@udecode/plate-common/react';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const MarkToolbarButton = withRef<\n typeof ToolbarButton,\n {\n nodeType: string;\n clear?: string[] | string;\n }\n>(({ clear, nodeType, ...rest }, ref) => {\n const state = useMarkToolbarButtonState({ clear, nodeType });\n const { props } = useMarkToolbarButton(state);\n\n return ;\n});\n",
+ "path": "plate-ui/mark-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mark-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/media-embed-element.json b/apps/www/public/r/styles/default/media-embed-element.json
new file mode 100644
index 0000000000..230ee02b18
--- /dev/null
+++ b/apps/www/public/r/styles/default/media-embed-element.json
@@ -0,0 +1,22 @@
+{
+ "dependencies": [
+ "@udecode/plate-media",
+ "react-tweet",
+ "react-lite-youtube-embed"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\nimport LiteYouTubeEmbed from 'react-lite-youtube-embed';\nimport { Tweet } from 'react-tweet';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement, withHOC } from '@udecode/plate-common/react';\nimport { parseTwitterUrl, parseVideoUrl } from '@udecode/plate-media';\nimport { MediaEmbedPlugin, useMediaState } from '@udecode/plate-media/react';\nimport { ResizableProvider, useResizableStore } from '@udecode/plate-resizable';\n\nimport { Caption, CaptionTextarea } from './caption';\nimport { MediaPopover } from './media-popover';\nimport {\n Resizable,\n ResizeHandle,\n mediaResizeHandleVariants,\n} from './resizable';\n\nexport const MediaEmbedElement = withHOC(\n ResizableProvider,\n withRef(({ children, className, ...props }, ref) => {\n const {\n align = 'center',\n embed,\n focused,\n isTweet,\n isVideo,\n isYoutube,\n readOnly,\n selected,\n } = useMediaState({\n urlParsers: [parseTwitterUrl, parseVideoUrl],\n });\n const width = useResizableStore().get.width();\n const provider = embed?.provider;\n\n return (\n \n \n \n \n \n\n {isVideo ? (\n isYoutube ? (\n _iframe]:absolute [&_>_iframe]:left-0 [&_>_iframe]:top-0 [&_>_iframe]:size-full',\n '[&_>_.lty-playbtn]:z-[1] [&_>_.lty-playbtn]:h-[46px] [&_>_.lty-playbtn]:w-[70px] [&_>_.lty-playbtn]:rounded-[14%] [&_>_.lty-playbtn]:bg-[#212121] [&_>_.lty-playbtn]:opacity-80 [&_>_.lty-playbtn]:[transition:all_0.2s_cubic-bezier(0,_0,_0.2,_1)]',\n '[&:hover_>_.lty-playbtn]:bg-[red] [&:hover_>_.lty-playbtn]:opacity-100',\n '[&_>_.lty-playbtn]:before:border-y-[11px] [&_>_.lty-playbtn]:before:border-l-[19px] [&_>_.lty-playbtn]:before:border-r-0 [&_>_.lty-playbtn]:before:border-[transparent_transparent_transparent_#fff] [&_>_.lty-playbtn]:before:content-[\"\"]',\n '[&_>_.lty-playbtn]:absolute [&_>_.lty-playbtn]:left-1/2 [&_>_.lty-playbtn]:top-1/2 [&_>_.lty-playbtn]:[transform:translate3d(-50%,-50%,0)]',\n '[&_>_.lty-playbtn]:before:absolute [&_>_.lty-playbtn]:before:left-1/2 [&_>_.lty-playbtn]:before:top-1/2 [&_>_.lty-playbtn]:before:[transform:translate3d(-50%,-50%,0)]',\n '[&.lyt-activated]:cursor-[unset]',\n '[&.lyt-activated]:before:pointer-events-none [&.lyt-activated]:before:opacity-0',\n '[&.lyt-activated_>_.lty-playbtn]:pointer-events-none [&.lyt-activated_>_.lty-playbtn]:!opacity-0'\n )}\n />\n ) : (\n \n \n
\n )\n ) : null}\n\n {isTweet && (\n \n \n
\n )}\n\n \n \n\n \n \n \n \n\n {children}\n \n \n );\n })\n);\n",
+ "path": "plate-ui/media-embed-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-embed-element",
+ "registryDependencies": [
+ "media-popover",
+ "caption",
+ "resizable"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/media-popover.json b/apps/www/public/r/styles/default/media-popover.json
new file mode 100644
index 0000000000..41bfb7c992
--- /dev/null
+++ b/apps/www/public/r/styles/default/media-popover.json
@@ -0,0 +1,21 @@
+{
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "content": "import React, { useEffect } from 'react';\n\nimport {\n type WithRequiredKey,\n isSelectionExpanded,\n} from '@udecode/plate-common';\nimport {\n useEditorSelector,\n useElement,\n useRemoveNodeButton,\n} from '@udecode/plate-common/react';\nimport {\n FloatingMedia as FloatingMediaPrimitive,\n floatingMediaActions,\n useFloatingMediaSelectors,\n} from '@udecode/plate-media/react';\nimport { useReadOnly, useSelected } from 'slate-react';\n\nimport { Icons } from '@/components/icons';\n\nimport { Button, buttonVariants } from './button';\nimport { CaptionButton } from './caption';\nimport { inputVariants } from './input';\nimport { Popover, PopoverAnchor, PopoverContent } from './popover';\nimport { Separator } from './separator';\n\nexport interface MediaPopoverProps {\n children: React.ReactNode;\n plugin: WithRequiredKey;\n}\n\nexport function MediaPopover({ children, plugin }: MediaPopoverProps) {\n const readOnly = useReadOnly();\n const selected = useSelected();\n\n const selectionCollapsed = useEditorSelector(\n (editor) => !isSelectionExpanded(editor),\n []\n );\n const isOpen = !readOnly && selected && selectionCollapsed;\n const isEditing = useFloatingMediaSelectors().isEditing();\n\n useEffect(() => {\n if (!isOpen && isEditing) {\n floatingMediaActions.isEditing(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const element = useElement();\n const { props: buttonProps } = useRemoveNodeButton({ element });\n\n if (readOnly) return <>{children}>;\n\n return (\n \n {children} \n\n e.preventDefault()}\n >\n {isEditing ? (\n \n ) : (\n \n \n Edit link\n \n\n Caption \n\n \n\n \n \n \n
\n )}\n \n \n );\n}\n",
+ "path": "plate-ui/media-popover.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-popover",
+ "registryDependencies": [
+ "button",
+ "input",
+ "popover",
+ "separator"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/media-toolbar-button.json b/apps/www/public/r/styles/default/media-toolbar-button.json
new file mode 100644
index 0000000000..32f49e291d
--- /dev/null
+++ b/apps/www/public/r/styles/default/media-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-media"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport {\n type ImagePlugin,\n type MediaEmbedPlugin,\n useMediaToolbarButton,\n} from '@udecode/plate-media/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const MediaToolbarButton = withRef<\n typeof ToolbarButton,\n {\n nodeType?: typeof ImagePlugin.key | typeof MediaEmbedPlugin.key;\n }\n>(({ nodeType, ...rest }, ref) => {\n const { props } = useMediaToolbarButton({ nodeType });\n\n return (\n \n \n \n );\n});\n",
+ "path": "plate-ui/media-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "media-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/mention-element.json b/apps/www/public/r/styles/default/mention-element.json
new file mode 100644
index 0000000000..654419f28d
--- /dev/null
+++ b/apps/www/public/r/styles/default/mention-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-mention"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { TMentionElement } from '@udecode/plate-mention';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { getHandler } from '@udecode/plate-common';\nimport { PlateElement, useElement } from '@udecode/plate-common/react';\nimport { useFocused, useSelected } from 'slate-react';\n\nexport const MentionElement = withRef<\n typeof PlateElement,\n {\n prefix?: string;\n renderLabel?: (mentionable: TMentionElement) => string;\n onClick?: (mentionNode: any) => void;\n }\n>(({ children, className, prefix, renderLabel, onClick, ...props }, ref) => {\n const element = useElement();\n const selected = useSelected();\n const focused = useFocused();\n\n return (\n \n {prefix}\n {renderLabel ? renderLabel(element) : element.value}\n {children}\n \n );\n});\n",
+ "path": "plate-ui/mention-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mention-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/mention-input-element.json b/apps/www/public/r/styles/default/mention-input-element.json
new file mode 100644
index 0000000000..0c7ed62d07
--- /dev/null
+++ b/apps/www/public/r/styles/default/mention-input-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-mention"
+ ],
+ "files": [
+ {
+ "content": "import React, { useState } from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { getMentionOnSelectItem } from '@udecode/plate-mention';\n\nimport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n} from './inline-combobox';\n\nconst onSelectItem = getMentionOnSelectItem();\n\nexport const MentionInputElement = withRef(\n ({ className, ...props }, ref) => {\n const { children, editor, element } = props;\n const [search, setSearch] = useState('');\n\n return (\n \n \n \n \n \n\n \n No results found \n\n {MENTIONABLES.map((item) => (\n onSelectItem(editor, item, search)}\n >\n {item.text}\n \n ))}\n \n \n\n {children}\n \n );\n }\n);\n\nexport const MENTIONABLES = [\n { key: '0', text: 'Aayla Secura' },\n { key: '1', text: 'Adi Gallia' },\n {\n key: '2',\n text: 'Admiral Dodd Rancit',\n },\n {\n key: '3',\n text: 'Admiral Firmus Piett',\n },\n {\n key: '4',\n text: 'Admiral Gial Ackbar',\n },\n { key: '5', text: 'Admiral Ozzel' },\n { key: '6', text: 'Admiral Raddus' },\n {\n key: '7',\n text: 'Admiral Terrinald Screed',\n },\n { key: '8', text: 'Admiral Trench' },\n {\n key: '9',\n text: 'Admiral U.O. Statura',\n },\n { key: '10', text: 'Agen Kolar' },\n { key: '11', text: 'Agent Kallus' },\n {\n key: '12',\n text: 'Aiolin and Morit Astarte',\n },\n { key: '13', text: 'Aks Moe' },\n { key: '14', text: 'Almec' },\n { key: '15', text: 'Alton Kastle' },\n { key: '16', text: 'Amee' },\n { key: '17', text: 'AP-5' },\n { key: '18', text: 'Armitage Hux' },\n { key: '19', text: 'Artoo' },\n { key: '20', text: 'Arvel Crynyd' },\n { key: '21', text: 'Asajj Ventress' },\n { key: '22', text: 'Aurra Sing' },\n { key: '23', text: 'AZI-3' },\n { key: '24', text: 'Bala-Tik' },\n { key: '25', text: 'Barada' },\n { key: '26', text: 'Bargwill Tomder' },\n { key: '27', text: 'Baron Papanoida' },\n { key: '28', text: 'Barriss Offee' },\n { key: '29', text: 'Baze Malbus' },\n { key: '30', text: 'Bazine Netal' },\n { key: '31', text: 'BB-8' },\n { key: '32', text: 'BB-9E' },\n { key: '33', text: 'Ben Quadinaros' },\n { key: '34', text: 'Berch Teller' },\n { key: '35', text: 'Beru Lars' },\n { key: '36', text: 'Bib Fortuna' },\n {\n key: '37',\n text: 'Biggs Darklighter',\n },\n { key: '38', text: 'Black Krrsantan' },\n { key: '39', text: 'Bo-Katan Kryze' },\n { key: '40', text: 'Boba Fett' },\n { key: '41', text: 'Bobbajo' },\n { key: '42', text: 'Bodhi Rook' },\n { key: '43', text: 'Borvo the Hutt' },\n { key: '44', text: 'Boss Nass' },\n { key: '45', text: 'Bossk' },\n {\n key: '46',\n text: 'Breha Antilles-Organa',\n },\n { key: '47', text: 'Bren Derlin' },\n { key: '48', text: 'Brendol Hux' },\n { key: '49', text: 'BT-1' },\n];\n",
+ "path": "plate-ui/mention-input-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mention-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/mode-dropdown-menu.json b/apps/www/public/r/styles/default/mode-dropdown-menu.json
new file mode 100644
index 0000000000..4f581a36ec
--- /dev/null
+++ b/apps/www/public/r/styles/default/mode-dropdown-menu.json
@@ -0,0 +1,17 @@
+{
+ "dependencies": [],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport {\n focusEditor,\n useEditorReadOnly,\n useEditorRef,\n usePlateStore,\n} from '@udecode/plate-common/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nexport function ModeDropdownMenu(props: DropdownMenuProps) {\n const editor = useEditorRef();\n const setReadOnly = usePlateStore().set.readOnly();\n const readOnly = useEditorReadOnly();\n const openState = useOpenState();\n\n let value = 'editing';\n\n if (readOnly) value = 'viewing';\n\n const item: any = {\n editing: (\n <>\n \n Editing \n >\n ),\n viewing: (\n <>\n \n Viewing \n >\n ),\n };\n\n return (\n \n \n \n {item[value]}\n \n \n\n \n {\n if (newValue !== 'viewing') {\n setReadOnly(false);\n }\n if (newValue === 'viewing') {\n setReadOnly(true);\n\n return;\n }\n if (newValue === 'editing') {\n focusEditor(editor);\n\n return;\n }\n }}\n >\n \n {item.editing}\n \n\n \n {item.viewing}\n \n \n \n \n );\n}\n",
+ "path": "plate-ui/mode-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "mode-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/more-dropdown-menu.json b/apps/www/public/r/styles/default/more-dropdown-menu.json
new file mode 100644
index 0000000000..2d094658c8
--- /dev/null
+++ b/apps/www/public/r/styles/default/more-dropdown-menu.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@udecode/plate-basic-marks"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport {\n SubscriptPlugin,\n SuperscriptPlugin,\n} from '@udecode/plate-basic-marks/react';\nimport { focusEditor, useEditorRef } from '@udecode/plate-common/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nexport function MoreDropdownMenu(props: DropdownMenuProps) {\n const editor = useEditorRef();\n const openState = useOpenState();\n\n return (\n \n \n \n \n \n \n\n \n {\n editor.tf.toggle.mark({\n key: SuperscriptPlugin.key,\n clear: [SubscriptPlugin.key, SuperscriptPlugin.key],\n });\n focusEditor(editor);\n }}\n >\n \n Superscript\n {/* (⌘+,) */}\n \n {\n editor.tf.toggle.mark({\n key: SubscriptPlugin.key,\n clear: [SuperscriptPlugin.key, SubscriptPlugin.key],\n });\n focusEditor(editor);\n }}\n >\n \n Subscript\n {/* (⌘+.) */}\n \n \n \n );\n}\n",
+ "path": "plate-ui/more-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "more-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/outdent-toolbar-button.json b/apps/www/public/r/styles/default/outdent-toolbar-button.json
new file mode 100644
index 0000000000..1613701961
--- /dev/null
+++ b/apps/www/public/r/styles/default/outdent-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-indent"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { useOutdentButton } from '@udecode/plate-indent/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const OutdentToolbarButton = withRef(\n (rest, ref) => {\n const { props } = useOutdentButton();\n\n return (\n \n \n \n );\n }\n);\n",
+ "path": "plate-ui/outdent-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "outdent-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/paragraph-element.json b/apps/www/public/r/styles/default/paragraph-element.json
new file mode 100644
index 0000000000..30c24b2058
--- /dev/null
+++ b/apps/www/public/r/styles/default/paragraph-element.json
@@ -0,0 +1,13 @@
+{
+ "files": [
+ {
+ "content": "import { withCn } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\n\nexport const ParagraphElement = withCn(PlateElement, 'm-0 px-0 py-1');\n",
+ "path": "plate-ui/paragraph-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "paragraph-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/placeholder.json b/apps/www/public/r/styles/default/placeholder.json
new file mode 100644
index 0000000000..7c6f98d460
--- /dev/null
+++ b/apps/www/public/r/styles/default/placeholder.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn } from '@udecode/cn';\nimport { ParagraphPlugin } from '@udecode/plate-common/react';\nimport {\n type PlaceholderProps,\n createNodeHOC,\n createNodesHOC,\n usePlaceholderState,\n} from '@udecode/plate-common/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\n\nexport const Placeholder = (props: PlaceholderProps) => {\n const { children, nodeProps, placeholder } = props;\n\n const { enabled } = usePlaceholderState(props);\n\n return React.Children.map(children, (child) => {\n return React.cloneElement(child, {\n className: child.props.className,\n nodeProps: {\n ...nodeProps,\n className: cn(\n enabled &&\n 'before:absolute before:cursor-text before:opacity-30 before:content-[attr(placeholder)]'\n ),\n placeholder,\n },\n });\n });\n};\n\nexport const withPlaceholder = createNodeHOC(Placeholder);\n\nexport const withPlaceholdersPrimitive = createNodesHOC(Placeholder);\n\nexport const withPlaceholders = (components: any) =>\n withPlaceholdersPrimitive(components, [\n {\n key: ParagraphPlugin.key,\n hideOnBlur: true,\n placeholder: 'Type a paragraph',\n query: {\n maxLevel: 1,\n },\n },\n {\n key: HEADING_KEYS.h1,\n hideOnBlur: false,\n placeholder: 'Untitled',\n },\n ]);\n",
+ "path": "plate-ui/placeholder.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "placeholder",
+ "registryDependencies": [
+ "paragraph-element"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/plate-types.json b/apps/www/public/r/styles/default/plate-types.json
new file mode 100644
index 0000000000..728d50626b
--- /dev/null
+++ b/apps/www/public/r/styles/default/plate-types.json
@@ -0,0 +1,13 @@
+{
+ "external": true,
+ "files": [
+ {
+ "content": "import type React from 'react';\n\nimport type { usePlaygroundEditor } from '@/registry/default/example/playground-demo';\nimport type { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport type {\n CodeBlockPlugin,\n CodeLinePlugin,\n} from '@udecode/plate-code-block/react';\nimport type { TCommentText } from '@udecode/plate-comments';\nimport type { ElementOf, TElement, TText } from '@udecode/plate-common';\nimport type { TExcalidrawElement } from '@udecode/plate-excalidraw';\nimport type { ExcalidrawPlugin } from '@udecode/plate-excalidraw/react';\nimport type { HEADING_KEYS } from '@udecode/plate-heading';\nimport type { HorizontalRulePlugin } from '@udecode/plate-horizontal-rule/react';\nimport type { TLinkElement } from '@udecode/plate-link';\nimport type { LinkPlugin } from '@udecode/plate-link/react';\nimport type { TTodoListItemElement } from '@udecode/plate-list';\nimport type {\n BulletedListPlugin,\n ListItemPlugin,\n NumberedListPlugin,\n TodoListPlugin,\n} from '@udecode/plate-list/react';\nimport type { TImageElement, TMediaEmbedElement } from '@udecode/plate-media';\nimport type { ImagePlugin, MediaEmbedPlugin } from '@udecode/plate-media/react';\nimport type {\n TMentionElement,\n TMentionInputElement,\n} from '@udecode/plate-mention';\nimport type {\n MentionInputPlugin,\n MentionPlugin,\n} from '@udecode/plate-mention/react';\nimport type { TTableElement } from '@udecode/plate-table';\nimport type {\n TableCellPlugin,\n TablePlugin,\n TableRowPlugin,\n} from '@udecode/plate-table/react';\nimport type { TToggleElement } from '@udecode/plate-toggle';\nimport type { TogglePlugin } from '@udecode/plate-toggle/react';\n\nimport {\n type ParagraphPlugin,\n useEditorRef,\n} from '@udecode/plate-common/react';\n\n/** Text */\n\nexport type EmptyText = {\n text: '';\n};\n\nexport type PlainText = {\n text: string;\n};\n\nexport interface RichText extends TText, TCommentText {\n backgroundColor?: React.CSSProperties['backgroundColor'];\n bold?: boolean;\n code?: boolean;\n color?: React.CSSProperties['color'];\n fontFamily?: React.CSSProperties['fontFamily'];\n fontSize?: React.CSSProperties['fontSize'];\n fontWeight?: React.CSSProperties['fontWeight'];\n italic?: boolean;\n kbd?: boolean;\n strikethrough?: boolean;\n subscript?: boolean;\n underline?: boolean;\n}\n\n/** Inline Elements */\n\nexport interface MyLinkElement extends TLinkElement {\n children: RichText[];\n type: typeof LinkPlugin.key;\n}\n\nexport interface MyMentionInputElement extends TMentionInputElement {\n children: [PlainText];\n type: typeof MentionInputPlugin.key;\n}\n\nexport interface MyMentionElement extends TMentionElement {\n children: [EmptyText];\n type: typeof MentionPlugin.key;\n}\n\nexport type MyInlineElement =\n | MyLinkElement\n | MyMentionElement\n | MyMentionInputElement;\n\nexport type MyInlineDescendant = MyInlineElement | RichText;\n\nexport type MyInlineChildren = MyInlineDescendant[];\n\n/** Block props */\n\nexport interface MyIndentProps {\n indent?: number;\n}\n\nexport interface MyIndentListProps extends MyIndentProps {\n listRestart?: number;\n listStart?: number;\n listStyleType?: string;\n}\n\nexport interface MyLineHeightProps {\n lineHeight?: React.CSSProperties['lineHeight'];\n}\n\nexport interface MyAlignProps {\n align?: React.CSSProperties['textAlign'];\n}\n\nexport interface MyBlockElement\n extends TElement,\n MyIndentListProps,\n MyLineHeightProps {\n id?: string;\n}\n\n/** Blocks */\n\nexport interface MyParagraphElement extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof ParagraphPlugin.key;\n}\n\nexport interface MyH1Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h1;\n}\n\nexport interface MyH2Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h2;\n}\n\nexport interface MyH3Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h3;\n}\n\nexport interface MyH4Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h4;\n}\n\nexport interface MyH5Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h5;\n}\n\nexport interface MyH6Element extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof HEADING_KEYS.h6;\n}\n\nexport interface MyBlockquoteElement extends MyBlockElement {\n children: MyInlineChildren;\n type: typeof BlockquotePlugin.key;\n}\n\nexport interface MyCodeBlockElement extends MyBlockElement {\n children: MyCodeLineElement[];\n type: typeof CodeBlockPlugin.key;\n}\n\nexport interface MyCodeLineElement extends TElement {\n children: PlainText[];\n type: typeof CodeLinePlugin.key;\n}\n\nexport interface MyTableElement extends TTableElement, MyBlockElement {\n children: MyTableRowElement[];\n type: typeof TablePlugin.key;\n}\n\nexport interface MyTableRowElement extends TElement {\n children: MyTableCellElement[];\n type: typeof TableRowPlugin.key;\n}\n\nexport interface MyTableCellElement extends TElement {\n children: MyNestableBlock[];\n type: typeof TableCellPlugin.key;\n}\n\nexport interface MyBulletedListElement extends TElement, MyBlockElement {\n children: MyListItemElement[];\n type: typeof BulletedListPlugin.key;\n}\n\nexport interface MyNumberedListElement extends TElement, MyBlockElement {\n children: MyListItemElement[];\n type: typeof NumberedListPlugin.key;\n}\n\nexport interface MyListItemElement extends TElement, MyBlockElement {\n children: MyInlineChildren;\n type: typeof ListItemPlugin.key;\n}\n\nexport interface MyTodoListElement\n extends TTodoListItemElement,\n MyBlockElement {\n children: MyInlineChildren;\n type: typeof TodoListPlugin.key;\n}\n\nexport interface MyToggleElement extends TToggleElement, MyBlockElement {\n children: MyInlineChildren;\n type: typeof TogglePlugin.key;\n}\n\nexport interface MyImageElement extends TImageElement, MyBlockElement {\n children: [EmptyText];\n type: typeof ImagePlugin.key;\n}\n\nexport interface MyMediaEmbedElement\n extends TMediaEmbedElement,\n MyBlockElement {\n children: [EmptyText];\n type: typeof MediaEmbedPlugin.key;\n}\n\nexport interface MyHrElement extends MyBlockElement {\n children: [EmptyText];\n type: typeof HorizontalRulePlugin.key;\n}\n\nexport interface MyExcalidrawElement\n extends TExcalidrawElement,\n MyBlockElement {\n children: [EmptyText];\n type: typeof ExcalidrawPlugin.key;\n}\n\nexport type MyNestableBlock = MyParagraphElement;\n\nexport type MyElement = ElementOf;\n\nexport type MyBlock = Exclude;\n\nexport type MyRootBlock =\n | MyBlockquoteElement\n | MyBulletedListElement\n | MyCodeBlockElement\n | MyExcalidrawElement\n | MyH1Element\n | MyH2Element\n | MyH3Element\n | MyH4Element\n | MyH5Element\n | MyH6Element\n | MyHrElement\n | MyImageElement\n | MyMediaEmbedElement\n | MyNumberedListElement\n | MyParagraphElement\n | MyTableElement\n | MyTodoListElement\n | MyToggleElement;\n\n/** Editor types */\n\nexport type MyValue = MyRootBlock[];\n\nexport type MyEditor = ReturnType;\n\nexport const useMyEditorRef = () => useEditorRef();\n",
+ "path": "lib/plate-types.ts",
+ "target": "",
+ "type": "registry:lib"
+ }
+ ],
+ "name": "plate-types",
+ "type": "registry:lib"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/popover.json b/apps/www/public/r/styles/default/popover.json
new file mode 100644
index 0000000000..05f59cbf2f
--- /dev/null
+++ b/apps/www/public/r/styles/default/popover.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-popover"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn, withRef } from '@udecode/cn';\nimport { cva } from 'class-variance-authority';\n\nexport const Popover = PopoverPrimitive.Root;\n\nexport const PopoverTrigger = PopoverPrimitive.Trigger;\n\nexport const PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport const popoverVariants = cva(\n 'w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 print:hidden'\n);\n\nexport const PopoverContent = withRef(\n ({ align = 'center', className, sideOffset = 4, style, ...props }, ref) => (\n \n \n \n )\n);\n",
+ "path": "plate-ui/popover.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "popover",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/resizable.json b/apps/www/public/r/styles/default/resizable.json
new file mode 100644
index 0000000000..bef4ba55a8
--- /dev/null
+++ b/apps/www/public/r/styles/default/resizable.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-resizable"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef, withVariants } from '@udecode/cn';\nimport {\n Resizable as ResizablePrimitive,\n ResizeHandle as ResizeHandlePrimitive,\n} from '@udecode/plate-resizable';\nimport { cva } from 'class-variance-authority';\n\nexport const mediaResizeHandleVariants = cva(\n cn(\n 'top-0 flex w-6 select-none flex-col justify-center',\n \"after:flex after:h-16 after:w-[3px] after:rounded-[6px] after:bg-ring after:opacity-0 after:content-['_'] group-hover:after:opacity-100\"\n ),\n {\n variants: {\n direction: {\n left: '-left-3 -ml-3 pl-3',\n right: '-right-3 -mr-3 items-end pr-3',\n },\n },\n }\n);\n\nconst resizeHandleVariants = cva(cn('absolute z-40'), {\n variants: {\n direction: {\n bottom: 'w-full cursor-row-resize',\n left: 'h-full cursor-col-resize',\n right: 'h-full cursor-col-resize',\n top: 'w-full cursor-row-resize',\n },\n },\n});\n\nconst ResizeHandleVariants = withVariants(\n ResizeHandlePrimitive,\n resizeHandleVariants,\n ['direction']\n);\n\nexport const ResizeHandle = withRef(\n (props, ref) => (\n \n )\n);\n\nconst resizableVariants = cva('', {\n variants: {\n align: {\n center: 'mx-auto',\n left: 'mr-auto',\n right: 'ml-auto',\n },\n },\n});\n\nexport const Resizable = withVariants(ResizablePrimitive, resizableVariants, [\n 'align',\n]);\n",
+ "path": "plate-ui/resizable.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "resizable",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/search-highlight-leaf.json b/apps/www/public/r/styles/default/search-highlight-leaf.json
new file mode 100644
index 0000000000..27c4a5f165
--- /dev/null
+++ b/apps/www/public/r/styles/default/search-highlight-leaf.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-find-replace"
+ ],
+ "files": [
+ {
+ "content": "import { withCn } from '@udecode/cn';\nimport { PlateLeaf } from '@udecode/plate-common/react';\n\nexport const SearchHighlightLeaf = withCn(PlateLeaf, 'bg-yellow-100');\n",
+ "path": "plate-ui/search-highlight-leaf.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "search-highlight-leaf",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/separator.json b/apps/www/public/r/styles/default/separator.json
new file mode 100644
index 0000000000..cc5ff32e73
--- /dev/null
+++ b/apps/www/public/r/styles/default/separator.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-separator"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport { withProps, withVariants } from '@udecode/cn';\nimport { cva } from 'class-variance-authority';\n\nconst separatorVariants = cva('shrink-0 bg-border', {\n defaultVariants: {\n orientation: 'horizontal',\n },\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'h-full w-px',\n },\n },\n});\n\nexport const Separator = withVariants(\n withProps(SeparatorPrimitive.Root, {\n decorative: true,\n orientation: 'horizontal',\n }),\n separatorVariants\n);\n",
+ "path": "plate-ui/separator.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "separator",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/slash-input-element.json b/apps/www/public/r/styles/default/slash-input-element.json
new file mode 100644
index 0000000000..f026267f31
--- /dev/null
+++ b/apps/www/public/r/styles/default/slash-input-element.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@udecode/plate-heading",
+ "@udecode/plate-indent-list"
+ ],
+ "files": [
+ {
+ "content": "import React, { type ComponentType, type SVGProps } from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { type PlateEditor, PlateElement } from '@udecode/plate-common/react';\nimport { DatePlugin } from '@udecode/plate-date/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\nimport { ListStyleType, toggleIndentList } from '@udecode/plate-indent-list';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n} from './inline-combobox';\n\ninterface SlashCommandRule {\n icon: ComponentType>;\n onSelect: (editor: PlateEditor) => void;\n value: string;\n keywords?: string[];\n}\n\nconst rules: SlashCommandRule[] = [\n {\n icon: Icons.h1,\n value: 'Heading 1',\n onSelect: (editor) => {\n editor.tf.toggle.block({ type: HEADING_KEYS.h1 });\n },\n },\n {\n icon: Icons.h2,\n value: 'Heading 2',\n onSelect: (editor) => {\n editor.tf.toggle.block({ type: HEADING_KEYS.h2 });\n },\n },\n {\n icon: Icons.h3,\n value: 'Heading 3',\n onSelect: (editor) => {\n editor.tf.toggle.block({ type: HEADING_KEYS.h3 });\n },\n },\n {\n icon: Icons.ul,\n keywords: ['ul', 'unordered list'],\n value: 'Bulleted list',\n onSelect: (editor) => {\n toggleIndentList(editor, {\n listStyleType: ListStyleType.Disc,\n });\n },\n },\n {\n icon: Icons.ol,\n keywords: ['ol', 'ordered list'],\n value: 'Numbered list',\n onSelect: (editor) => {\n toggleIndentList(editor, {\n listStyleType: ListStyleType.Decimal,\n });\n },\n },\n {\n icon: Icons.add,\n keywords: ['inline', 'date'],\n value: 'Date',\n onSelect: (editor) => {\n editor.getTransforms(DatePlugin).insert.date();\n },\n },\n];\n\nexport const SlashInputElement = withRef(\n ({ className, ...props }, ref) => {\n const { children, editor, element } = props;\n\n return (\n \n \n \n\n \n \n No matching commands found\n \n\n {rules.map(({ icon: Icon, keywords, value, onSelect }) => (\n onSelect(editor)}\n keywords={keywords}\n >\n \n {value}\n \n ))}\n \n \n\n {children}\n \n );\n }\n);\n",
+ "path": "plate-ui/slash-input-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "slash-input-element",
+ "registryDependencies": [
+ "inline-combobox"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/table-cell-element.json b/apps/www/public/r/styles/default/table-cell-element.json
new file mode 100644
index 0000000000..a17957cf64
--- /dev/null
+++ b/apps/www/public/r/styles/default/table-cell-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withProps, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport {\n useTableCellElement,\n useTableCellElementResizable,\n useTableCellElementResizableState,\n useTableCellElementState,\n} from '@udecode/plate-table/react';\n\nimport { ResizeHandle } from './resizable';\n\nexport const TableCellElement = withRef<\n typeof PlateElement,\n {\n hideBorder?: boolean;\n isHeader?: boolean;\n }\n>(({ children, className, hideBorder, isHeader, style, ...props }, ref) => {\n const { element } = props;\n\n const {\n borders,\n colIndex,\n colSpan,\n hovered,\n hoveredLeft,\n isSelectingCell,\n readOnly,\n rowIndex,\n rowSize,\n selected,\n } = useTableCellElementState();\n const { props: cellProps } = useTableCellElement({ element: props.element });\n const resizableState = useTableCellElementResizableState({\n colIndex,\n colSpan,\n rowIndex,\n });\n\n const { bottomProps, hiddenLeft, leftProps, rightProps } =\n useTableCellElementResizable(resizableState);\n\n const Cell = isHeader ? 'th' : 'td';\n\n return (\n _*]:m-0',\n 'before:size-full',\n selected && 'before:z-10 before:bg-muted',\n \"before:absolute before:box-border before:select-none before:content-['']\",\n borders &&\n cn(\n borders.bottom?.size &&\n `before:border-b before:border-b-border`,\n borders.right?.size && `before:border-r before:border-r-border`,\n borders.left?.size && `before:border-l before:border-l-border`,\n borders.top?.size && `before:border-t before:border-t-border`\n )\n ),\n className\n )}\n {...cellProps}\n {...props}\n style={\n {\n '--cellBackground': element.background,\n ...style,\n } as React.CSSProperties\n }\n >\n \n \n {children}\n \n\n {!isSelectingCell && (\n \n {!readOnly && (\n <>\n \n \n {!hiddenLeft && (\n \n )}\n\n {hovered && (\n
\n )}\n {hoveredLeft && (\n
\n )}\n >\n )}\n \n )}\n | \n \n );\n});\n\nTableCellElement.displayName = 'TableCellElement';\n\nexport const TableCellHeaderElement = withProps(TableCellElement, {\n isHeader: true,\n});\n",
+ "path": "plate-ui/table-cell-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-cell-element",
+ "registryDependencies": [
+ "resizable"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/table-dropdown-menu.json b/apps/www/public/r/styles/default/table-dropdown-menu.json
new file mode 100644
index 0000000000..eab4f072f7
--- /dev/null
+++ b/apps/www/public/r/styles/default/table-dropdown-menu.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport { someNode } from '@udecode/plate-common';\nimport {\n focusEditor,\n useEditorPlugin,\n useEditorSelector,\n} from '@udecode/plate-common/react';\nimport { deleteTable, insertTableRow } from '@udecode/plate-table';\nimport {\n TablePlugin,\n deleteColumn,\n deleteRow,\n insertTable,\n} from '@udecode/plate-table/react';\n\nimport { Icons, iconVariants } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nexport function TableDropdownMenu(props: DropdownMenuProps) {\n const tableSelected = useEditorSelector(\n (editor) => someNode(editor, { match: { type: TablePlugin.key } }),\n []\n );\n\n const { editor, tf } = useEditorPlugin(TablePlugin);\n\n const openState = useOpenState();\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n Table \n \n \n {\n insertTable(editor);\n focusEditor(editor);\n }}\n >\n \n Insert table\n \n {\n deleteTable(editor);\n focusEditor(editor);\n }}\n >\n \n Delete table\n \n \n \n\n \n \n \n Column \n \n \n {\n tf.insert.tableColumn();\n focusEditor(editor);\n }}\n >\n \n Insert column after\n \n {\n deleteColumn(editor);\n focusEditor(editor);\n }}\n >\n \n Delete column\n \n \n \n\n \n \n \n Row \n \n \n {\n insertTableRow(editor);\n focusEditor(editor);\n }}\n >\n \n Insert row after\n \n {\n deleteRow(editor);\n focusEditor(editor);\n }}\n >\n \n Delete row\n \n \n \n \n \n );\n}\n",
+ "path": "plate-ui/table-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/table-element.json b/apps/www/public/r/styles/default/table-element.json
new file mode 100644
index 0000000000..abba3ca04d
--- /dev/null
+++ b/apps/www/public/r/styles/default/table-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { TTableElement } from '@udecode/plate-table';\n\nimport { PopoverAnchor } from '@radix-ui/react-popover';\nimport { cn, withRef } from '@udecode/cn';\nimport { isSelectionExpanded } from '@udecode/plate-common';\nimport {\n PlateElement,\n useEditorRef,\n useEditorSelector,\n useElement,\n useRemoveNodeButton,\n withHOC,\n} from '@udecode/plate-common/react';\nimport {\n TableProvider,\n mergeTableCells,\n unmergeTableCells,\n useTableBordersDropdownMenuContentState,\n useTableElement,\n useTableElementState,\n useTableMergeState,\n} from '@udecode/plate-table/react';\nimport { useReadOnly, useSelected } from 'slate-react';\n\nimport { Icons, iconVariants } from '@/components/icons';\n\nimport { Button } from './button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n} from './dropdown-menu';\nimport { Popover, PopoverContent, popoverVariants } from './popover';\nimport { Separator } from './separator';\n\nexport const TableBordersDropdownMenuContent = withRef<\n typeof DropdownMenuPrimitive.Content\n>((props, ref) => {\n const {\n getOnSelectTableBorder,\n hasBottomBorder,\n hasLeftBorder,\n hasNoBorders,\n hasOuterBorders,\n hasRightBorder,\n hasTopBorder,\n } = useTableBordersDropdownMenuContentState();\n\n return (\n \n \n \n Bottom Border
\n \n \n \n Top Border
\n \n \n \n Left Border
\n \n \n \n Right Border
\n \n\n \n\n \n \n No Border
\n \n \n \n Outside Borders
\n \n \n );\n});\n\nexport const TableFloatingToolbar = withRef(\n ({ children, ...props }, ref) => {\n const element = useElement();\n const { props: buttonProps } = useRemoveNodeButton({ element });\n\n const selectionCollapsed = useEditorSelector(\n (editor) => !isSelectionExpanded(editor),\n []\n );\n\n const readOnly = useReadOnly();\n const selected = useSelected();\n const editor = useEditorRef();\n\n const collapsed = !readOnly && selected && selectionCollapsed;\n const open = !readOnly && selected;\n\n const { canMerge, canUnmerge } = useTableMergeState();\n\n const mergeContent = canMerge && (\n mergeTableCells(editor)}\n contentEditable={false}\n isMenu\n >\n \n Merge\n \n );\n\n const unmergeButton = canUnmerge && (\n unmergeTableCells(editor)}\n contentEditable={false}\n isMenu\n >\n \n Unmerge\n \n );\n\n const bordersContent = collapsed && (\n <>\n \n \n \n \n Borders\n \n \n\n \n \n \n \n\n \n \n Delete\n \n >\n );\n\n return (\n \n {children} \n {(canMerge || canUnmerge || collapsed) && (\n e.preventDefault()}\n {...props}\n >\n {unmergeButton}\n {mergeContent}\n {bordersContent}\n \n )}\n \n );\n }\n);\n\nexport const TableElement = withHOC(\n TableProvider,\n withRef(({ children, className, ...props }, ref) => {\n const { colSizes, isSelectingCell, marginLeft, minColumnWidth } =\n useTableElementState();\n const { colGroupProps, props: tableProps } = useTableElement();\n\n return (\n \n \n
\n \n \n {colSizes.map((width, index) => (\n \n ))}\n \n\n {children} \n
\n \n
\n \n );\n })\n);\n",
+ "path": "plate-ui/table-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-element",
+ "registryDependencies": [
+ "dropdown-menu"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/table-row-element.json b/apps/www/public/r/styles/default/table-row-element.json
new file mode 100644
index 0000000000..d0b11642cd
--- /dev/null
+++ b/apps/www/public/r/styles/default/table-row-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-table"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\n\nexport const TableRowElement = withRef<\n typeof PlateElement,\n {\n hideBorder?: boolean;\n }\n>(({ children, hideBorder, ...props }, ref) => {\n return (\n \n {children} \n \n );\n});\n",
+ "path": "plate-ui/table-row-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "table-row-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/theme-daylight.json b/apps/www/public/r/styles/default/theme-daylight.json
new file mode 100644
index 0000000000..4caa9ed2af
--- /dev/null
+++ b/apps/www/public/r/styles/default/theme-daylight.json
@@ -0,0 +1,58 @@
+{
+ "cssVars": {
+ "dark": {
+ "accent": "36 64% 57%",
+ "accent-foreground": "36 72% 17%",
+ "background": "36 39% 88%",
+ "border": "36 45% 60%",
+ "card": "36 46% 82%",
+ "card-foreground": "36 45% 20%",
+ "chart-1": "25 34% 28%",
+ "chart-2": "26 36% 34%",
+ "chart-3": "28 40% 40%",
+ "chart-4": "31 41% 48%",
+ "chart-5": "35 43% 53%",
+ "destructive": "0 84% 37%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "36 45% 15%",
+ "input": "36 45% 60%",
+ "muted": "36 33% 75%",
+ "muted-foreground": "36 45% 25%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "240 10% 3.9%",
+ "primary": "36 45% 70%",
+ "primary-foreground": "36 45% 11%",
+ "ring": "36 45% 30%",
+ "secondary": "40 35% 77%",
+ "secondary-foreground": "36 45% 25%"
+ },
+ "light": {
+ "accent": "36 64% 57%",
+ "accent-foreground": "36 72% 17%",
+ "background": "36 39% 88%",
+ "border": "36 45% 60%",
+ "card": "36 46% 82%",
+ "card-foreground": "36 45% 20%",
+ "chart-1": "25 34% 28%",
+ "chart-2": "26 36% 34%",
+ "chart-3": "28 40% 40%",
+ "chart-4": "31 41% 48%",
+ "chart-5": "35 43% 53%",
+ "destructive": "0 84% 37%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "36 45% 15%",
+ "input": "36 45% 60%",
+ "muted": "36 33% 75%",
+ "muted-foreground": "36 45% 25%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "240 10% 3.9%",
+ "primary": "36 45% 70%",
+ "primary-foreground": "36 45% 11%",
+ "ring": "36 45% 30%",
+ "secondary": "40 35% 77%",
+ "secondary-foreground": "36 45% 25%"
+ }
+ },
+ "name": "theme-daylight",
+ "type": "registry:theme"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/theme-emerald.json b/apps/www/public/r/styles/default/theme-emerald.json
new file mode 100644
index 0000000000..40bdec100d
--- /dev/null
+++ b/apps/www/public/r/styles/default/theme-emerald.json
@@ -0,0 +1,58 @@
+{
+ "cssVars": {
+ "dark": {
+ "accent": "240 3.7% 15.9%",
+ "accent-foreground": "0 0% 98%",
+ "background": "240 10% 3.9%",
+ "border": "240 3.7% 15.9%",
+ "card": "240 10% 3.9%",
+ "card-foreground": "0 0% 98%",
+ "chart-1": "142 88% 28%",
+ "chart-2": "139 65% 20%",
+ "chart-3": "140 74% 24%",
+ "chart-4": "137 55% 15%",
+ "chart-5": "141 40% 9%",
+ "destructive": "0 72% 51%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 98%",
+ "input": "240 3.7% 15.9%",
+ "muted": "240 3.7% 15.9%",
+ "muted-foreground": "240 5% 64.9%",
+ "popover": "240 10% 3.9%",
+ "popover-foreground": "0 0% 98%",
+ "primary": "142 86% 28%",
+ "primary-foreground": "356 29% 98%",
+ "ring": "142 86% 28%",
+ "secondary": "240 4.8% 95.9%",
+ "secondary-foreground": "240 5.9% 10%"
+ },
+ "light": {
+ "accent": "240 4.8% 95.9%",
+ "accent-foreground": "240 5.9% 10%",
+ "background": "0 0% 100%",
+ "border": "240 5.9% 90%",
+ "card": "0 0% 100%",
+ "card-foreground": "240 10% 3.9%",
+ "chart-1": "139 65% 20%",
+ "chart-2": "140 74% 44%",
+ "chart-3": "142 88% 28%",
+ "chart-4": "137 55% 15%",
+ "chart-5": "141 40% 9%",
+ "destructive": "0 72% 51%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "240 10% 3.9%",
+ "input": "240 5.9% 90%",
+ "muted": "240 4.8% 95.9%",
+ "muted-foreground": "240 3.8% 45%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "240 10% 3.9%",
+ "primary": "142 86% 28%",
+ "primary-foreground": "356 29% 98%",
+ "ring": "142 86% 28%",
+ "secondary": "240 4.8% 95.9%",
+ "secondary-foreground": "240 5.9% 10%"
+ }
+ },
+ "name": "theme-emerald",
+ "type": "registry:theme"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/theme-midnight.json b/apps/www/public/r/styles/default/theme-midnight.json
new file mode 100644
index 0000000000..995298a3f4
--- /dev/null
+++ b/apps/www/public/r/styles/default/theme-midnight.json
@@ -0,0 +1,58 @@
+{
+ "cssVars": {
+ "dark": {
+ "accent": "240 0% 13%",
+ "accent-foreground": "60 0% 100%",
+ "background": "240 5% 6%",
+ "border": "240 6% 20%",
+ "card": "240 4% 10%",
+ "card-foreground": "60 5% 90%",
+ "chart-1": "359 2% 90%",
+ "chart-2": "240 1% 74%",
+ "chart-3": "240 1% 58%",
+ "chart-4": "240 1% 42%",
+ "chart-5": "240 2% 26%",
+ "destructive": "0 60% 50%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "60 5% 90%",
+ "input": "240 6% 20%",
+ "muted": "240 5% 25%",
+ "muted-foreground": "60 5% 85%",
+ "popover": "240 5% 15%",
+ "popover-foreground": "60 5% 85%",
+ "primary": "240 0% 90%",
+ "primary-foreground": "60 0% 0%",
+ "ring": "240 5% 90%",
+ "secondary": "240 4% 15%",
+ "secondary-foreground": "60 5% 85%"
+ },
+ "light": {
+ "accent": "240 0% 13%",
+ "accent-foreground": "60 0% 100%",
+ "background": "240 5% 6%",
+ "border": "240 6% 20%",
+ "card": "240 4% 10%",
+ "card-foreground": "60 5% 90%",
+ "chart-1": "359 2% 90%",
+ "chart-2": "240 1% 74%",
+ "chart-3": "240 1% 58%",
+ "chart-4": "240 1% 42%",
+ "chart-5": "240 2% 26%",
+ "destructive": "0 60% 50%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "60 5% 90%",
+ "input": "240 6% 20%",
+ "muted": "240 5% 25%",
+ "muted-foreground": "60 5% 85%",
+ "popover": "240 5% 15%",
+ "popover-foreground": "60 5% 85%",
+ "primary": "240 0% 90%",
+ "primary-foreground": "60 0% 0%",
+ "ring": "240 5% 90%",
+ "secondary": "240 4% 15%",
+ "secondary-foreground": "60 5% 85%"
+ }
+ },
+ "name": "theme-midnight",
+ "type": "registry:theme"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/todo-list-element.json b/apps/www/public/r/styles/default/todo-list-element.json
new file mode 100644
index 0000000000..3bd6e5a247
--- /dev/null
+++ b/apps/www/public/r/styles/default/todo-list-element.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-list"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport {\n useTodoListElement,\n useTodoListElementState,\n} from '@udecode/plate-list/react';\n\nimport { Checkbox } from './checkbox';\n\nexport const TodoListElement = withRef(\n ({ children, className, ...props }, ref) => {\n const { element } = props;\n const state = useTodoListElementState({ element });\n const { checkboxProps } = useTodoListElement(state);\n\n return (\n \n \n \n
\n \n {children}\n \n \n );\n }\n);\n",
+ "path": "plate-ui/todo-list-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "todo-list-element",
+ "registryDependencies": [
+ "checkbox"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/toggle-element.json b/apps/www/public/r/styles/default/toggle-element.json
new file mode 100644
index 0000000000..6c583fcdef
--- /dev/null
+++ b/apps/www/public/r/styles/default/toggle-element.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@udecode/plate-toggle"
+ ],
+ "files": [
+ {
+ "content": "import { withRef } from '@udecode/cn';\nimport { PlateElement, useElement } from '@udecode/plate-common/react';\nimport {\n useToggleButton,\n useToggleButtonState,\n} from '@udecode/plate-toggle/react';\n\nimport { Icons } from '@/components/icons';\n\nexport const ToggleElement = withRef(\n ({ children, ...props }, ref) => {\n const element = useElement();\n const state = useToggleButtonState(element.id as string);\n const { buttonProps, open } = useToggleButton(state);\n\n return (\n \n \n \n {open ? : }\n \n {children}\n
\n \n );\n }\n);\n",
+ "path": "plate-ui/toggle-element.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toggle-element",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/toggle-toolbar-button.json b/apps/www/public/r/styles/default/toggle-toolbar-button.json
new file mode 100644
index 0000000000..511152b3e7
--- /dev/null
+++ b/apps/www/public/r/styles/default/toggle-toolbar-button.json
@@ -0,0 +1,18 @@
+{
+ "dependencies": [
+ "@udecode/plate-toggle"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport {\n useToggleToolbarButton,\n useToggleToolbarButtonState,\n} from '@udecode/plate-toggle/react';\n\nimport { Icons } from '@/components/icons';\n\nimport { ToolbarButton } from './toolbar';\n\nexport const ToggleToolbarButton = withRef(\n (rest, ref) => {\n const state = useToggleToolbarButtonState();\n const { props } = useToggleToolbarButton(state);\n\n return (\n \n \n \n );\n }\n);\n",
+ "path": "plate-ui/toggle-toolbar-button.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toggle-toolbar-button",
+ "registryDependencies": [
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/toolbar.json b/apps/www/public/r/styles/default/toolbar.json
new file mode 100644
index 0000000000..9197df6d92
--- /dev/null
+++ b/apps/www/public/r/styles/default/toolbar.json
@@ -0,0 +1,19 @@
+{
+ "dependencies": [
+ "@radix-ui/react-toolbar"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport * as React from 'react';\n\nimport * as ToolbarPrimitive from '@radix-ui/react-toolbar';\nimport { cn, withCn, withRef, withVariants } from '@udecode/cn';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { Icons } from '@/components/icons';\n\nimport { Separator } from './separator';\nimport { withTooltip } from './tooltip';\n\nexport const Toolbar = withCn(\n ToolbarPrimitive.Root,\n 'relative flex select-none items-center gap-1 bg-background'\n);\n\nexport const ToolbarToggleGroup = withCn(\n ToolbarPrimitive.ToolbarToggleGroup,\n 'flex items-center'\n);\n\nexport const ToolbarLink = withCn(\n ToolbarPrimitive.Link,\n 'font-medium underline underline-offset-4'\n);\n\nexport const ToolbarSeparator = withCn(\n ToolbarPrimitive.Separator,\n 'my-1 w-px shrink-0 bg-border'\n);\n\nconst toolbarButtonVariants = cva(\n cn(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium text-foreground 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',\n '[&_svg:not([data-icon])]:size-5'\n ),\n {\n defaultVariants: {\n size: 'sm',\n variant: 'default',\n },\n variants: {\n size: {\n default: 'h-10 px-3',\n lg: 'h-11 px-5',\n sm: 'h-9 px-2',\n },\n variant: {\n default:\n 'bg-transparent hover:bg-muted hover:text-muted-foreground aria-checked:bg-accent aria-checked:text-accent-foreground',\n outline:\n 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n },\n },\n }\n);\n\nconst ToolbarButton = withTooltip(\n // eslint-disable-next-line react/display-name\n React.forwardRef<\n React.ElementRef,\n {\n isDropdown?: boolean;\n pressed?: boolean;\n } & Omit<\n React.ComponentPropsWithoutRef,\n 'asChild' | 'value'\n > &\n VariantProps\n >(\n (\n { children, className, isDropdown, pressed, size, variant, ...props },\n ref\n ) => {\n return typeof pressed === 'boolean' ? (\n \n \n {isDropdown ? (\n <>\n {children}
\n \n \n
\n >\n ) : (\n children\n )}\n \n \n ) : (\n \n {children}\n \n );\n }\n )\n);\nToolbarButton.displayName = 'ToolbarButton';\n\nexport { ToolbarButton };\n\nexport const ToolbarToggleItem = withVariants(\n ToolbarPrimitive.ToggleItem,\n toolbarButtonVariants,\n ['variant', 'size']\n);\n\nexport const ToolbarGroup = withRef<\n 'div',\n {\n noSeparator?: boolean;\n }\n>(({ children, className, noSeparator }, ref) => {\n const childArr = React.Children.map(children, (c) => c);\n\n if (!childArr || childArr.length === 0) return null;\n\n return (\n \n {!noSeparator && (\n
\n \n
\n )}\n\n
{children}
\n
\n );\n});\n",
+ "path": "plate-ui/toolbar.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "toolbar",
+ "registryDependencies": [
+ "tooltip",
+ "separator"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/tooltip.json b/apps/www/public/r/styles/default/tooltip.json
new file mode 100644
index 0000000000..949704ca00
--- /dev/null
+++ b/apps/www/public/r/styles/default/tooltip.json
@@ -0,0 +1,16 @@
+{
+ "dependencies": [
+ "@radix-ui/react-tooltip"
+ ],
+ "files": [
+ {
+ "content": "'use client';\n\nimport React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { withCn, withProps } from '@udecode/cn';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport const Tooltip = TooltipPrimitive.Root;\n\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipPortal = TooltipPrimitive.Portal;\n\nexport const TooltipContent = withCn(\n withProps(TooltipPrimitive.Content, {\n sideOffset: 4,\n }),\n 'z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md'\n);\n\nexport function withTooltip<\n T extends React.ComponentType | keyof HTMLElementTagNameMap,\n>(Component: T) {\n return React.forwardRef<\n React.ElementRef,\n {\n tooltipContentProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltipProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltip?: React.ReactNode;\n } & React.ComponentPropsWithoutRef\n >(function ExtendComponent(\n { tooltip, tooltipContentProps, tooltipProps, ...props },\n ref\n ) {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n const component = ;\n\n if (tooltip && mounted) {\n return (\n \n {component} \n\n \n {tooltip} \n \n \n );\n }\n\n return component;\n });\n}\n",
+ "path": "plate-ui/tooltip.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "tooltip",
+ "registryDependencies": [],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/turn-into-dropdown-menu.json b/apps/www/public/r/styles/default/turn-into-dropdown-menu.json
new file mode 100644
index 0000000000..0ccbce78a8
--- /dev/null
+++ b/apps/www/public/r/styles/default/turn-into-dropdown-menu.json
@@ -0,0 +1,20 @@
+{
+ "dependencies": [
+ "@udecode/plate-block-quote",
+ "@udecode/plate-heading"
+ ],
+ "files": [
+ {
+ "content": "import React from 'react';\n\nimport type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\n\nimport { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport {\n collapseSelection,\n getNodeEntries,\n isBlock,\n} from '@udecode/plate-common';\nimport {\n ParagraphPlugin,\n focusEditor,\n useEditorRef,\n useEditorSelector,\n} from '@udecode/plate-common/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n useOpenState,\n} from './dropdown-menu';\nimport { ToolbarButton } from './toolbar';\n\nconst items = [\n {\n description: 'Paragraph',\n icon: Icons.paragraph,\n label: 'Paragraph',\n value: ParagraphPlugin.key,\n },\n {\n description: 'Heading 1',\n icon: Icons.h1,\n label: 'Heading 1',\n value: HEADING_KEYS.h1,\n },\n {\n description: 'Heading 2',\n icon: Icons.h2,\n label: 'Heading 2',\n value: HEADING_KEYS.h2,\n },\n {\n description: 'Heading 3',\n icon: Icons.h3,\n label: 'Heading 3',\n value: HEADING_KEYS.h3,\n },\n {\n description: 'Quote (⌘+⇧+.)',\n icon: Icons.blockquote,\n label: 'Quote',\n value: BlockquotePlugin.key,\n },\n // {\n // value: 'ul',\n // label: 'Bulleted list',\n // description: 'Bulleted list',\n // icon: Icons.ul,\n // },\n // {\n // value: 'ol',\n // label: 'Numbered list',\n // description: 'Numbered list',\n // icon: Icons.ol,\n // },\n];\n\nconst defaultItem = items.find((item) => item.value === ParagraphPlugin.key)!;\n\nexport function TurnIntoDropdownMenu(props: DropdownMenuProps) {\n const value: string = useEditorSelector((editor) => {\n let initialNodeType: string = ParagraphPlugin.key;\n let allNodesMatchInitialNodeType = false;\n const codeBlockEntries = getNodeEntries(editor, {\n match: (n) => isBlock(editor, n),\n mode: 'highest',\n });\n const nodes = Array.from(codeBlockEntries);\n\n if (nodes.length > 0) {\n initialNodeType = nodes[0][0].type as string;\n allNodesMatchInitialNodeType = nodes.every(([node]) => {\n const type: string = (node?.type as string) || ParagraphPlugin.key;\n\n return type === initialNodeType;\n });\n }\n\n return allNodesMatchInitialNodeType ? initialNodeType : ParagraphPlugin.key;\n }, []);\n\n const editor = useEditorRef();\n const openState = useOpenState();\n\n const selectedItem =\n items.find((item) => item.value === value) ?? defaultItem;\n const { icon: SelectedItemIcon, label: selectedItemLabel } = selectedItem;\n\n return (\n \n \n \n \n {selectedItemLabel} \n \n \n\n \n Turn into \n\n {\n // if (type === 'ul' || type === 'ol') {\n // if (settingsStore.get.checkedId(IndentListPlugin.key)) {\n // toggleIndentList(editor, {\n // listStyleType: type === 'ul' ? 'disc' : 'decimal',\n // });\n // } else if (settingsStore.get.checkedId('list')) {\n // toggleList(editor, { type });\n // }\n // } else {\n // unwrapList(editor);\n editor.tf.toggle.block({ type });\n // }\n\n collapseSelection(editor);\n focusEditor(editor);\n }}\n >\n {items.map(({ icon: Icon, label, value: itemValue }) => (\n \n \n {label}\n \n ))}\n \n \n \n );\n}\n",
+ "path": "plate-ui/turn-into-dropdown-menu.tsx",
+ "target": "",
+ "type": "registry:ui"
+ }
+ ],
+ "name": "turn-into-dropdown-menu",
+ "registryDependencies": [
+ "dropdown-menu",
+ "toolbar"
+ ],
+ "type": "registry:ui"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/use-debounce.json b/apps/www/public/r/styles/default/use-debounce.json
new file mode 100644
index 0000000000..9fb7aafb2b
--- /dev/null
+++ b/apps/www/public/r/styles/default/use-debounce.json
@@ -0,0 +1,11 @@
+{
+ "files": [
+ {
+ "content": "import * as React from 'react';\n\nexport const useDebounce = (value: T, delay = 500) => {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler: NodeJS.Timeout = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n};\n",
+ "path": "hooks/use-debounce.ts",
+ "type": "registry:hook"
+ }
+ ],
+ "name": "use-debounce",
+ "type": "registry:hook"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/default/utils.json b/apps/www/public/r/styles/default/utils.json
new file mode 100644
index 0000000000..9f9205a62a
--- /dev/null
+++ b/apps/www/public/r/styles/default/utils.json
@@ -0,0 +1,15 @@
+{
+ "dependencies": [
+ "clsx",
+ "tailwind-merge"
+ ],
+ "files": [
+ {
+ "content": "import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n",
+ "path": "lib/utils.ts",
+ "type": "registry:lib"
+ }
+ ],
+ "name": "utils",
+ "type": "registry:lib"
+}
\ No newline at end of file
diff --git a/apps/www/public/r/styles/index.json b/apps/www/public/r/styles/index.json
new file mode 100644
index 0000000000..ffaacc0086
--- /dev/null
+++ b/apps/www/public/r/styles/index.json
@@ -0,0 +1,6 @@
+[
+ {
+ "label": "Default",
+ "name": "default"
+ }
+]
\ No newline at end of file
diff --git a/apps/www/public/r/themes.css b/apps/www/public/r/themes.css
new file mode 100644
index 0000000000..41f074cc5c
--- /dev/null
+++ b/apps/www/public/r/themes.css
@@ -0,0 +1,768 @@
+
+.theme-zinc {
+ --background: 0 0% 100%;
+ --foreground: 240 10% 3.9%;
+
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 240 10% 3.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 240 10% 3.9%;
+
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+
+ --primary: 240 5.9% 10%;
+ --primary-foreground: 0 0% 98%;
+
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
+
+ --accent: 240 4.8% 95.9%;
+ --accent-foreground: 240 5.9% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 240 5.9% 10%;
+
+ --radius: 0.5rem;
+}
+
+.dark .theme-zinc {
+ --background: 240 10% 3.9%;
+ --foreground: 0 0% 98%;
+
+ --muted: 240 3.7% 15.9%;
+ --muted-foreground: 240 5% 64.9%;
+
+ --popover: 240 10% 3.9%;
+ --popover-foreground: 0 0% 98%;
+
+ --card: 240 10% 3.9%;
+ --card-foreground: 0 0% 98%;
+
+ --border: 240 3.7% 25%;
+ --input: 240 3.7% 25%;
+
+ --primary: 0 0% 98%;
+ --primary-foreground: 240 5.9% 10%;
+
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --accent: 240 3.7% 15.9%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 240 4.9% 83.9%;
+}
+
+.theme-slate {
+ --background: 0 0% 100%;
+ --foreground: 222.2 84% 4.9%;
+
+ --muted: 210 40% 96.1%;
+ --muted-foreground: 215.4 16.3% 46.9%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 222.2 84% 4.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 222.2 84% 4.9%;
+
+ --border: 214.3 31.8% 91.4%;
+ --input: 214.3 31.8% 91.4%;
+
+ --primary: 222.2 47.4% 11.2%;
+ --primary-foreground: 210 40% 98%;
+
+ --secondary: 210 40% 96.1%;
+ --secondary-foreground: 222.2 47.4% 11.2%;
+
+ --accent: 210 40% 96.1%;
+ --accent-foreground: 222.2 47.4% 11.2%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 210 40% 98%;
+
+ --ring: 215 20.2% 65.1%;
+
+ --radius: 0.5rem;
+}
+
+.dark .theme-slate {
+ --background: 222.2 84% 4.9%;
+ --foreground: 210 40% 98%;
+
+ --muted: 217.2 32.6% 17.5%;
+ --muted-foreground: 215 20.2% 65.1%;
+
+ --popover: 222.2 84% 4.9%;
+ --popover-foreground: 210 40% 98%;
+
+ --card: 222.2 84% 4.9%;
+ --card-foreground: 210 40% 98%;
+
+ --border: 217.2 32.6% 17.5%;
+ --input: 217.2 32.6% 17.5%;
+
+ --primary: 210 40% 98%;
+ --primary-foreground: 222.2 47.4% 11.2%;
+
+ --secondary: 217.2 32.6% 17.5%;
+ --secondary-foreground: 210 40% 98%;
+
+ --accent: 217.2 32.6% 17.5%;
+ --accent-foreground: 210 40% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 210 40% 98%;
+
+ --ring: 217.2 32.6% 17.5%;
+}
+
+.theme-stone {
+ --background: 0 0% 100%;
+ --foreground: 20 14.3% 4.1%;
+
+ --muted: 60 4.8% 95.9%;
+ --muted-foreground: 25 5.3% 44.7%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 20 14.3% 4.1%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 20 14.3% 4.1%;
+
+ --border: 20 5.9% 90%;
+ --input: 20 5.9% 90%;
+
+ --primary: 24 9.8% 10%;
+ --primary-foreground: 60 9.1% 97.8%;
+
+ --secondary: 60 4.8% 95.9%;
+ --secondary-foreground: 24 9.8% 10%;
+
+ --accent: 60 4.8% 95.9%;
+ --accent-foreground: 24 9.8% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 20 14.3% 4.1%;
+
+ --radius: 0.95rem;
+}
+
+.dark .theme-stone {
+ --background: 20 14.3% 4.1%;
+ --foreground: 60 9.1% 97.8%;
+
+ --muted: 12 6.5% 15.1%;
+ --muted-foreground: 24 5.4% 63.9%;
+
+ --popover: 20 14.3% 4.1%;
+ --popover-foreground: 60 9.1% 97.8%;
+
+ --card: 20 14.3% 4.1%;
+ --card-foreground: 60 9.1% 97.8%;
+
+ --border: 12 6.5% 15.1%;
+ --input: 12 6.5% 15.1%;
+
+ --primary: 60 9.1% 97.8%;
+ --primary-foreground: 24 9.8% 10%;
+
+ --secondary: 12 6.5% 15.1%;
+ --secondary-foreground: 60 9.1% 97.8%;
+
+ --accent: 12 6.5% 15.1%;
+ --accent-foreground: 60 9.1% 97.8%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 24 5.7% 82.9%;
+}
+
+.theme-gray {
+ --background: 0 0% 100%;
+ --foreground: 224 71.4% 4.1%;
+
+ --muted: 220 14.3% 95.9%;
+ --muted-foreground: 220 8.9% 46.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 224 71.4% 4.1%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 224 71.4% 4.1%;
+
+ --border: 220 13% 91%;
+ --input: 220 13% 91%;
+
+ --primary: 220.9 39.3% 11%;
+ --primary-foreground: 210 20% 98%;
+
+ --secondary: 220 14.3% 95.9%;
+ --secondary-foreground: 220.9 39.3% 11%;
+
+ --accent: 220 14.3% 95.9%;
+ --accent-foreground: 220.9 39.3% 11%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 210 20% 98%;
+
+ --ring: 224 71.4% 4.1%;
+
+ --radius: 0.35rem;
+}
+
+.dark .theme-gray {
+ --background: 224 71.4% 4.1%;
+ --foreground: 210 20% 98%;
+
+ --muted: 215 27.9% 16.9%;
+ --muted-foreground: 217.9 10.6% 64.9%;
+
+ --popover: 224 71.4% 4.1%;
+ --popover-foreground: 210 20% 98%;
+
+ --card: 224 71.4% 4.1%;
+ --card-foreground: 210 20% 98%;
+
+ --border: 215 27.9% 16.9%;
+ --input: 215 27.9% 16.9%;
+
+ --primary: 210 20% 98%;
+ --primary-foreground: 220.9 39.3% 11%;
+
+ --secondary: 215 27.9% 16.9%;
+ --secondary-foreground: 210 20% 98%;
+
+ --accent: 215 27.9% 16.9%;
+ --accent-foreground: 210 20% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 210 20% 98%;
+
+ --ring: 216 12.2% 83.9%;
+}
+
+.theme-neutral {
+ --background: 0 0% 100%;
+ --foreground: 0 0% 3.9%;
+
+ --muted: 0 0% 96.1%;
+ --muted-foreground: 0 0% 45.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 0 0% 3.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 0 0% 3.9%;
+
+ --border: 0 0% 89.8%;
+ --input: 0 0% 89.8%;
+
+ --primary: 0 0% 9%;
+ --primary-foreground: 0 0% 98%;
+
+ --secondary: 0 0% 96.1%;
+ --secondary-foreground: 0 0% 9%;
+
+ --accent: 0 0% 96.1%;
+ --accent-foreground: 0 0% 9%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 0 0% 3.9%;
+
+ --radius: ;
+}
+
+.dark .theme-neutral {
+ --background: 0 0% 3.9%;
+ --foreground: 0 0% 98%;
+
+ --muted: 0 0% 14.9%;
+ --muted-foreground: 0 0% 63.9%;
+
+ --popover: 0 0% 3.9%;
+ --popover-foreground: 0 0% 98%;
+
+ --card: 0 0% 3.9%;
+ --card-foreground: 0 0% 98%;
+
+ --border: 0 0% 14.9%;
+ --input: 0 0% 14.9%;
+
+ --primary: 0 0% 98%;
+ --primary-foreground: 0 0% 9%;
+
+ --secondary: 0 0% 14.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --accent: 0 0% 14.9%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 0 0% 83.1%;
+}
+
+.theme-red {
+ --background: 0 0% 100%;
+ --foreground: 0 0% 3.9%;
+
+ --muted: 0 0% 96.1%;
+ --muted-foreground: 0 0% 45.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 0 0% 3.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 0 0% 3.9%;
+
+ --border: 0 0% 89.8%;
+ --input: 0 0% 89.8%;
+
+ --primary: 0 72.2% 50.6%;
+ --primary-foreground: 0 85.7% 97.3%;
+
+ --secondary: 0 0% 96.1%;
+ --secondary-foreground: 0 0% 9%;
+
+ --accent: 0 0% 96.1%;
+ --accent-foreground: 0 0% 9%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 0 72.2% 50.6%;
+
+ --radius: 0.4rem;
+}
+
+.dark .theme-red {
+ --background: 0 0% 3.9%;
+ --foreground: 0 0% 98%;
+
+ --muted: 0 0% 14.9%;
+ --muted-foreground: 0 0% 63.9%;
+
+ --popover: 0 0% 3.9%;
+ --popover-foreground: 0 0% 98%;
+
+ --card: 0 0% 3.9%;
+ --card-foreground: 0 0% 98%;
+
+ --border: 0 0% 14.9%;
+ --input: 0 0% 14.9%;
+
+ --primary: 0 72.2% 50.6%;
+ --primary-foreground: 0 85.7% 97.3%;
+
+ --secondary: 0 0% 14.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --accent: 0 0% 14.9%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 0 72.2% 50.6%;
+}
+
+.theme-rose {
+ --background: 0 0% 100%;
+ --foreground: 240 10% 3.9%;
+
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 240 10% 3.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 240 10% 3.9%;
+
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+
+ --primary: 346.8 77.2% 49.8%;
+ --primary-foreground: 355.7 100% 97.3%;
+
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
+
+ --accent: 240 4.8% 95.9%;
+ --accent-foreground: 240 5.9% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 346.8 77.2% 49.8%;
+
+ --radius: 0.5rem;
+}
+
+.dark .theme-rose {
+ --background: 20 14.3% 4.1%;
+ --foreground: 0 0% 95%;
+
+ --muted: 0 0% 15%;
+ --muted-foreground: 240 5% 64.9%;
+
+ --popover: 0 0% 9%;
+ --popover-foreground: 0 0% 95%;
+
+ --card: 24 9.8% 10%;
+ --card-foreground: 0 0% 95%;
+
+ --border: 240 3.7% 25%;
+ --input: 240 3.7% 25%;
+
+ --primary: 346.8 77.2% 49.8%;
+ --primary-foreground: 355.7 100% 97.3%;
+
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --accent: 12 6.5% 15.1%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 85.7% 97.3%;
+
+ --ring: 346.8 77.2% 49.8%;
+}
+
+.theme-orange {
+ --background: 0 0% 100%;
+ --foreground: 20 14.3% 4.1%;
+
+ --muted: 60 4.8% 95.9%;
+ --muted-foreground: 25 5.3% 44.7%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 20 14.3% 4.1%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 20 14.3% 4.1%;
+
+ --border: 20 5.9% 90%;
+ --input: 20 5.9% 90%;
+
+ --primary: 24.6 95% 53.1%;
+ --primary-foreground: 60 9.1% 97.8%;
+
+ --secondary: 60 4.8% 95.9%;
+ --secondary-foreground: 24 9.8% 10%;
+
+ --accent: 60 4.8% 95.9%;
+ --accent-foreground: 24 9.8% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 24.6 95% 53.1%;
+
+ --radius: 0.95rem;
+}
+
+.dark .theme-orange {
+ --background: 20 14.3% 4.1%;
+ --foreground: 60 9.1% 97.8%;
+
+ --muted: 12 6.5% 15.1%;
+ --muted-foreground: 24 5.4% 63.9%;
+
+ --popover: 20 14.3% 4.1%;
+ --popover-foreground: 60 9.1% 97.8%;
+
+ --card: 20 14.3% 4.1%;
+ --card-foreground: 60 9.1% 97.8%;
+
+ --border: 12 6.5% 15.1%;
+ --input: 12 6.5% 15.1%;
+
+ --primary: 20.5 90.2% 48.2%;
+ --primary-foreground: 60 9.1% 97.8%;
+
+ --secondary: 12 6.5% 15.1%;
+ --secondary-foreground: 60 9.1% 97.8%;
+
+ --accent: 12 6.5% 15.1%;
+ --accent-foreground: 60 9.1% 97.8%;
+
+ --destructive: 0 72.2% 50.6%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 20.5 90.2% 48.2%;
+}
+
+.theme-green {
+ --background: 0 0% 100%;
+ --foreground: 240 10% 3.9%;
+
+ --muted: 240 4.8% 95.9%;
+ --muted-foreground: 240 3.8% 46.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 240 10% 3.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 240 10% 3.9%;
+
+ --border: 240 5.9% 90%;
+ --input: 240 5.9% 90%;
+
+ --primary: 142.1 76.2% 36.3%;
+ --primary-foreground: 355.7 100% 97.3%;
+
+ --secondary: 240 4.8% 95.9%;
+ --secondary-foreground: 240 5.9% 10%;
+
+ --accent: 240 4.8% 95.9%;
+ --accent-foreground: 240 5.9% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 0 0% 98%;
+
+ --ring: 142.1 76.2% 36.3%;
+
+ --radius: ;
+}
+
+.dark .theme-green {
+ --background: 20 14.3% 4.1%;
+ --foreground: 0 0% 95%;
+
+ --muted: 0 0% 15%;
+ --muted-foreground: 240 5% 64.9%;
+
+ --popover: 0 0% 9%;
+ --popover-foreground: 0 0% 95%;
+
+ --card: 24 9.8% 10%;
+ --card-foreground: 0 0% 95%;
+
+ --border: 240 3.7% 25%;
+ --input: 240 3.7% 25%;
+
+ --primary: 142.1 70.6% 45.3%;
+ --primary-foreground: 144.9 80.4% 10%;
+
+ --secondary: 240 3.7% 15.9%;
+ --secondary-foreground: 0 0% 98%;
+
+ --accent: 12 6.5% 15.1%;
+ --accent-foreground: 0 0% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 0 85.7% 97.3%;
+
+ --ring: 142.4 71.8% 29.2%;
+}
+
+.theme-blue {
+ --background: 0 0% 100%;
+ --foreground: 222.2 84% 4.9%;
+
+ --muted: 210 40% 96.1%;
+ --muted-foreground: 215.4 16.3% 46.9%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 222.2 84% 4.9%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 222.2 84% 4.9%;
+
+ --border: 214.3 31.8% 91.4%;
+ --input: 214.3 31.8% 91.4%;
+
+ --primary: 221.2 83.2% 53.3%;
+ --primary-foreground: 210 40% 98%;
+
+ --secondary: 210 40% 96.1%;
+ --secondary-foreground: 222.2 47.4% 11.2%;
+
+ --accent: 210 40% 96.1%;
+ --accent-foreground: 222.2 47.4% 11.2%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 210 40% 98%;
+
+ --ring: 221.2 83.2% 53.3%;
+
+ --radius: ;
+}
+
+.dark .theme-blue {
+ --background: 222.2 84% 4.9%;
+ --foreground: 210 40% 98%;
+
+ --muted: 217.2 32.6% 17.5%;
+ --muted-foreground: 215 20.2% 65.1%;
+
+ --popover: 222.2 84% 4.9%;
+ --popover-foreground: 210 40% 98%;
+
+ --card: 222.2 84% 4.9%;
+ --card-foreground: 210 40% 98%;
+
+ --border: 217.2 32.6% 17.5%;
+ --input: 217.2 32.6% 17.5%;
+
+ --primary: 217.2 91.2% 59.8%;
+ --primary-foreground: 222.2 47.4% 11.2%;
+
+ --secondary: 217.2 32.6% 17.5%;
+ --secondary-foreground: 210 40% 98%;
+
+ --accent: 217.2 32.6% 17.5%;
+ --accent-foreground: 210 40% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 210 40% 98%;
+
+ --ring: 224.3 76.3% 48%;
+}
+
+.theme-yellow {
+ --background: 0 0% 100%;
+ --foreground: 20 14.3% 4.1%;
+
+ --muted: 60 4.8% 95.9%;
+ --muted-foreground: 25 5.3% 44.7%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 20 14.3% 4.1%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 20 14.3% 4.1%;
+
+ --border: 20 5.9% 90%;
+ --input: 20 5.9% 90%;
+
+ --primary: 47.9 95.8% 53.1%;
+ --primary-foreground: 26 83.3% 14.1%;
+
+ --secondary: 60 4.8% 95.9%;
+ --secondary-foreground: 24 9.8% 10%;
+
+ --accent: 60 4.8% 95.9%;
+ --accent-foreground: 24 9.8% 10%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 20 14.3% 4.1%;
+
+ --radius: 0.95rem;
+}
+
+.dark .theme-yellow {
+ --background: 20 14.3% 4.1%;
+ --foreground: 60 9.1% 97.8%;
+
+ --muted: 12 6.5% 15.1%;
+ --muted-foreground: 24 5.4% 63.9%;
+
+ --popover: 20 14.3% 4.1%;
+ --popover-foreground: 60 9.1% 97.8%;
+
+ --card: 20 14.3% 4.1%;
+ --card-foreground: 60 9.1% 97.8%;
+
+ --border: 12 6.5% 15.1%;
+ --input: 12 6.5% 15.1%;
+
+ --primary: 47.9 95.8% 53.1%;
+ --primary-foreground: 26 83.3% 14.1%;
+
+ --secondary: 12 6.5% 15.1%;
+ --secondary-foreground: 60 9.1% 97.8%;
+
+ --accent: 12 6.5% 15.1%;
+ --accent-foreground: 60 9.1% 97.8%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 60 9.1% 97.8%;
+
+ --ring: 35.5 91.7% 32.9%;
+}
+
+.theme-violet {
+ --background: 0 0% 100%;
+ --foreground: 224 71.4% 4.1%;
+
+ --muted: 220 14.3% 95.9%;
+ --muted-foreground: 220 8.9% 46.1%;
+
+ --popover: 0 0% 100%;
+ --popover-foreground: 224 71.4% 4.1%;
+
+ --card: 0 0% 100%;
+ --card-foreground: 224 71.4% 4.1%;
+
+ --border: 220 13% 91%;
+ --input: 220 13% 91%;
+
+ --primary: 262.1 83.3% 57.8%;
+ --primary-foreground: 210 20% 98%;
+
+ --secondary: 220 14.3% 95.9%;
+ --secondary-foreground: 220.9 39.3% 11%;
+
+ --accent: 220 14.3% 95.9%;
+ --accent-foreground: 220.9 39.3% 11%;
+
+ --destructive: 0 72.22% 50.59%;
+ --destructive-foreground: 210 20% 98%;
+
+ --ring: 262.1 83.3% 57.8%;
+
+ --radius: ;
+}
+
+.dark .theme-violet {
+ --background: 224 71.4% 4.1%;
+ --foreground: 210 20% 98%;
+
+ --muted: 215 27.9% 16.9%;
+ --muted-foreground: 217.9 10.6% 64.9%;
+
+ --popover: 224 71.4% 4.1%;
+ --popover-foreground: 210 20% 98%;
+
+ --card: 224 71.4% 4.1%;
+ --card-foreground: 210 20% 98%;
+
+ --border: 215 27.9% 16.9%;
+ --input: 215 27.9% 16.9%;
+
+ --primary: 263.4 70% 50.4%;
+ --primary-foreground: 210 20% 98%;
+
+ --secondary: 215 27.9% 16.9%;
+ --secondary-foreground: 210 20% 98%;
+
+ --accent: 215 27.9% 16.9%;
+ --accent-foreground: 210 20% 98%;
+
+ --destructive: 0 62.8% 30.6%;
+ --destructive-foreground: 210 20% 98%;
+
+ --ring: 263.4 70% 50.4%;
+}
\ No newline at end of file
diff --git a/apps/www/public/r/themes/gray.json b/apps/www/public/r/themes/gray.json
new file mode 100644
index 0000000000..d189d77175
--- /dev/null
+++ b/apps/www/public/r/themes/gray.json
@@ -0,0 +1,48 @@
+{
+ "name": "gray",
+ "label": "Gray",
+ "cssVars": {
+ "dark": {
+ "accent": "215 27.9% 16.9%",
+ "accent-foreground": "210 20% 98%",
+ "background": "224 71.4% 4.1%",
+ "border": "215 27.9% 16.9%",
+ "card": "224 71.4% 4.1%",
+ "card-foreground": "210 20% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "210 20% 98%",
+ "foreground": "210 20% 98%",
+ "input": "215 27.9% 16.9%",
+ "muted": "215 27.9% 16.9%",
+ "muted-foreground": "217.9 10.6% 64.9%",
+ "popover": "224 71.4% 4.1%",
+ "popover-foreground": "210 20% 98%",
+ "primary": "210 20% 98%",
+ "primary-foreground": "220.9 39.3% 11%",
+ "ring": "216 12.2% 83.9%",
+ "secondary": "215 27.9% 16.9%",
+ "secondary-foreground": "210 20% 98%"
+ },
+ "light": {
+ "accent": "220 14.3% 95.9%",
+ "accent-foreground": "220.9 39.3% 11%",
+ "background": "0 0% 100%",
+ "border": "220 13% 91%",
+ "card": "0 0% 100%",
+ "card-foreground": "224 71.4% 4.1%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "210 20% 98%",
+ "foreground": "224 71.4% 4.1%",
+ "input": "220 13% 91%",
+ "muted": "220 14.3% 95.9%",
+ "muted-foreground": "220 8.9% 46.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "224 71.4% 4.1%",
+ "primary": "220.9 39.3% 11%",
+ "primary-foreground": "210 20% 98%",
+ "ring": "224 71.4% 4.1%",
+ "secondary": "220 14.3% 95.9%",
+ "secondary-foreground": "220.9 39.3% 11%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/www/public/r/themes/neutral.json b/apps/www/public/r/themes/neutral.json
new file mode 100644
index 0000000000..9f19b2c228
--- /dev/null
+++ b/apps/www/public/r/themes/neutral.json
@@ -0,0 +1,48 @@
+{
+ "name": "neutral",
+ "label": "Neutral",
+ "cssVars": {
+ "dark": {
+ "accent": "0 0% 14.9%",
+ "accent-foreground": "0 0% 98%",
+ "background": "0 0% 3.9%",
+ "border": "0 0% 14.9%",
+ "card": "0 0% 3.9%",
+ "card-foreground": "0 0% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 98%",
+ "input": "0 0% 14.9%",
+ "muted": "0 0% 14.9%",
+ "muted-foreground": "0 0% 63.9%",
+ "popover": "0 0% 3.9%",
+ "popover-foreground": "0 0% 98%",
+ "primary": "0 0% 98%",
+ "primary-foreground": "0 0% 9%",
+ "ring": "0 0% 83.1%",
+ "secondary": "0 0% 14.9%",
+ "secondary-foreground": "0 0% 98%"
+ },
+ "light": {
+ "accent": "0 0% 96.1%",
+ "accent-foreground": "0 0% 9%",
+ "background": "0 0% 100%",
+ "border": "0 0% 89.8%",
+ "card": "0 0% 100%",
+ "card-foreground": "0 0% 3.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 3.9%",
+ "input": "0 0% 89.8%",
+ "muted": "0 0% 96.1%",
+ "muted-foreground": "0 0% 45.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "0 0% 3.9%",
+ "primary": "0 0% 9%",
+ "primary-foreground": "0 0% 98%",
+ "ring": "0 0% 3.9%",
+ "secondary": "0 0% 96.1%",
+ "secondary-foreground": "0 0% 9%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/www/public/r/themes/slate.json b/apps/www/public/r/themes/slate.json
new file mode 100644
index 0000000000..8e699614d6
--- /dev/null
+++ b/apps/www/public/r/themes/slate.json
@@ -0,0 +1,48 @@
+{
+ "name": "slate",
+ "label": "Slate",
+ "cssVars": {
+ "dark": {
+ "accent": "217.2 32.6% 17.5%",
+ "accent-foreground": "210 40% 98%",
+ "background": "222.2 84% 4.9%",
+ "border": "217.2 32.6% 17.5%",
+ "card": "222.2 84% 4.9%",
+ "card-foreground": "210 40% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "210 40% 98%",
+ "foreground": "210 40% 98%",
+ "input": "217.2 32.6% 17.5%",
+ "muted": "217.2 32.6% 17.5%",
+ "muted-foreground": "215 20.2% 65.1%",
+ "popover": "222.2 84% 4.9%",
+ "popover-foreground": "210 40% 98%",
+ "primary": "210 40% 98%",
+ "primary-foreground": "222.2 47.4% 11.2%",
+ "ring": "212.7 26.8% 83.9%",
+ "secondary": "217.2 32.6% 17.5%",
+ "secondary-foreground": "210 40% 98%"
+ },
+ "light": {
+ "accent": "210 40% 96.1%",
+ "accent-foreground": "222.2 47.4% 11.2%",
+ "background": "0 0% 100%",
+ "border": "214.3 31.8% 91.4%",
+ "card": "0 0% 100%",
+ "card-foreground": "222.2 84% 4.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "210 40% 98%",
+ "foreground": "222.2 84% 4.9%",
+ "input": "214.3 31.8% 91.4%",
+ "muted": "210 40% 96.1%",
+ "muted-foreground": "215.4 16.3% 46.9%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "222.2 84% 4.9%",
+ "primary": "222.2 47.4% 11.2%",
+ "primary-foreground": "210 40% 98%",
+ "ring": "222.2 84% 4.9%",
+ "secondary": "210 40% 96.1%",
+ "secondary-foreground": "222.2 47.4% 11.2%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/www/public/r/themes/stone.json b/apps/www/public/r/themes/stone.json
new file mode 100644
index 0000000000..2df3646b33
--- /dev/null
+++ b/apps/www/public/r/themes/stone.json
@@ -0,0 +1,48 @@
+{
+ "name": "stone",
+ "label": "Stone",
+ "cssVars": {
+ "dark": {
+ "accent": "12 6.5% 15.1%",
+ "accent-foreground": "60 9.1% 97.8%",
+ "background": "20 14.3% 4.1%",
+ "border": "12 6.5% 15.1%",
+ "card": "20 14.3% 4.1%",
+ "card-foreground": "60 9.1% 97.8%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "60 9.1% 97.8%",
+ "foreground": "60 9.1% 97.8%",
+ "input": "12 6.5% 15.1%",
+ "muted": "12 6.5% 15.1%",
+ "muted-foreground": "24 5.4% 63.9%",
+ "popover": "20 14.3% 4.1%",
+ "popover-foreground": "60 9.1% 97.8%",
+ "primary": "60 9.1% 97.8%",
+ "primary-foreground": "24 9.8% 10%",
+ "ring": "24 5.7% 82.9%",
+ "secondary": "12 6.5% 15.1%",
+ "secondary-foreground": "60 9.1% 97.8%"
+ },
+ "light": {
+ "accent": "60 4.8% 95.9%",
+ "accent-foreground": "24 9.8% 10%",
+ "background": "0 0% 100%",
+ "border": "20 5.9% 90%",
+ "card": "0 0% 100%",
+ "card-foreground": "20 14.3% 4.1%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "60 9.1% 97.8%",
+ "foreground": "20 14.3% 4.1%",
+ "input": "20 5.9% 90%",
+ "muted": "60 4.8% 95.9%",
+ "muted-foreground": "25 5.3% 44.7%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "20 14.3% 4.1%",
+ "primary": "24 9.8% 10%",
+ "primary-foreground": "60 9.1% 97.8%",
+ "ring": "20 14.3% 4.1%",
+ "secondary": "60 4.8% 95.9%",
+ "secondary-foreground": "24 9.8% 10%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/www/public/r/themes/zinc.json b/apps/www/public/r/themes/zinc.json
new file mode 100644
index 0000000000..4d691a7f97
--- /dev/null
+++ b/apps/www/public/r/themes/zinc.json
@@ -0,0 +1,48 @@
+{
+ "name": "zinc",
+ "label": "Zinc",
+ "cssVars": {
+ "dark": {
+ "accent": "240 3.7% 15.9%",
+ "accent-foreground": "0 0% 98%",
+ "background": "240 10% 3.9%",
+ "border": "240 3.7% 15.9%",
+ "card": "240 10% 3.9%",
+ "card-foreground": "0 0% 98%",
+ "destructive": "0 62.8% 30.6%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "0 0% 98%",
+ "input": "240 3.7% 15.9%",
+ "muted": "240 3.7% 15.9%",
+ "muted-foreground": "240 5% 64.9%",
+ "popover": "240 10% 3.9%",
+ "popover-foreground": "0 0% 98%",
+ "primary": "0 0% 98%",
+ "primary-foreground": "240 5.9% 10%",
+ "ring": "240 4.9% 83.9%",
+ "secondary": "240 3.7% 15.9%",
+ "secondary-foreground": "0 0% 98%"
+ },
+ "light": {
+ "accent": "240 4.8% 95.9%",
+ "accent-foreground": "240 5.9% 10%",
+ "background": "0 0% 100%",
+ "border": "240 5.9% 90%",
+ "card": "0 0% 100%",
+ "card-foreground": "240 10% 3.9%",
+ "destructive": "0 84.2% 60.2%",
+ "destructive-foreground": "0 0% 98%",
+ "foreground": "240 10% 3.9%",
+ "input": "240 5.9% 90%",
+ "muted": "240 4.8% 95.9%",
+ "muted-foreground": "240 3.8% 46.1%",
+ "popover": "0 0% 100%",
+ "popover-foreground": "240 10% 3.9%",
+ "primary": "240 5.9% 10%",
+ "primary-foreground": "0 0% 98%",
+ "ring": "240 10% 3.9%",
+ "secondary": "240 4.8% 95.9%",
+ "secondary-foreground": "240 5.9% 10%"
+ }
+ }
+}
\ No newline at end of file
diff --git a/apps/www/scripts/build-registry.mts b/apps/www/scripts/build-registry.mts
index 3babbba869..6febe8205d 100644
--- a/apps/www/scripts/build-registry.mts
+++ b/apps/www/scripts/build-registry.mts
@@ -210,7 +210,7 @@ export const Index: Record = {
const targetFile = file.replace(item.name, `${chunkName}`)
const targetFilePath = path.join(
cwd(),
- `registry/${style.name}/${type}/${chunkName}.tsx`
+ `src/registry/${style.name}/${type}/${chunkName}.tsx`
)
// Write component file.
@@ -230,7 +230,7 @@ export const Index: Record = {
)
// // Write the source file for blocks only.
- sourceFilename = `__registry__/${style.name}/${type}/${item.name}.tsx`
+ sourceFilename = `src/__registry__/${style.name}/${type}/${item.name}.tsx`
if (item.files) {
const files = item.files.map((file) =>
@@ -239,7 +239,7 @@ export const Index: Record = {
: file
)
if (files?.length) {
- sourceFilename = `__registry__/${style.name}/${files[0].path}`
+ sourceFilename = `src/__registry__/${style.name}/${files[0].path}`
}
}
@@ -326,9 +326,13 @@ export const Index: Record = {
"utf8"
)
+
// Write style index.
- rimraf.sync(path.join(process.cwd(), "__registry__/index.tsx"))
- await fs.writeFile(path.join(process.cwd(), "__registry__/index.tsx"), index)
+ if (!existsSync(path.join(process.cwd(), "src/__registry__"))) {
+ await fs.mkdir(path.join(process.cwd(), "src/__registry__"), { recursive: true })
+ }
+ rimraf.sync(path.join(process.cwd(), "src/__registry__/index.tsx"))
+ await fs.writeFile(path.join(process.cwd(), "src/__registry__/index.tsx"), index)
}
// ----------------------------------------------------------------------------
@@ -363,7 +367,7 @@ async function buildStyles(registry: Registry) {
: _file
const content = await fs.readFile(
- path.join(process.cwd(), "registry", style.name, file.path),
+ path.join(process.cwd(), "src/registry", style.name, file.path),
"utf8"
)
diff --git a/apps/www/src/__registry__/.autogenerated b/apps/www/src/__registry__/.autogenerated
deleted file mode 100644
index 7a0c795cb0..0000000000
--- a/apps/www/src/__registry__/.autogenerated
+++ /dev/null
@@ -1 +0,0 @@
-// The content of this directory is autogenerated by the registry server.
\ No newline at end of file
diff --git a/apps/www/src/__registry__/.gitkeep b/apps/www/src/__registry__/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/apps/www/src/__registry__/README.md b/apps/www/src/__registry__/README.md
deleted file mode 100644
index 66e50b7cbf..0000000000
--- a/apps/www/src/__registry__/README.md
+++ /dev/null
@@ -1 +0,0 @@
-> Files inside this directory is autogenerated by `./scripts/build-registry.ts`. **Do not edit them manually.**
diff --git a/apps/www/src/__registry__/index.tsx b/apps/www/src/__registry__/index.tsx
index d0581e3578..27b2f3e487 100644
--- a/apps/www/src/__registry__/index.tsx
+++ b/apps/www/src/__registry__/index.tsx
@@ -1,1104 +1,1120 @@
// @ts-nocheck
// This file is autogenerated by scripts/build-registry.ts
// Do not edit this file directly.
-import * as React from 'react'
+import * as React from "react"
+
export const Index: Record = {
- 'default': {
- 'editor': {
- name: 'editor',
- type: 'components:plate-ui',
+ "default": {
+ "editor": {
+ name: "editor",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/editor.tsx'],
+ files: ["registry/default/plate-ui/editor.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/editor.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/editor')),
+ chunks: []
},
- 'cloud': {
- name: 'cloud',
- type: 'components:plate-ui',
+ "cloud": {
+ name: "cloud",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/cloud.tsx','registry/default/plate-ui/cloud-attachment-element.tsx','registry/default/plate-ui/cloud-image-element.tsx','registry/default/plate-ui/cloud-resize-controls.tsx','registry/default/plate-ui/cloud-status-bar.tsx','registry/default/plate-ui/cloud-toolbar-buttons.tsx'],
+ files: ["registry/default/plate-ui/cloud.tsx","registry/default/plate-ui/cloud-attachment-element.tsx","registry/default/plate-ui/cloud-image-element.tsx","registry/default/plate-ui/cloud-resize-controls.tsx","registry/default/plate-ui/cloud-status-bar.tsx","registry/default/plate-ui/cloud-toolbar-buttons.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/cloud.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud')),
+ chunks: []
},
- 'cloud-attachment-element': {
- name: 'cloud-attachment-element',
- type: 'components:plate-ui',
- registryDependencies: [],
- files: ['registry/default/plate-ui/cloud-attachment-element.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud-attachment-element')),
- },
- 'cloud-image-element': {
- name: 'cloud-image-element',
- type: 'components:plate-ui',
- registryDependencies: [],
- files: ['registry/default/plate-ui/cloud-image-element.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud-image-element')),
- },
- 'cloud-resize-controls': {
- name: 'cloud-resize-controls',
- type: 'components:plate-ui',
- registryDependencies: [],
- files: ['registry/default/plate-ui/cloud-resize-controls.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud-resize-controls')),
- },
- 'cloud-status-bar': {
- name: 'cloud-status-bar',
- type: 'components:plate-ui',
- registryDependencies: [],
- files: ['registry/default/plate-ui/cloud-status-bar.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud-status-bar')),
- },
- 'cloud-toolbar-buttons': {
- name: 'cloud-toolbar-buttons',
- type: 'components:plate-ui',
- registryDependencies: [],
- files: ['registry/default/plate-ui/cloud-toolbar-buttons.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/cloud-toolbar-buttons')),
- },
- 'code-block-element': {
- name: 'code-block-element',
- type: 'components:plate-ui',
+ "code-block-element": {
+ name: "code-block-element",
+ type: "registry:ui",
registryDependencies: ["command"],
- files: ['registry/default/plate-ui/code-block-element.tsx','registry/default/plate-ui/code-block-element.css','registry/default/plate-ui/code-block-combobox.tsx'],
+ files: ["registry/default/plate-ui/code-block-element.tsx","registry/default/plate-ui/code-block-element.css","registry/default/plate-ui/code-block-combobox.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/code-block-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/code-block-element')),
- },
- 'code-block-combobox': {
- name: 'code-block-combobox',
- type: 'components:plate-ui',
- registryDependencies: ["command"],
- files: ['registry/default/plate-ui/code-block-combobox.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/code-block-combobox')),
+ chunks: []
},
- 'column-element': {
- name: 'column-element',
- type: 'components:plate-ui',
+ "column-element": {
+ name: "column-element",
+ type: "registry:ui",
registryDependencies: ["command","resizable"],
- files: ['registry/default/plate-ui/column-element.tsx','registry/default/plate-ui/column-group-element.tsx'],
+ files: ["registry/default/plate-ui/column-element.tsx","registry/default/plate-ui/column-group-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/column-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/column-element')),
+ chunks: []
},
- 'column-group-element': {
- name: 'column-group-element',
- type: 'components:plate-ui',
- registryDependencies: ["command","resizable"],
- files: ['registry/default/plate-ui/column-group-element.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/column-group-element')),
- },
- 'color-dropdown-menu': {
- name: 'color-dropdown-menu',
- type: 'components:plate-ui',
+ "color-dropdown-menu": {
+ name: "color-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/color-dropdown-menu.tsx','registry/default/plate-ui/color-constants.ts','registry/default/plate-ui/color-dropdown-menu-items.tsx','registry/default/plate-ui/color-input.tsx','registry/default/plate-ui/color-picker.tsx','registry/default/plate-ui/colors-custom.tsx'],
+ files: ["registry/default/plate-ui/color-dropdown-menu.tsx","registry/default/plate-ui/color-constants.ts","registry/default/plate-ui/color-dropdown-menu-items.tsx","registry/default/plate-ui/color-input.tsx","registry/default/plate-ui/color-picker.tsx","registry/default/plate-ui/colors-custom.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/color-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/color-dropdown-menu')),
- },
- 'color-constants': {
- name: 'color-constants',
- type: 'components:plate-ui',
- registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/color-constants.ts'],
- component: React.lazy(() => import('@/registry/default/plate-ui/color-constants')),
+ chunks: []
},
- 'color-dropdown-menu-items': {
- name: 'color-dropdown-menu-items',
- type: 'components:plate-ui',
- registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/color-dropdown-menu-items.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/color-dropdown-menu-items')),
- },
- 'color-input': {
- name: 'color-input',
- type: 'components:plate-ui',
- registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/color-input.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/color-input')),
- },
- 'color-picker': {
- name: 'color-picker',
- type: 'components:plate-ui',
- registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/color-picker.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/color-picker')),
- },
- 'colors-custom': {
- name: 'colors-custom',
- type: 'components:plate-ui',
- registryDependencies: ["dropdown-menu","toolbar","separator","button","tooltip"],
- files: ['registry/default/plate-ui/colors-custom.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/colors-custom')),
- },
- 'comments-popover': {
- name: 'comments-popover',
- type: 'components:plate-ui',
+ "comments-popover": {
+ name: "comments-popover",
+ type: "registry:ui",
registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comments-popover.tsx','registry/default/plate-ui/comment-avatar.tsx','registry/default/plate-ui/comment-create-form.tsx','registry/default/plate-ui/comment-item.tsx','registry/default/plate-ui/comment-more-dropdown.tsx','registry/default/plate-ui/comment-reply-items.tsx','registry/default/plate-ui/comment-resolve-button.tsx','registry/default/plate-ui/comment-value.tsx'],
+ files: ["registry/default/plate-ui/comments-popover.tsx","registry/default/plate-ui/comment-avatar.tsx","registry/default/plate-ui/comment-create-form.tsx","registry/default/plate-ui/comment-item.tsx","registry/default/plate-ui/comment-more-dropdown.tsx","registry/default/plate-ui/comment-reply-items.tsx","registry/default/plate-ui/comment-resolve-button.tsx","registry/default/plate-ui/comment-value.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/comments-popover.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/comments-popover')),
- },
- 'comment-avatar': {
- name: 'comment-avatar',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-avatar.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-avatar')),
- },
- 'comment-create-form': {
- name: 'comment-create-form',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-create-form.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-create-form')),
- },
- 'comment-item': {
- name: 'comment-item',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-item.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-item')),
- },
- 'comment-more-dropdown': {
- name: 'comment-more-dropdown',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-more-dropdown.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-more-dropdown')),
- },
- 'comment-reply-items': {
- name: 'comment-reply-items',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-reply-items.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-reply-items')),
- },
- 'comment-resolve-button': {
- name: 'comment-resolve-button',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-resolve-button.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-resolve-button')),
- },
- 'comment-value': {
- name: 'comment-value',
- type: 'components:plate-ui',
- registryDependencies: ["popover","avatar"],
- files: ['registry/default/plate-ui/comment-value.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-value')),
+ chunks: []
},
- 'draggable': {
- name: 'draggable',
- type: 'components:plate-ui',
+ "draggable": {
+ name: "draggable",
+ type: "registry:ui",
registryDependencies: ["tooltip"],
- files: ['registry/default/plate-ui/draggable.tsx','registry/default/plate-ui/with-draggables.tsx'],
+ files: ["registry/default/plate-ui/draggable.tsx","registry/default/plate-ui/with-draggables.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/draggable.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/draggable')),
- },
- 'with-draggables': {
- name: 'with-draggables',
- type: 'components:plate-ui',
- registryDependencies: ["tooltip"],
- files: ['registry/default/plate-ui/with-draggables.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/with-draggables')),
+ chunks: []
},
- 'emoji-dropdown-menu': {
- name: 'emoji-dropdown-menu',
- type: 'components:plate-ui',
+ "emoji-dropdown-menu": {
+ name: "emoji-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-dropdown-menu.tsx','registry/default/plate-ui/emoji-toolbar-dropdown.tsx','registry/default/plate-ui/emoji-icons.tsx','registry/default/plate-ui/emoji-picker.tsx','registry/default/plate-ui/emoji-picker-content.tsx','registry/default/plate-ui/emoji-picker-navigation.tsx','registry/default/plate-ui/emoji-picker-preview.tsx','registry/default/plate-ui/emoji-picker-search-and-clear.tsx','registry/default/plate-ui/emoji-picker-search-bar.tsx'],
+ files: ["registry/default/plate-ui/emoji-dropdown-menu.tsx","registry/default/plate-ui/emoji-toolbar-dropdown.tsx","registry/default/plate-ui/emoji-icons.tsx","registry/default/plate-ui/emoji-picker.tsx","registry/default/plate-ui/emoji-picker-content.tsx","registry/default/plate-ui/emoji-picker-navigation.tsx","registry/default/plate-ui/emoji-picker-preview.tsx","registry/default/plate-ui/emoji-picker-search-and-clear.tsx","registry/default/plate-ui/emoji-picker-search-bar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/emoji-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-dropdown-menu')),
- },
- 'emoji-toolbar-dropdown': {
- name: 'emoji-toolbar-dropdown',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-toolbar-dropdown.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-toolbar-dropdown')),
- },
- 'emoji-icons': {
- name: 'emoji-icons',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-icons.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-icons')),
- },
- 'emoji-picker': {
- name: 'emoji-picker',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker')),
+ chunks: []
},
- 'emoji-picker-content': {
- name: 'emoji-picker-content',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker-content.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker-content')),
- },
- 'emoji-picker-navigation': {
- name: 'emoji-picker-navigation',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker-navigation.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker-navigation')),
- },
- 'emoji-picker-preview': {
- name: 'emoji-picker-preview',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker-preview.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker-preview')),
- },
- 'emoji-picker-search-and-clear': {
- name: 'emoji-picker-search-and-clear',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker-search-and-clear.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker-search-and-clear')),
- },
- 'emoji-picker-search-bar': {
- name: 'emoji-picker-search-bar',
- type: 'components:plate-ui',
- registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/emoji-picker-search-bar.tsx'],
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-picker-search-bar')),
- },
- 'emoji-input-element': {
- name: 'emoji-input-element',
- type: 'components:plate-ui',
+ "emoji-input-element": {
+ name: "emoji-input-element",
+ type: "registry:ui",
registryDependencies: ["inline-combobox"],
- files: ['registry/default/plate-ui/emoji-input-element.tsx'],
+ files: ["registry/default/plate-ui/emoji-input-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/emoji-input-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/emoji-input-element')),
+ chunks: []
},
- 'align-dropdown-menu': {
- name: 'align-dropdown-menu',
- type: 'components:plate-ui',
+ "align-dropdown-menu": {
+ name: "align-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/align-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/align-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/align-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/align-dropdown-menu')),
+ chunks: []
},
- 'avatar': {
- name: 'avatar',
- type: 'components:plate-ui',
+ "avatar": {
+ name: "avatar",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/avatar.tsx'],
+ files: ["registry/default/plate-ui/avatar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/avatar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/avatar')),
+ chunks: []
},
- 'blockquote-element': {
- name: 'blockquote-element',
- type: 'components:plate-ui',
+ "blockquote-element": {
+ name: "blockquote-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/blockquote-element.tsx'],
+ files: ["registry/default/plate-ui/blockquote-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/blockquote-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/blockquote-element')),
+ chunks: []
},
- 'date-element': {
- name: 'date-element',
- type: 'components:plate-ui',
+ "date-element": {
+ name: "date-element",
+ type: "registry:ui",
registryDependencies: ["calendar"],
- files: ['registry/default/plate-ui/date-element.tsx'],
+ files: ["registry/default/plate-ui/date-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/date-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/date-element')),
+ chunks: []
},
- 'calendar': {
- name: 'calendar',
- type: 'components:plate-ui',
+ "calendar": {
+ name: "calendar",
+ type: "registry:ui",
registryDependencies: ["button"],
- files: ['registry/default/plate-ui/calendar.tsx'],
+ files: ["registry/default/plate-ui/calendar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/calendar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/calendar')),
+ chunks: []
},
- 'button': {
- name: 'button',
- type: 'components:plate-ui',
+ "button": {
+ name: "button",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/button.tsx'],
+ files: ["registry/default/plate-ui/button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/button')),
+ chunks: []
},
- 'caption': {
- name: 'caption',
- type: 'components:plate-ui',
+ "caption": {
+ name: "caption",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/caption.tsx'],
+ files: ["registry/default/plate-ui/caption.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/caption.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/caption')),
+ chunks: []
},
- 'checkbox': {
- name: 'checkbox',
- type: 'components:plate-ui',
+ "checkbox": {
+ name: "checkbox",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/checkbox.tsx'],
+ files: ["registry/default/plate-ui/checkbox.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/checkbox.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/checkbox')),
+ chunks: []
},
- 'code-leaf': {
- name: 'code-leaf',
- type: 'components:plate-ui',
+ "code-leaf": {
+ name: "code-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/code-leaf.tsx'],
+ files: ["registry/default/plate-ui/code-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/code-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/code-leaf')),
+ chunks: []
},
- 'code-line-element': {
- name: 'code-line-element',
- type: 'components:plate-ui',
+ "code-line-element": {
+ name: "code-line-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/code-line-element.tsx'],
+ files: ["registry/default/plate-ui/code-line-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/code-line-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/code-line-element')),
+ chunks: []
},
- 'code-syntax-leaf': {
- name: 'code-syntax-leaf',
- type: 'components:plate-ui',
+ "code-syntax-leaf": {
+ name: "code-syntax-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/code-syntax-leaf.tsx'],
+ files: ["registry/default/plate-ui/code-syntax-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/code-syntax-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/code-syntax-leaf')),
+ chunks: []
},
- 'command': {
- name: 'command',
- type: 'components:plate-ui',
+ "command": {
+ name: "command",
+ type: "registry:ui",
registryDependencies: ["dialog"],
- files: ['registry/default/plate-ui/command.tsx'],
+ files: ["registry/default/plate-ui/command.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/command.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/command')),
+ chunks: []
},
- 'comment-leaf': {
- name: 'comment-leaf',
- type: 'components:plate-ui',
+ "comment-leaf": {
+ name: "comment-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/comment-leaf.tsx'],
+ files: ["registry/default/plate-ui/comment-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/comment-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-leaf')),
+ chunks: []
},
- 'comment-toolbar-button': {
- name: 'comment-toolbar-button',
- type: 'components:plate-ui',
+ "comment-toolbar-button": {
+ name: "comment-toolbar-button",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/comment-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/comment-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/comment-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/comment-toolbar-button')),
+ chunks: []
},
- 'cursor-overlay': {
- name: 'cursor-overlay',
- type: 'components:plate-ui',
+ "cursor-overlay": {
+ name: "cursor-overlay",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/cursor-overlay.tsx'],
+ files: ["registry/default/plate-ui/cursor-overlay.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/cursor-overlay.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/cursor-overlay')),
+ chunks: []
},
- 'dialog': {
- name: 'dialog',
- type: 'components:plate-ui',
+ "dialog": {
+ name: "dialog",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/dialog.tsx'],
+ files: ["registry/default/plate-ui/dialog.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/dialog.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/dialog')),
+ chunks: []
},
- 'dropdown-menu': {
- name: 'dropdown-menu',
- type: 'components:plate-ui',
+ "dropdown-menu": {
+ name: "dropdown-menu",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/dropdown-menu')),
+ chunks: []
},
- 'excalidraw-element': {
- name: 'excalidraw-element',
- type: 'components:plate-ui',
+ "excalidraw-element": {
+ name: "excalidraw-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/excalidraw-element.tsx'],
+ files: ["registry/default/plate-ui/excalidraw-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/excalidraw-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/excalidraw-element')),
+ chunks: []
},
- 'fixed-toolbar': {
- name: 'fixed-toolbar',
- type: 'components:plate-ui',
+ "fixed-toolbar": {
+ name: "fixed-toolbar",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/fixed-toolbar.tsx'],
+ files: ["registry/default/plate-ui/fixed-toolbar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/fixed-toolbar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/fixed-toolbar')),
+ chunks: []
},
- 'fixed-toolbar-buttons': {
- name: 'fixed-toolbar-buttons',
- type: 'components:plate-ui',
+ "fixed-toolbar-buttons": {
+ name: "fixed-toolbar-buttons",
+ type: "registry:ui",
registryDependencies: ["toolbar","insert-dropdown-menu","mark-toolbar-button","mode-dropdown-menu","turn-into-dropdown-menu"],
- files: ['registry/default/plate-ui/fixed-toolbar-buttons.tsx'],
+ files: ["registry/default/plate-ui/fixed-toolbar-buttons.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/fixed-toolbar-buttons.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/fixed-toolbar-buttons')),
+ chunks: []
},
- 'floating-toolbar': {
- name: 'floating-toolbar',
- type: 'components:plate-ui',
+ "floating-toolbar": {
+ name: "floating-toolbar",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/floating-toolbar.tsx'],
+ files: ["registry/default/plate-ui/floating-toolbar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/floating-toolbar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/floating-toolbar')),
+ chunks: []
},
- 'floating-toolbar-buttons': {
- name: 'floating-toolbar-buttons',
- type: 'components:plate-ui',
+ "floating-toolbar-buttons": {
+ name: "floating-toolbar-buttons",
+ type: "registry:ui",
registryDependencies: ["mark-toolbar-button","more-dropdown-menu","turn-into-dropdown-menu"],
- files: ['registry/default/plate-ui/floating-toolbar-buttons.tsx'],
+ files: ["registry/default/plate-ui/floating-toolbar-buttons.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/floating-toolbar-buttons.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/floating-toolbar-buttons')),
+ chunks: []
},
- 'heading-element': {
- name: 'heading-element',
- type: 'components:plate-ui',
+ "heading-element": {
+ name: "heading-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/heading-element.tsx'],
+ files: ["registry/default/plate-ui/heading-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/heading-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/heading-element')),
+ chunks: []
},
- 'highlight-leaf': {
- name: 'highlight-leaf',
- type: 'components:plate-ui',
+ "highlight-leaf": {
+ name: "highlight-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/highlight-leaf.tsx'],
+ files: ["registry/default/plate-ui/highlight-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/highlight-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/highlight-leaf')),
+ chunks: []
},
- 'hr-element': {
- name: 'hr-element',
- type: 'components:plate-ui',
+ "hr-element": {
+ name: "hr-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/hr-element.tsx'],
+ files: ["registry/default/plate-ui/hr-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/hr-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/hr-element')),
+ chunks: []
},
- 'image-element': {
- name: 'image-element',
- type: 'components:plate-ui',
+ "image-element": {
+ name: "image-element",
+ type: "registry:ui",
registryDependencies: ["media-popover","caption","resizable"],
- files: ['registry/default/plate-ui/image-element.tsx'],
+ files: ["registry/default/plate-ui/image-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/image-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/image-element')),
+ chunks: []
},
- 'indent-list-toolbar-button': {
- name: 'indent-list-toolbar-button',
- type: 'components:plate-ui',
+ "indent-list-toolbar-button": {
+ name: "indent-list-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/indent-list-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/indent-list-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/indent-list-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/indent-list-toolbar-button')),
+ chunks: []
},
- 'indent-toolbar-button': {
- name: 'indent-toolbar-button',
- type: 'components:plate-ui',
+ "indent-toolbar-button": {
+ name: "indent-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/indent-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/indent-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/indent-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/indent-toolbar-button')),
+ chunks: []
},
- 'inline-combobox': {
- name: 'inline-combobox',
- type: 'components:plate-ui',
+ "inline-combobox": {
+ name: "inline-combobox",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/inline-combobox.tsx'],
+ files: ["registry/default/plate-ui/inline-combobox.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/inline-combobox.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/inline-combobox')),
+ chunks: []
},
- 'input': {
- name: 'input',
- type: 'components:plate-ui',
+ "input": {
+ name: "input",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/input.tsx'],
+ files: ["registry/default/plate-ui/input.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/input.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/input')),
+ chunks: []
},
- 'insert-dropdown-menu': {
- name: 'insert-dropdown-menu',
- type: 'components:plate-ui',
+ "insert-dropdown-menu": {
+ name: "insert-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/insert-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/insert-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/insert-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/insert-dropdown-menu')),
+ chunks: []
},
- 'kbd-leaf': {
- name: 'kbd-leaf',
- type: 'components:plate-ui',
+ "kbd-leaf": {
+ name: "kbd-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/kbd-leaf.tsx'],
+ files: ["registry/default/plate-ui/kbd-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/kbd-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/kbd-leaf')),
+ chunks: []
},
- 'line-height-dropdown-menu': {
- name: 'line-height-dropdown-menu',
- type: 'components:plate-ui',
+ "line-height-dropdown-menu": {
+ name: "line-height-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["toolbar","dropdown-menu"],
- files: ['registry/default/plate-ui/line-height-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/line-height-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/line-height-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/line-height-dropdown-menu')),
+ chunks: []
},
- 'link-element': {
- name: 'link-element',
- type: 'components:plate-ui',
+ "link-element": {
+ name: "link-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/link-element.tsx'],
+ files: ["registry/default/plate-ui/link-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/link-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/link-element')),
+ chunks: []
},
- 'link-floating-toolbar': {
- name: 'link-floating-toolbar',
- type: 'components:plate-ui',
+ "link-floating-toolbar": {
+ name: "link-floating-toolbar",
+ type: "registry:ui",
registryDependencies: ["button","input","popover","separator"],
- files: ['registry/default/plate-ui/link-floating-toolbar.tsx'],
+ files: ["registry/default/plate-ui/link-floating-toolbar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/link-floating-toolbar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/link-floating-toolbar')),
+ chunks: []
},
- 'link-toolbar-button': {
- name: 'link-toolbar-button',
- type: 'components:plate-ui',
+ "link-toolbar-button": {
+ name: "link-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/link-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/link-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/link-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/link-toolbar-button')),
+ chunks: []
},
- 'list-element': {
- name: 'list-element',
- type: 'components:plate-ui',
+ "list-element": {
+ name: "list-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/list-element.tsx'],
+ files: ["registry/default/plate-ui/list-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/list-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/list-element')),
+ chunks: []
},
- 'list-toolbar-button': {
- name: 'list-toolbar-button',
- type: 'components:plate-ui',
+ "list-toolbar-button": {
+ name: "list-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/list-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/list-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/list-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/list-toolbar-button')),
+ chunks: []
},
- 'mark-toolbar-button': {
- name: 'mark-toolbar-button',
- type: 'components:plate-ui',
+ "mark-toolbar-button": {
+ name: "mark-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/mark-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/mark-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/mark-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/mark-toolbar-button')),
+ chunks: []
},
- 'media-embed-element': {
- name: 'media-embed-element',
- type: 'components:plate-ui',
+ "media-embed-element": {
+ name: "media-embed-element",
+ type: "registry:ui",
registryDependencies: ["media-popover","caption","resizable"],
- files: ['registry/default/plate-ui/media-embed-element.tsx'],
+ files: ["registry/default/plate-ui/media-embed-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/media-embed-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/media-embed-element')),
+ chunks: []
},
- 'media-popover': {
- name: 'media-popover',
- type: 'components:plate-ui',
+ "media-popover": {
+ name: "media-popover",
+ type: "registry:ui",
registryDependencies: ["button","input","popover","separator"],
- files: ['registry/default/plate-ui/media-popover.tsx'],
+ files: ["registry/default/plate-ui/media-popover.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/media-popover.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/media-popover')),
+ chunks: []
},
- 'media-toolbar-button': {
- name: 'media-toolbar-button',
- type: 'components:plate-ui',
+ "media-toolbar-button": {
+ name: "media-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/media-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/media-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/media-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/media-toolbar-button')),
+ chunks: []
},
- 'mention-element': {
- name: 'mention-element',
- type: 'components:plate-ui',
+ "mention-element": {
+ name: "mention-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/mention-element.tsx'],
+ files: ["registry/default/plate-ui/mention-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/mention-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/mention-element')),
+ chunks: []
},
- 'mention-input-element': {
- name: 'mention-input-element',
- type: 'components:plate-ui',
+ "mention-input-element": {
+ name: "mention-input-element",
+ type: "registry:ui",
registryDependencies: ["inline-combobox"],
- files: ['registry/default/plate-ui/mention-input-element.tsx'],
+ files: ["registry/default/plate-ui/mention-input-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/mention-input-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/mention-input-element')),
+ chunks: []
},
- 'mode-dropdown-menu': {
- name: 'mode-dropdown-menu',
- type: 'components:plate-ui',
+ "mode-dropdown-menu": {
+ name: "mode-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/mode-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/mode-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/mode-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/mode-dropdown-menu')),
+ chunks: []
},
- 'more-dropdown-menu': {
- name: 'more-dropdown-menu',
- type: 'components:plate-ui',
+ "more-dropdown-menu": {
+ name: "more-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/more-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/more-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/more-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/more-dropdown-menu')),
+ chunks: []
},
- 'outdent-toolbar-button': {
- name: 'outdent-toolbar-button',
- type: 'components:plate-ui',
+ "outdent-toolbar-button": {
+ name: "outdent-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/outdent-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/outdent-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/outdent-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/outdent-toolbar-button')),
+ chunks: []
},
- 'paragraph-element': {
- name: 'paragraph-element',
- type: 'components:plate-ui',
+ "paragraph-element": {
+ name: "paragraph-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/paragraph-element.tsx'],
+ files: ["registry/default/plate-ui/paragraph-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/paragraph-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/paragraph-element')),
+ chunks: []
},
- 'placeholder': {
- name: 'placeholder',
- type: 'components:plate-ui',
+ "placeholder": {
+ name: "placeholder",
+ type: "registry:ui",
registryDependencies: ["paragraph-element"],
- files: ['registry/default/plate-ui/placeholder.tsx'],
+ files: ["registry/default/plate-ui/placeholder.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/placeholder.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/placeholder')),
+ chunks: []
},
- 'popover': {
- name: 'popover',
- type: 'components:plate-ui',
+ "popover": {
+ name: "popover",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/popover.tsx'],
+ files: ["registry/default/plate-ui/popover.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/popover.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/popover')),
+ chunks: []
},
- 'search-highlight-leaf': {
- name: 'search-highlight-leaf',
- type: 'components:plate-ui',
+ "search-highlight-leaf": {
+ name: "search-highlight-leaf",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/search-highlight-leaf.tsx'],
+ files: ["registry/default/plate-ui/search-highlight-leaf.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/search-highlight-leaf.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/search-highlight-leaf')),
+ chunks: []
},
- 'separator': {
- name: 'separator',
- type: 'components:plate-ui',
+ "separator": {
+ name: "separator",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/separator.tsx'],
+ files: ["registry/default/plate-ui/separator.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/separator.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/separator')),
+ chunks: []
},
- 'slash-input-element': {
- name: 'slash-input-element',
- type: 'components:plate-ui',
+ "slash-input-element": {
+ name: "slash-input-element",
+ type: "registry:ui",
registryDependencies: ["inline-combobox"],
- files: ['registry/default/plate-ui/slash-input-element.tsx'],
+ files: ["registry/default/plate-ui/slash-input-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/slash-input-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/slash-input-element')),
+ chunks: []
},
- 'table-cell-element': {
- name: 'table-cell-element',
- type: 'components:plate-ui',
+ "table-cell-element": {
+ name: "table-cell-element",
+ type: "registry:ui",
registryDependencies: ["resizable"],
- files: ['registry/default/plate-ui/table-cell-element.tsx'],
+ files: ["registry/default/plate-ui/table-cell-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/table-cell-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/table-cell-element')),
+ chunks: []
},
- 'table-dropdown-menu': {
- name: 'table-dropdown-menu',
- type: 'components:plate-ui',
+ "table-dropdown-menu": {
+ name: "table-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/table-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/table-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/table-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/table-dropdown-menu')),
+ chunks: []
},
- 'table-element': {
- name: 'table-element',
- type: 'components:plate-ui',
+ "table-element": {
+ name: "table-element",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu"],
- files: ['registry/default/plate-ui/table-element.tsx'],
+ files: ["registry/default/plate-ui/table-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/table-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/table-element')),
+ chunks: []
},
- 'table-row-element': {
- name: 'table-row-element',
- type: 'components:plate-ui',
+ "table-row-element": {
+ name: "table-row-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/table-row-element.tsx'],
+ files: ["registry/default/plate-ui/table-row-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/table-row-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/table-row-element')),
+ chunks: []
},
- 'todo-list-element': {
- name: 'todo-list-element',
- type: 'components:plate-ui',
+ "todo-list-element": {
+ name: "todo-list-element",
+ type: "registry:ui",
registryDependencies: ["checkbox"],
- files: ['registry/default/plate-ui/todo-list-element.tsx'],
+ files: ["registry/default/plate-ui/todo-list-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/todo-list-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/todo-list-element')),
+ chunks: []
},
- 'toggle-element': {
- name: 'toggle-element',
- type: 'components:plate-ui',
+ "toggle-element": {
+ name: "toggle-element",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/toggle-element.tsx'],
+ files: ["registry/default/plate-ui/toggle-element.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/toggle-element.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/toggle-element')),
+ chunks: []
},
- 'toggle-toolbar-button': {
- name: 'toggle-toolbar-button',
- type: 'components:plate-ui',
+ "toggle-toolbar-button": {
+ name: "toggle-toolbar-button",
+ type: "registry:ui",
registryDependencies: ["toolbar"],
- files: ['registry/default/plate-ui/toggle-toolbar-button.tsx'],
+ files: ["registry/default/plate-ui/toggle-toolbar-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/toggle-toolbar-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/toggle-toolbar-button')),
+ chunks: []
},
- 'toolbar': {
- name: 'toolbar',
- type: 'components:plate-ui',
+ "toolbar": {
+ name: "toolbar",
+ type: "registry:ui",
registryDependencies: ["tooltip","separator"],
- files: ['registry/default/plate-ui/toolbar.tsx'],
+ files: ["registry/default/plate-ui/toolbar.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/toolbar.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/toolbar')),
+ chunks: []
},
- 'tooltip': {
- name: 'tooltip',
- type: 'components:plate-ui',
+ "tooltip": {
+ name: "tooltip",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/tooltip.tsx'],
+ files: ["registry/default/plate-ui/tooltip.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/tooltip.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/tooltip')),
+ chunks: []
},
- 'turn-into-dropdown-menu': {
- name: 'turn-into-dropdown-menu',
- type: 'components:plate-ui',
+ "turn-into-dropdown-menu": {
+ name: "turn-into-dropdown-menu",
+ type: "registry:ui",
registryDependencies: ["dropdown-menu","toolbar"],
- files: ['registry/default/plate-ui/turn-into-dropdown-menu.tsx'],
+ files: ["registry/default/plate-ui/turn-into-dropdown-menu.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/turn-into-dropdown-menu.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/turn-into-dropdown-menu')),
+ chunks: []
},
- 'resizable': {
- name: 'resizable',
- type: 'components:plate-ui',
+ "resizable": {
+ name: "resizable",
+ type: "registry:ui",
registryDependencies: [],
- files: ['registry/default/plate-ui/resizable.tsx'],
+ files: ["registry/default/plate-ui/resizable.tsx"],
+ component: React.lazy(() => import("@/registry/default/plate-ui/resizable.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/plate-ui/resizable')),
+ chunks: []
},
- 'editor-default': {
- name: 'editor-default',
- type: 'components:example',
+ "editor-default": {
+ name: "editor-default",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-default.tsx'],
+ files: ["registry/default/example/editor-default.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-default.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-default')),
+ chunks: []
},
- 'editor-disabled': {
- name: 'editor-disabled',
- type: 'components:example',
+ "editor-disabled": {
+ name: "editor-disabled",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-disabled.tsx'],
+ files: ["registry/default/example/editor-disabled.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-disabled.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-disabled')),
+ chunks: []
},
- 'editor-ghost': {
- name: 'editor-ghost',
- type: 'components:example',
+ "editor-ghost": {
+ name: "editor-ghost",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-ghost.tsx'],
+ files: ["registry/default/example/editor-ghost.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-ghost.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-ghost')),
+ chunks: []
},
- 'editor-label': {
- name: 'editor-label',
- type: 'components:example',
+ "editor-label": {
+ name: "editor-label",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-label.tsx'],
+ files: ["registry/default/example/editor-label.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-label.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-label')),
+ chunks: []
},
- 'editor-text': {
- name: 'editor-text',
- type: 'components:example',
+ "editor-text": {
+ name: "editor-text",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-text.tsx'],
+ files: ["registry/default/example/editor-text.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-text.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-text')),
+ chunks: []
},
- 'editor-button': {
- name: 'editor-button',
- type: 'components:example',
+ "editor-button": {
+ name: "editor-button",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-button.tsx'],
+ files: ["registry/default/example/editor-button.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-button.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-button')),
+ chunks: []
},
- 'editor-form': {
- name: 'editor-form',
- type: 'components:example',
+ "editor-form": {
+ name: "editor-form",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editor-form.tsx'],
+ files: ["registry/default/example/editor-form.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editor-form.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editor-form')),
+ chunks: []
},
- 'basic-editor-default-demo': {
- name: 'basic-editor-default-demo',
- type: 'components:example',
+ "basic-editor-default-demo": {
+ name: "basic-editor-default-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-editor-default-demo.tsx'],
+ files: ["registry/default/example/basic-editor-default-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-editor-default-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-editor-default-demo')),
+ chunks: []
},
- 'controlled-demo': {
- name: 'controlled-demo',
- type: 'components:example',
+ "controlled-demo": {
+ name: "controlled-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/controlled-demo.tsx'],
+ files: ["registry/default/example/controlled-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/controlled-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/controlled-demo')),
+ chunks: []
},
- 'basic-editor-styling-demo': {
- name: 'basic-editor-styling-demo',
- type: 'components:example',
+ "basic-editor-styling-demo": {
+ name: "basic-editor-styling-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-editor-styling-demo.tsx'],
+ files: ["registry/default/example/basic-editor-styling-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-editor-styling-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-editor-styling-demo')),
+ chunks: []
},
- 'basic-editor-handler-demo': {
- name: 'basic-editor-handler-demo',
- type: 'components:example',
+ "basic-editor-handler-demo": {
+ name: "basic-editor-handler-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-editor-handler-demo.tsx'],
+ files: ["registry/default/example/basic-editor-handler-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-editor-handler-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-editor-handler-demo')),
+ chunks: []
},
- 'basic-editor-value-demo': {
- name: 'basic-editor-value-demo',
- type: 'components:example',
+ "basic-editor-value-demo": {
+ name: "basic-editor-value-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-editor-value-demo.tsx'],
+ files: ["registry/default/example/basic-editor-value-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-editor-value-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-editor-value-demo')),
+ chunks: []
},
- 'basic-plugins-components-demo': {
- name: 'basic-plugins-components-demo',
- type: 'components:example',
+ "basic-plugins-components-demo": {
+ name: "basic-plugins-components-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-plugins-components-demo.tsx'],
+ files: ["registry/default/example/basic-plugins-components-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-plugins-components-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-plugins-components-demo')),
+ chunks: []
},
- 'basic-plugins-default-demo': {
- name: 'basic-plugins-default-demo',
- type: 'components:example',
+ "basic-plugins-default-demo": {
+ name: "basic-plugins-default-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/basic-plugins-default-demo.tsx'],
+ files: ["registry/default/example/basic-plugins-default-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/basic-plugins-default-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/basic-plugins-default-demo')),
+ chunks: []
},
- 'cloud-demo': {
- name: 'cloud-demo',
- type: 'components:example',
+ "cloud-demo": {
+ name: "cloud-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/cloud-demo.tsx'],
+ files: ["registry/default/example/cloud-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/cloud-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/cloud-demo')),
+ chunks: []
},
- 'editable-voids-demo': {
- name: 'editable-voids-demo',
- type: 'components:example',
+ "editable-voids-demo": {
+ name: "editable-voids-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/editable-voids-demo.tsx'],
+ files: ["registry/default/example/editable-voids-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/editable-voids-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/editable-voids-demo')),
+ chunks: []
},
- 'find-replace-demo': {
- name: 'find-replace-demo',
- type: 'components:example',
+ "find-replace-demo": {
+ name: "find-replace-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/find-replace-demo.tsx'],
+ files: ["registry/default/example/find-replace-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/find-replace-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/find-replace-demo')),
+ chunks: []
},
- 'hundreds-blocks-demo': {
- name: 'hundreds-blocks-demo',
- type: 'components:example',
+ "hundreds-blocks-demo": {
+ name: "hundreds-blocks-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/hundreds-blocks-demo.tsx'],
+ files: ["registry/default/example/hundreds-blocks-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/hundreds-blocks-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/hundreds-blocks-demo')),
+ chunks: []
},
- 'hundreds-editors-demo': {
- name: 'hundreds-editors-demo',
- type: 'components:example',
+ "hundreds-editors-demo": {
+ name: "hundreds-editors-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/hundreds-editors-demo.tsx'],
+ files: ["registry/default/example/hundreds-editors-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/hundreds-editors-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/hundreds-editors-demo')),
+ chunks: []
},
- 'iframe-demo': {
- name: 'iframe-demo',
- type: 'components:example',
+ "iframe-demo": {
+ name: "iframe-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/iframe-demo.tsx'],
+ files: ["registry/default/example/iframe-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/iframe-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/iframe-demo')),
+ chunks: []
},
- 'mode-toggle': {
- name: 'mode-toggle',
- type: 'components:example',
- registryDependencies: [],
- files: ['registry/default/example/mode-toggle.tsx'],
+ "mode-toggle": {
+ name: "mode-toggle",
+ type: "registry:example",
+ registryDependencies: undefined,
+ files: ["registry/default/example/mode-toggle.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/mode-toggle.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/mode-toggle')),
+ chunks: []
},
- 'multiple-editors-demo': {
- name: 'multiple-editors-demo',
- type: 'components:example',
+ "multiple-editors-demo": {
+ name: "multiple-editors-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/multiple-editors-demo.tsx'],
+ files: ["registry/default/example/multiple-editors-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/multiple-editors-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/multiple-editors-demo')),
+ chunks: []
},
- 'version-history-demo': {
- name: 'version-history-demo',
- type: 'components:example',
+ "version-history-demo": {
+ name: "version-history-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/version-history-demo.tsx'],
+ files: ["registry/default/example/version-history-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/version-history-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/version-history-demo')),
+ chunks: []
},
- 'playground-demo': {
- name: 'playground-demo',
- type: 'components:example',
+ "playground-demo": {
+ name: "playground-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/playground-demo.tsx'],
+ files: ["registry/default/example/playground-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/playground-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/playground-demo')),
+ chunks: []
},
- 'preview-md-demo': {
- name: 'preview-md-demo',
- type: 'components:example',
+ "preview-md-demo": {
+ name: "preview-md-demo",
+ type: "registry:example",
registryDependencies: [],
- files: ['registry/default/example/preview-md-demo.tsx'],
+ files: ["registry/default/example/preview-md-demo.tsx"],
+ component: React.lazy(() => import("@/registry/default/example/preview-md-demo.tsx")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/registry/default/example/preview-md-demo')),
+ chunks: []
},
- 'globals': {
- name: 'globals',
- type: 'components:component',
- registryDependencies: [],
- files: ['styles/globals.css'],
+ "plate-types": {
+ name: "plate-types",
+ type: "registry:lib",
+ registryDependencies: undefined,
+ files: ["registry/default/lib/plate-types.ts"],
+ component: React.lazy(() => import("@/registry/default/lib/plate-types.ts")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/styles/globals.css')),
+ chunks: []
},
- 'plate-types': {
- name: 'plate-types',
- type: 'components:component',
- registryDependencies: [],
- files: ['types/plate-types.ts'],
+ "utils": {
+ name: "utils",
+ type: "registry:lib",
+ registryDependencies: undefined,
+ files: ["registry/default/lib/utils.ts"],
+ component: React.lazy(() => import("@/registry/default/lib/utils.ts")),
+ source: "",
+ category: "undefined",
+ subcategory: "undefined",
+ chunks: []
+ },
+ "use-debounce": {
+ name: "use-debounce",
+ type: "registry:hook",
+ registryDependencies: undefined,
+ files: ["registry/default/hooks/use-debounce.ts"],
+ component: React.lazy(() => import("@/registry/default/hooks/use-debounce.ts")),
+ source: "",
category: "undefined",
subcategory: "undefined",
- component: React.lazy(() => import('@/types/plate-types.ts')),
+ chunks: []
},
},
}
diff --git a/apps/www/src/app/_components/home-tabs.tsx b/apps/www/src/app/_components/home-tabs.tsx
index 48b2d640db..fa604c3be5 100644
--- a/apps/www/src/app/_components/home-tabs.tsx
+++ b/apps/www/src/app/_components/home-tabs.tsx
@@ -9,7 +9,6 @@ import { parseAsBoolean, useQueryState } from 'nuqs';
import { BlockPreview } from '@/components/block-preview';
import { settingsStore } from '@/components/context/settings-store';
-import { ThemeWrapper } from '@/components/theme-wrapper';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
import { Button } from '@/registry/default/plate-ui/button';
@@ -69,9 +68,7 @@ export default function HomeTabs() {
-
-
-
+
diff --git a/apps/www/src/app/_components/installation-tab.tsx b/apps/www/src/app/_components/installation-tab.tsx
index 1232bf02f7..1a0b9c692c 100644
--- a/apps/www/src/app/_components/installation-tab.tsx
+++ b/apps/www/src/app/_components/installation-tab.tsx
@@ -368,9 +368,6 @@ export default function InstallationTab() {
const jsxCode: string[] = [];
- if (isManual) {
- addLine(``, true);
- }
if (hasDnd) {
addLine(``, true);
}
@@ -412,9 +409,6 @@ export default function InstallationTab() {
if (hasDnd) {
addLine(` `, false, true);
}
- if (isManual) {
- addLine(` `, false, true);
- }
const plateCode = [
`export function PlateEditor() {`,
diff --git a/apps/www/src/app/announcement-button.tsx b/apps/www/src/app/announcement-button.tsx
index ebe21b91a0..0de0181cf7 100644
--- a/apps/www/src/app/announcement-button.tsx
+++ b/apps/www/src/app/announcement-button.tsx
@@ -11,15 +11,19 @@ import { Separator } from '@/registry/default/plate-ui/separator';
export function AnnouncementButton() {
return (
{
settingsStore.set.showSettings(true);
settingsStore.set.customizerTab('plugins');
}}
>
- 🎉 Introducing
- the interactive builder.
+ 🎉
+
+
+ Introducing the interactive builder
+
);
diff --git a/apps/www/src/app/page.tsx b/apps/www/src/app/page.tsx
index 8a5db45d3b..33fe062f9f 100644
--- a/apps/www/src/app/page.tsx
+++ b/apps/www/src/app/page.tsx
@@ -30,16 +30,14 @@ export default function IndexPage() {
-
Build your rich-text editor.
-
-
-
+
Build your rich-text editor
+
Plugin system & primitive component library.
CLI for styled components. Customizable. Open Source.
-
+
Get Started
diff --git a/apps/www/src/components/block-copy-button.tsx b/apps/www/src/components/block-copy-button.tsx
index dac8a8918c..7f7617a581 100644
--- a/apps/www/src/components/block-copy-button.tsx
+++ b/apps/www/src/components/block-copy-button.tsx
@@ -11,6 +11,7 @@ import { Button } from '@/registry/default/plate-ui/button';
import {
Tooltip,
TooltipContent,
+ TooltipProvider,
TooltipTrigger,
} from '@/registry/default/plate-ui/tooltip';
@@ -34,29 +35,33 @@ export function BlockCopyButton({
}, [hasCopied]);
return (
-
-
- {
- void navigator.clipboard.writeText(code);
- trackEvent({
- name: event,
- properties: {
- name,
- },
- });
- setHasCopied(true);
- }}
- {...props}
- >
- Copy
- {hasCopied ? : }
-
-
- Copy code
-
+
+
+
+ {
+ void navigator.clipboard.writeText(code);
+ trackEvent({
+ name: event,
+ properties: {
+ name,
+ },
+ });
+ setHasCopied(true);
+ }}
+ {...props}
+ >
+ Copy
+ {hasCopied ? : }
+
+
+
+ Copy code
+
+
+
);
}
diff --git a/apps/www/src/components/block-preview.tsx b/apps/www/src/components/block-preview.tsx
index a96301ef26..cb50066238 100644
--- a/apps/www/src/components/block-preview.tsx
+++ b/apps/www/src/components/block-preview.tsx
@@ -12,6 +12,7 @@ import { useLiftMode } from '@/hooks/use-lift-mode';
import PlaygroundDemo from '@/registry/default/example/playground-demo';
import { BlockToolbar } from './block-toolbar';
+import { ThemeWrapper } from './theme-wrapper';
import {
ResizableHandle,
ResizablePanel,
@@ -59,7 +60,14 @@ export function BlockPreview({
setFullScreen={setFullScreen}
/>
- {fullScreen && }
+ {fullScreen && (
+
+
+
+ )}
{!fullScreen && (
<>
@@ -71,7 +79,9 @@ export function BlockPreview({
)}
>
@@ -90,7 +100,9 @@ export function BlockPreview({
minSize={30}
>
{/* {isLoading ? ( */}
diff --git a/apps/www/src/components/context/providers.tsx b/apps/www/src/components/context/providers.tsx
index e00cdd8f57..05fc73edf6 100644
--- a/apps/www/src/components/context/providers.tsx
+++ b/apps/www/src/components/context/providers.tsx
@@ -2,8 +2,6 @@
import { Provider as JotaiProvider } from 'jotai';
-import { TooltipProvider } from '@/registry/default/plate-ui/tooltip';
-
import { ThemeProvider } from './theme-provider';
export function Providers({ children }: { children: React.ReactNode }) {
@@ -15,13 +13,7 @@ export function Providers({ children }: { children: React.ReactNode }) {
disableTransitionOnChange
enableSystem
>
-
- {children}
-
+ {children}
);
diff --git a/apps/www/src/components/copy-code-button.tsx b/apps/www/src/components/copy-code-button.tsx
index f982f6c3f8..9587600dfc 100644
--- a/apps/www/src/components/copy-code-button.tsx
+++ b/apps/www/src/components/copy-code-button.tsx
@@ -2,28 +2,23 @@ import * as React from 'react';
import { CheckIcon, CopyIcon } from '@radix-ui/react-icons';
import { cn } from '@udecode/cn';
-import template from 'lodash.template';
+import { ClipboardIcon } from 'lucide-react';
import { useConfig } from '@/hooks/use-config';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+import { type Theme, themeColorsToCssVariables } from '@/lib/themes';
import { Button } from '@/registry/default/plate-ui/button';
-import {
- Dialog,
- DialogContent,
- DialogDescription,
- DialogHeader,
- DialogTitle,
- DialogTrigger,
-} from '@/registry/default/plate-ui/dialog';
-import { type BaseColor, baseColors } from '@/registry/registry-base-colors';
import { copyToClipboardWithMeta } from './copy-button';
export function CopyCodeButton({
className,
+ compact,
...props
-}: React.ComponentProps
) {
+}: React.ComponentProps & { compact?: boolean }) {
const [config] = useConfig();
- const activeTheme = baseColors.find((theme) => theme.name === config.theme);
+ const { themesConfig } = useThemesConfig();
+ const activeTheme = themesConfig.activeTheme;
const [hasCopied, setHasCopied] = React.useState(false);
React.useEffect(() => {
@@ -32,260 +27,81 @@ export function CopyCodeButton({
}, 2000);
}, [hasCopied]);
- return (
- <>
- {activeTheme && (
- {
- copyToClipboardWithMeta(getThemeCode(activeTheme, config.radius), {
- name: 'copy_theme_code',
- properties: {
- radius: config.radius,
- theme: activeTheme.name,
- },
- });
- setHasCopied(true);
- }}
- {...props}
- >
- {hasCopied ? (
-
- ) : (
-
- )}
- Copy code
-
- )}
-
-
-
- Copy code
-
-
-
-
- Theme
-
- Copy and paste the following code into your CSS file.
-
-
-
-
- {activeTheme && (
- {
- copyToClipboardWithMeta(
- getThemeCode(activeTheme, config.radius),
- {
- name: 'copy_theme_code',
- properties: {
- radius: config.radius,
- theme: activeTheme.name,
- },
- }
- );
- setHasCopied(true);
- }}
- >
- {hasCopied ? (
-
- ) : (
-
- )}
- Copy
-
- )}
-
-
-
- >
- );
-}
+ const themeCode = React.useMemo(() => {
+ return getThemeCode(activeTheme, config.radius);
+ }, [activeTheme, config.radius]);
-function CustomizerCode() {
- const [config] = useConfig();
- const activeTheme = baseColors.find((theme) => theme.name === config.theme);
+ if (compact) {
+ return (
+ {
+ copyToClipboardWithMeta(themeCode, {
+ name: 'copy_theme_code',
+ properties: {
+ radius: config.radius,
+ theme: activeTheme.name,
+ },
+ });
+ setHasCopied(true);
+ }}
+ {...props}
+ >
+ Copy
+ {hasCopied ? : }
+
+ );
+ }
return (
-
- {/* eslint-disable-next-line react/no-unknown-property */}
-
-
-
- @layer base {
- :root {
-
- --background:{' '}
- {activeTheme?.cssVars.light.background};
-
-
- --foreground:{' '}
- {activeTheme?.cssVars.light.foreground};
-
- {[
- 'card',
- 'popover',
- 'primary',
- 'secondary',
- 'muted',
- 'accent',
- 'destructive',
- ].map((prefix) => (
- <>
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.light[
- prefix as keyof typeof activeTheme.cssVars.light
- ]
- }
- ;
-
-
- --{prefix}-foreground:{' '}
- {
- activeTheme?.cssVars.light[
- `${prefix}-foreground` as keyof typeof activeTheme.cssVars.light
- ]
- }
- ;
-
- >
- ))}
-
- --border:{' '}
- {activeTheme?.cssVars.light.border};
-
-
- --input:{' '}
- {activeTheme?.cssVars.light.input};
-
-
- --ring: {activeTheme?.cssVars.light.ring};
-
-
- --radius: {config.radius}rem;
-
- }
-
- .dark {
-
- --background:{' '}
- {activeTheme?.cssVars.dark.background};
-
-
- --foreground:{' '}
- {activeTheme?.cssVars.dark.foreground};
-
- {[
- 'card',
- 'popover',
- 'primary',
- 'secondary',
- 'muted',
- 'accent',
- 'destructive',
- ].map((prefix) => (
- <>
-
- --{prefix}:{' '}
- {
- activeTheme?.cssVars.dark[
- prefix as keyof typeof activeTheme.cssVars.dark
- ]
- }
- ;
-
-
- --{prefix}-foreground:{' '}
- {
- activeTheme?.cssVars.dark[
- `${prefix}-foreground` as keyof typeof activeTheme.cssVars.dark
- ]
- }
- ;
-
- >
- ))}
-
- --border:{' '}
- {activeTheme?.cssVars.dark.border};
-
-
- --input: {activeTheme?.cssVars.dark.input}
- ;
-
-
- --ring: {activeTheme?.cssVars.dark.ring};
-
- }
- }
-
-
-
-
+ {
+ copyToClipboardWithMeta(themeCode, {
+ name: 'copy_theme_code',
+ properties: {
+ radius: config.radius,
+ theme: activeTheme.name,
+ },
+ });
+ setHasCopied(true);
+ }}
+ {...props}
+ >
+ {hasCopied ? (
+
+ ) : (
+
+ )}
+ Copy code
+
);
}
-function getThemeCode(theme: BaseColor, radius: number) {
+export function getThemeCode(theme: Theme, radius: number): string {
if (!theme) {
return '';
}
- return template(BASE_STYLES_WITH_VARIABLES)({
- colors: theme.cssVars,
- radius,
- });
-}
+ const lightVars = themeColorsToCssVariables(theme.colors);
+ const darkVars = themeColorsToCssVariables(theme.colorsDark);
-const BASE_STYLES_WITH_VARIABLES = `
+ return `\
@layer base {
:root {
- --background: <%- colors.light["background"] %>;
- --foreground: <%- colors.light["foreground"] %>;
- --card: <%- colors.light["card"] %>;
- --card-foreground: <%- colors.light["card-foreground"] %>;
- --popover: <%- colors.light["popover"] %>;
- --popover-foreground: <%- colors.light["popover-foreground"] %>;
- --primary: <%- colors.light["primary"] %>;
- --primary-foreground: <%- colors.light["primary-foreground"] %>;
- --secondary: <%- colors.light["secondary"] %>;
- --secondary-foreground: <%- colors.light["secondary-foreground"] %>;
- --muted: <%- colors.light["muted"] %>;
- --muted-foreground: <%- colors.light["muted-foreground"] %>;
- --accent: <%- colors.light["accent"] %>;
- --accent-foreground: <%- colors.light["accent-foreground"] %>;
- --destructive: <%- colors.light["destructive"] %>;
- --destructive-foreground: <%- colors.light["destructive-foreground"] %>;
- --border: <%- colors.light["border"] %>;
- --input: <%- colors.light["input"] %>;
- --ring: <%- colors.light["ring"] %>;
- --radius: <%- radius %>rem;
+${Object.entries(lightVars)
+ .map(([key, value]) => ` ${key}: ${value};`)
+ .join('\n')}
+ --radius: ${radius}rem;
}
-
+
.dark {
- --background: <%- colors.dark["background"] %>;
- --foreground: <%- colors.dark["foreground"] %>;
- --card: <%- colors.dark["card"] %>;
- --card-foreground: <%- colors.dark["card-foreground"] %>;
- --popover: <%- colors.dark["popover"] %>;
- --popover-foreground: <%- colors.dark["popover-foreground"] %>;
- --primary: <%- colors.dark["primary"] %>;
- --primary-foreground: <%- colors.dark["primary-foreground"] %>;
- --secondary: <%- colors.dark["secondary"] %>;
- --secondary-foreground: <%- colors.dark["secondary-foreground"] %>;
- --muted: <%- colors.dark["muted"] %>;
- --muted-foreground: <%- colors.dark["muted-foreground"] %>;
- --accent: <%- colors.dark["accent"] %>;
- --accent-foreground: <%- colors.dark["accent-foreground"] %>;
- --destructive: <%- colors.dark["destructive"] %>;
- --destructive-foreground: <%- colors.dark["destructive-foreground"] %>;
- --border: <%- colors.dark["border"] %>;
- --input: <%- colors.dark["input"] %>;
- --ring: <%- colors.dark["ring"] %>;
+${Object.entries(darkVars)
+ .map(([key, value]) => ` ${key}: ${value};`)
+ .join('\n')}
}
}
`;
+}
diff --git a/apps/www/src/components/customizer-drawer.tsx b/apps/www/src/components/customizer-drawer.tsx
index af6b544d88..23c4277c8b 100644
--- a/apps/www/src/components/customizer-drawer.tsx
+++ b/apps/www/src/components/customizer-drawer.tsx
@@ -51,7 +51,7 @@ export default function CustomizerDrawer() {
}}
shouldScaleBackground={false}
>
-
+
@@ -66,7 +66,7 @@ export default function CustomizerDrawer() {
modal={false}
>
diff --git a/apps/www/src/components/customizer-tabs.tsx b/apps/www/src/components/customizer-tabs.tsx
index fdcf250d64..38cc1f42fe 100644
--- a/apps/www/src/components/customizer-tabs.tsx
+++ b/apps/www/src/components/customizer-tabs.tsx
@@ -9,8 +9,9 @@ export function CustomizerTabs() {
const customizerTab = settingsStore.use.customizerTab();
return (
-
+
{
settingsStore.set.customizerTab(value);
@@ -23,16 +24,10 @@ export function CustomizerTabs() {
-
+
-
+
diff --git a/apps/www/src/components/plate-ui/playground-insert-dropdown-menu.tsx b/apps/www/src/components/plate-ui/playground-insert-dropdown-menu.tsx
index 3538310145..1725abe31d 100644
--- a/apps/www/src/components/plate-ui/playground-insert-dropdown-menu.tsx
+++ b/apps/www/src/components/plate-ui/playground-insert-dropdown-menu.tsx
@@ -24,6 +24,7 @@ import { TablePlugin, insertTable } from '@udecode/plate-table/react';
import { CheckPlugin } from '@/components/context/check-plugin';
import { settingsStore } from '@/components/context/settings-store';
import { Icons } from '@/components/icons';
+import { useMyEditorRef } from '@/registry/default/lib/plate-types';
import {
DropdownMenu,
DropdownMenuContent,
@@ -34,7 +35,6 @@ import {
useOpenState,
} from '@/registry/default/plate-ui/dropdown-menu';
import { ToolbarButton } from '@/registry/default/plate-ui/toolbar';
-import { useMyEditorRef } from '@/types/plate-types';
const items = [
{
diff --git a/apps/www/src/components/plate-ui/playground-turn-into-dropdown-menu.tsx b/apps/www/src/components/plate-ui/playground-turn-into-dropdown-menu.tsx
index f6c720cd92..80e9e47806 100644
--- a/apps/www/src/components/plate-ui/playground-turn-into-dropdown-menu.tsx
+++ b/apps/www/src/components/plate-ui/playground-turn-into-dropdown-menu.tsx
@@ -23,6 +23,7 @@ import { ListPlugin } from '@udecode/plate-list/react';
import { CheckPlugin } from '@/components/context/check-plugin';
import { settingsStore } from '@/components/context/settings-store';
import { Icons } from '@/components/icons';
+import { useMyEditorRef } from '@/registry/default/lib/plate-types';
import {
DropdownMenu,
DropdownMenuContent,
@@ -33,7 +34,6 @@ import {
useOpenState,
} from '@/registry/default/plate-ui/dropdown-menu';
import { ToolbarButton } from '@/registry/default/plate-ui/toolbar';
-import { useMyEditorRef } from '@/types/plate-types';
const items = [
{
diff --git a/apps/www/src/components/plugins-tab-content.tsx b/apps/www/src/components/plugins-tab-content.tsx
index eb19f2dffe..0584cded4c 100644
--- a/apps/www/src/components/plugins-tab-content.tsx
+++ b/apps/www/src/components/plugins-tab-content.tsx
@@ -6,7 +6,7 @@ import React, { useEffect, useMemo, useState } from 'react';
import { ArrowUpRight, Eye, EyeOff } from 'lucide-react';
import { customizerList } from '@/config/customizer-list';
-import { useDebounce } from '@/hooks/use-debounce';
+import { useDebounce } from '@/registry/default/hooks/use-debounce';
import { Button } from '@/registry/default/plate-ui/button';
import { Checkbox } from '@/registry/default/plate-ui/checkbox';
diff --git a/apps/www/src/components/setting-checkbox.tsx b/apps/www/src/components/setting-checkbox.tsx
index 4335080d45..9a02a309d9 100644
--- a/apps/www/src/components/setting-checkbox.tsx
+++ b/apps/www/src/components/setting-checkbox.tsx
@@ -15,6 +15,7 @@ import {
import {
Tooltip,
TooltipContent,
+ TooltipProvider,
TooltipTrigger,
} from '@/registry/default/plate-ui/tooltip';
@@ -50,26 +51,28 @@ export function SettingCheckbox({
-
-
-
- {
- settingsStore.set.setCheckedIdNext(id, _checked);
- }}
- />
-
- {label}
-
-
-
+
+
+
+
+ {
+ settingsStore.set.setCheckedIdNext(id, _checked);
+ }}
+ />
+
+ {label}
+
+
+
-
- {description}
-
-
+
+ {description}
+
+
+
{badges?.map((badge) => (
diff --git a/apps/www/src/components/settings-toggle.tsx b/apps/www/src/components/settings-toggle.tsx
index 1c976fb763..5201c098fe 100644
--- a/apps/www/src/components/settings-toggle.tsx
+++ b/apps/www/src/components/settings-toggle.tsx
@@ -5,6 +5,7 @@ import React from 'react';
import {
Tooltip,
TooltipContent,
+ TooltipProvider,
TooltipTrigger,
} from '@/registry/default/plate-ui/tooltip';
@@ -16,19 +17,25 @@ export function SettingsToggle() {
const showSettings = settingsStore.use.showSettings();
return (
-
-
- settingsStore.set.showSettings(pressed)}
- pressed={showSettings}
- >
-
-
-
+
+
+
+
+ settingsStore.set.showSettings(pressed)
+ }
+ pressed={showSettings}
+ >
+
+
+
- {showSettings ? 'Hide' : 'Show'} settings
-
+
+ {showSettings ? 'Hide' : 'Show'} settings
+
+
+
);
}
diff --git a/apps/www/src/components/theme-customizer.tsx b/apps/www/src/components/theme-customizer.tsx
index 7c7b07c40d..f440f25c71 100644
--- a/apps/www/src/components/theme-customizer.tsx
+++ b/apps/www/src/components/theme-customizer.tsx
@@ -3,7 +3,6 @@
import * as React from 'react';
import {
- CheckIcon,
InfoCircledIcon,
MoonIcon,
ResetIcon,
@@ -13,31 +12,37 @@ import { cn } from '@udecode/cn';
import { useTheme } from 'next-themes';
import { useConfig } from '@/hooks/use-config';
+import { useMounted } from '@/hooks/use-mounted';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+import { THEMES } from '@/lib/themes';
import { Button } from '@/registry/default/plate-ui/button';
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '@/registry/default/plate-ui/popover';
-import { baseColors } from '@/registry/registry-base-colors';
+import { Separator } from '@/registry/default/plate-ui/separator';
-import { CopyCodeButton } from './copy-code-button';
+import { CopyCodeButton, getThemeCode } from './copy-code-button';
+import { ThemesSwitcher } from './themes-selector-mini';
import { Label } from './ui/label';
import { Skeleton } from './ui/skeleton';
export function ThemeCustomizer() {
- const [mounted, setMounted] = React.useState(false);
+ const mounted = useMounted();
const [config, setConfig] = useConfig();
+ const { setThemesConfig, themesConfig } = useThemesConfig();
+ const activeTheme = themesConfig.activeTheme ?? THEMES['default-shadcn'];
const { resolvedTheme: mode, setTheme: setMode } = useTheme();
- React.useEffect(() => {
- setMounted(true);
- }, []);
+ const themeCode = React.useMemo(() => {
+ return getThemeCode(activeTheme, config.radius);
+ }, [activeTheme, config.radius]);
return (
- <>
+
-
+
Customize
@@ -45,11 +50,9 @@ export function ThemeCustomizer() {
Pick a style and color for your components.
-
-
-
-
+
+
Style
@@ -95,10 +98,13 @@ export function ThemeCustomizer() {
className="ml-auto rounded-[0.5rem]"
onClick={() => {
setConfig({
- ...config,
radius: 0.5,
+ style: 'default',
theme: 'slate',
});
+ setThemesConfig({
+ activeTheme: THEMES['default-shadcn'],
+ });
}}
>
@@ -106,51 +112,11 @@ export function ThemeCustomizer() {
-
-
Color
-
- {baseColors.map((theme) => {
- const isActive = config.theme === theme.name;
-
- return mounted ? (
- {
- setConfig({
- ...config,
- theme: theme.name,
- });
- }}
- >
-
- {isActive && }
-
- {theme.label}
-
- ) : (
-
- );
- })}
-
+
+ Theme
+
-
+
Radius
{['0', '0.3', '0.5', '0.75', '1.0'].map((value) => {
@@ -176,7 +142,7 @@ export function ThemeCustomizer() {
})}
-
+
Mode
{mounted ? (
@@ -208,7 +174,30 @@ export function ThemeCustomizer() {
)}
+
+
+
+
+
+
+
+
+ {`/* ${themesConfig.activeTheme.name} */`}
+ {themeCode.split('\n').map((line, index) => (
+
+ {line}
+
+ ))}
+
+
+
+
+
+
- >
+
);
}
diff --git a/apps/www/src/components/theme-switcher.tsx b/apps/www/src/components/theme-switcher.tsx
new file mode 100644
index 0000000000..0be4166d87
--- /dev/null
+++ b/apps/www/src/components/theme-switcher.tsx
@@ -0,0 +1,28 @@
+'use client';
+
+import * as React from 'react';
+
+import { useSelectedLayoutSegment } from 'next/navigation';
+
+import { useConfig } from '@/hooks/use-config';
+
+export function ThemeSwitcher() {
+ const [config] = useConfig();
+ const segment = useSelectedLayoutSegment();
+
+ React.useEffect(() => {
+ document.body.classList.forEach((className) => {
+ if (/^theme.*/.exec(className)) {
+ document.body.classList.remove(className);
+ }
+ });
+
+ const theme = segment === 'themes' ? config.theme : null;
+
+ if (theme) {
+ return document.body.classList.add(`theme-${theme}`);
+ }
+ }, [segment, config]);
+
+ return null;
+}
diff --git a/apps/www/src/components/theme-wrapper.tsx b/apps/www/src/components/theme-wrapper.tsx
index ae95f70212..d375ddeb26 100644
--- a/apps/www/src/components/theme-wrapper.tsx
+++ b/apps/www/src/components/theme-wrapper.tsx
@@ -4,6 +4,8 @@ import { cn } from '@udecode/cn';
import { useConfig } from '@/hooks/use-config';
+import { ThemesStyle } from './themes-styles';
+
interface ThemeWrapperProps extends React.ComponentProps<'div'> {
defaultTheme?: string;
}
@@ -19,7 +21,8 @@ export function ThemeWrapper({
+
+
{children}
);
diff --git a/apps/www/src/components/themes-button.tsx b/apps/www/src/components/themes-button.tsx
index 159368371a..bb0ce47512 100644
--- a/apps/www/src/components/themes-button.tsx
+++ b/apps/www/src/components/themes-button.tsx
@@ -2,107 +2,27 @@
import * as React from 'react';
-import { CheckIcon } from '@radix-ui/react-icons';
-import { cn } from '@udecode/cn';
import { Paintbrush } from 'lucide-react';
-import { useTheme } from 'next-themes';
-import { useConfig } from '@/hooks/use-config';
+import { THEME_LIST } from '@/lib/themes';
import { Button } from '@/registry/default/plate-ui/button';
-import {
- Tooltip,
- TooltipContent,
- TooltipTrigger,
-} from '@/registry/default/plate-ui/tooltip';
-import { baseColors } from '@/registry/registry-base-colors';
import { settingsStore } from './context/settings-store';
-import { Skeleton } from './ui/skeleton';
+import { ThemesSwitcher } from './themes-selector-mini';
export function ThemesButton() {
- const [config, setConfig] = useConfig();
- const { resolvedTheme: mode } = useTheme();
- const [mounted, setMounted] = React.useState(false);
-
- React.useEffect(() => {
- setMounted(true);
- }, []);
-
return (
- {mounted ? (
- <>
- {['slate', 'rose', 'blue', 'green', 'orange'].map((color) => {
- const theme = baseColors.find((th) => th.name === color);
- const isActive = config.theme === color;
-
- if (!theme) {
- return null;
- }
-
- return (
-
-
-
- setConfig({
- ...config,
- theme: theme.name,
- })
- }
- type="button"
- >
-
- {isActive && (
-
- )}
-
- {theme.label}
-
-
-
- {theme.label}
-
-
- );
- })}
- >
- ) : (
-
-
-
-
-
-
-
- )}
+
{
settingsStore.set.customizerTab('themes');
settingsStore.set.showSettings(true);
diff --git a/apps/www/src/components/themes-selector-mini.tsx b/apps/www/src/components/themes-selector-mini.tsx
new file mode 100644
index 0000000000..f120f9d550
--- /dev/null
+++ b/apps/www/src/components/themes-selector-mini.tsx
@@ -0,0 +1,136 @@
+'use client';
+
+import * as React from 'react';
+
+import { useTheme } from 'next-themes';
+
+import { useMounted } from '@/hooks/use-mounted';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+import { type Theme, THEME_LIST, THEMES } from '@/lib/themes';
+import { cn } from '@/registry/default/lib/utils';
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from '@/registry/default/plate-ui/tooltip';
+
+import { Skeleton } from './ui/skeleton';
+import { ToggleGroup, ToggleGroupItem } from './ui/toggle-group';
+
+export function ThemesSwitcher({
+ className,
+ themes = THEME_LIST,
+}: React.ComponentProps<'div'> & { themes?: Theme[] }) {
+ const { setTheme, theme: mode } = useTheme();
+ const mounted = useMounted();
+ const { setThemesConfig, themesConfig } = useThemesConfig();
+ const activeTheme = themesConfig.activeTheme ?? THEMES['default-shadcn'];
+ // const isDesktop = useMediaQuery('(min-width: 1024px)');
+
+ if (!mounted) {
+ return (
+
+ {themes.map((theme) => (
+
+
+
+ ))}
+
+ );
+ }
+
+ return (
+ {
+ const theme = themes.find((theme) => theme.name === value);
+
+ if (!theme) {
+ return;
+ }
+
+ setThemesConfig({ activeTheme: theme });
+ }}
+ type="single"
+ >
+
+ {themes.map((theme) => {
+ const isActive = theme.name === activeTheme.name;
+ // const isDarkTheme = ['Midnight'].includes(theme.name);
+ const cssVars =
+ mounted && mode === 'dark'
+ ? theme.cssVars.dark
+ : theme.cssVars.light;
+
+ return (
+
+
+ {
+ if (theme.name === activeTheme.name) {
+ // Toggle between light and dark mode
+ setTheme(mode === 'dark' ? 'light' : 'dark');
+ }
+ }}
+ >
+
+
+
+
+
+
+ {theme.name}
+
+
+
+
+
+ {theme.name}
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/apps/www/src/components/themes-selector.tsx b/apps/www/src/components/themes-selector.tsx
new file mode 100644
index 0000000000..d7edd3b1a1
--- /dev/null
+++ b/apps/www/src/components/themes-selector.tsx
@@ -0,0 +1,128 @@
+'use client';
+
+import * as React from 'react';
+
+import { useTheme } from 'next-themes';
+
+import { useMediaQuery } from '@/hooks/use-media-query';
+import { useMounted } from '@/hooks/use-mounted';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+import { type Theme, THEME_LIST } from '@/lib/themes';
+import { cn } from '@/registry/default/lib/utils';
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from '@/registry/default/plate-ui/tooltip';
+
+import { Skeleton } from './ui/skeleton';
+import { ToggleGroup, ToggleGroupItem } from './ui/toggle-group';
+
+export function ThemesSwitcher({
+ className,
+ themes = THEME_LIST,
+}: React.ComponentProps<'div'> & { themes?: Theme[] }) {
+ const { theme: mode } = useTheme();
+ const mounted = useMounted();
+ const { setThemesConfig, themesConfig } = useThemesConfig();
+ const activeTheme = themesConfig.activeTheme;
+ const isDesktop = useMediaQuery('(min-width: 1024px)');
+
+ if (!mounted) {
+ return (
+
+ {themes.map((theme) => (
+
+
+
+ ))}
+
+ );
+ }
+
+ return (
+ {
+ const theme = themes.find((theme) => theme.name === value);
+
+ if (!theme) {
+ return;
+ }
+
+ setThemesConfig({ ...themesConfig, activeTheme: theme });
+ }}
+ type="single"
+ >
+
+ {themes.map((theme) => {
+ const isActive = theme.name === activeTheme.name;
+ const isDarkTheme = ['Midnight'].includes(theme.name);
+ const cssVars =
+ mounted && mode === 'dark'
+ ? theme.cssVars.dark
+ : theme.cssVars.light;
+
+ return (
+
+
+
+
+
+
+
+
+
+ {theme.name}
+
+
+
+
+
+ {theme.name}
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/apps/www/src/components/themes-styles.tsx b/apps/www/src/components/themes-styles.tsx
new file mode 100644
index 0000000000..8e34c67b7d
--- /dev/null
+++ b/apps/www/src/components/themes-styles.tsx
@@ -0,0 +1,35 @@
+'use client';
+
+import { useConfig } from '@/hooks/use-config';
+import { useMounted } from '@/hooks/use-mounted';
+import { useThemesConfig } from '@/hooks/use-themes-config';
+
+export function ThemesStyle() {
+ const [config] = useConfig();
+ const { themesConfig } = useThemesConfig();
+ const mounted = useMounted();
+
+ if (!themesConfig.activeTheme || !mounted) {
+ return null;
+ }
+
+ return (
+
+ );
+}
diff --git a/apps/www/src/components/ui/toggle.tsx b/apps/www/src/components/ui/toggle.tsx
index 83a11dcad8..31fe533724 100644
--- a/apps/www/src/components/ui/toggle.tsx
+++ b/apps/www/src/components/ui/toggle.tsx
@@ -25,6 +25,7 @@ export const toggleVariants = cva(
default:
'bg-transparent hover:bg-muted hover:text-muted-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',
floating: 'rounded-full bg-primary text-primary-foreground',
+ none: '',
outline:
'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',
},
diff --git a/apps/www/src/config/docs.ts b/apps/www/src/config/docs.ts
index d58417c577..aeef24c33c 100644
--- a/apps/www/src/config/docs.ts
+++ b/apps/www/src/config/docs.ts
@@ -53,7 +53,6 @@ export const docsConfig: DocsConfig = {
customizerComponents.caption,
customizerComponents.calendar,
customizerComponents.checkbox,
- customizerComponents.cloud,
customizerComponents.codeBlockElement,
customizerComponents.codeLeaf,
customizerComponents.codeLineElement,
diff --git a/apps/www/src/hooks/use-themes-config.ts b/apps/www/src/hooks/use-themes-config.ts
index 6b943b63b5..e9c07d418a 100644
--- a/apps/www/src/hooks/use-themes-config.ts
+++ b/apps/www/src/hooks/use-themes-config.ts
@@ -2,11 +2,12 @@ import { useAtom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
import { type Theme, THEMES } from '@/lib/themes';
+
type ThemesConfig = {
activeTheme: Theme;
};
const configAtom = atomWithStorage('themes:config', {
- activeTheme: THEMES[0],
+ activeTheme: THEMES['default-shadcn'],
});
export function useThemesConfig() {
diff --git a/apps/www/src/lib/plate/demo/values/usePlaygroundValue.ts b/apps/www/src/lib/plate/demo/values/usePlaygroundValue.ts
index 39871a4c71..2155a72e3a 100644
--- a/apps/www/src/lib/plate/demo/values/usePlaygroundValue.ts
+++ b/apps/www/src/lib/plate/demo/values/usePlaygroundValue.ts
@@ -1,6 +1,6 @@
import { useMemo } from 'react';
-import type { MyValue } from '@/types/plate-types';
+import type { MyValue } from '@/registry/default/lib/plate-types';
import { settingsStore } from '@/components/context/settings-store';
import { type ValueId, customizerPlugins } from '@/config/customizer-plugins';
diff --git a/apps/www/src/lib/themes.ts b/apps/www/src/lib/themes.ts
index e10ea2bb45..9e145ac4f9 100644
--- a/apps/www/src/lib/themes.ts
+++ b/apps/www/src/lib/themes.ts
@@ -1,6 +1,121 @@
-const _THEMES = [
- {
- id: 'default-shadcn',
+const _THEMES = {
+ ayu: {
+ id: 'ayu',
+ colors: {
+ accent: '35 100% 50%', // #FF9940
+ accentForeground: '0 0% 100%', // #FFFFFF
+ background: '38 100% 99%', // #FAFAFA
+ border: '44 17% 88%', // #E7E8E9
+ card: '38 100% 99%', // #FAFAFA
+ cardForeground: '0 0% 9%', // #171717
+ destructive: '0 100% 67%', // #FF3333
+ destructiveForeground: '0 0% 100%', // #FFFFFF
+ foreground: '0 0% 9%', // #171717
+ input: '44 17% 88%', // #E7E8E9
+ muted: '44 17% 88%', // #E7E8E9
+ mutedForeground: '0 0% 45%', // #737373
+ popover: '38 100% 99%', // #FAFAFA
+ popoverForeground: '0 0% 9%', // #171717
+ primary: '35 100% 50%', // #FF9940
+ primaryForeground: '0 0% 100%', // #FFFFFF
+ ring: '35 100% 50%', // #FF9940
+ secondary: '44 17% 88%', // #E7E8E9
+ secondaryForeground: '0 0% 9%', // #171717
+ },
+ colorsDark: {
+ accent: '35 100% 50%', // #FF9940
+ accentForeground: '0 0% 100%', // #FFFFFF
+ background: '220 27% 18%', // #1F2430
+ border: '220 13% 26%', // #33415E
+ card: '220 27% 18%', // #1F2430
+ cardForeground: '0 0% 100%', // #FFFFFF
+ destructive: '0 100% 67%', // #FF3333
+ destructiveForeground: '0 0% 100%', // #FFFFFF
+ foreground: '0 0% 100%', // #FFFFFF
+ input: '220 13% 26%', // #33415E
+ muted: '220 13% 26%', // #33415E
+ mutedForeground: '220 13% 65%', // #8A9199
+ popover: '220 27% 18%', // #1F2430
+ popoverForeground: '0 0% 100%', // #FFFFFF
+ primary: '35 100% 50%', // #FF9940
+ primaryForeground: '0 0% 100%', // #FFFFFF
+ ring: '35 100% 50%', // #FF9940
+ secondary: '220 13% 26%', // #33415E
+ secondaryForeground: '0 0% 100%', // #FFFFFF
+ },
+ fontFamily: {
+ body: {
+ name: 'Inter',
+ type: 'sans-serif',
+ },
+ heading: {
+ name: 'Inter',
+ type: 'sans-serif',
+ },
+ },
+ name: 'Ayu',
+ radius: 0.5,
+ },
+ catppuccin: {
+ id: 'catppuccin',
+ colors: {
+ accent: '220 23% 80%',
+ accentForeground: '220 23% 20%',
+ background: '220 23% 95%',
+ border: '220 13% 90%',
+ card: '220 23% 93%',
+ cardForeground: '234 16% 30%',
+ destructive: '3 87% 37%',
+ destructiveForeground: '3 87% 97%',
+ foreground: '234 16% 35%',
+ input: '220 13% 87%',
+ muted: '220 12% 90%',
+ mutedForeground: '220 12% 30%',
+ popover: '220 23% 92%',
+ popoverForeground: '234 16% 25%',
+ primary: '266 85% 58%',
+ primaryForeground: '0 0% 100%',
+ ring: '266 85% 58%',
+ secondary: '266 30% 75%',
+ secondaryForeground: '266 30% 15%',
+ },
+ // Catppuccin Mocha
+ colorsDark: {
+ accent: '240 21% 30%',
+ 'accent-foreground': '240 21% 90%',
+ background: '240 21% 15%',
+ border: '240 11% 20%',
+ card: '240 21% 13%',
+ 'card-foreground': '226 64% 93%',
+ destructive: '8 96% 56%',
+ destructiveForeground: '0 0% 100%',
+ foreground: '226 64% 88%',
+ input: '240 11% 23%',
+ muted: '240 12% 19%',
+ 'muted-foreground': '240 12% 69%',
+ popover: '240 21% 12%',
+ 'popover-foreground': '226 64% 98%',
+ primary: '267 84% 81%',
+ primaryForeground: '267 84% 21%',
+ ring: '267 84% 81%',
+ secondary: '267 30% 25%',
+ secondaryForeground: '267 30% 85%',
+ },
+ fontFamily: {
+ body: {
+ name: 'Inter',
+ type: 'sans-serif',
+ },
+ heading: {
+ name: 'Inter',
+ type: 'sans-serif',
+ },
+ },
+ name: 'Catppuccin',
+ radius: 0.5,
+ },
+ 'default-palette': {
+ id: 'default-palette',
colors: {
accent: '240 4.8% 95.9%',
'accent-foreground': '240 5.9% 10%',
@@ -8,11 +123,6 @@ const _THEMES = [
border: '240 5.9% 90%',
card: '0 0% 100%',
'card-foreground': '240 10% 3.9%',
- 'chart-1': '173 58% 39%',
- 'chart-2': '12 76% 61%',
- 'chart-3': '197 37% 24%',
- 'chart-4': '43 74% 66%',
- 'chart-5': '27 87% 67%',
destructive: '0 84.2% 60.2%',
'destructive-foreground': '0 0% 98%',
foreground: '240 10% 3.9%',
@@ -34,11 +144,6 @@ const _THEMES = [
border: '240 3.7% 15.9%',
card: '240 10% 3.9%',
'card-foreground': '0 0% 98%',
- 'chart-1': '220 70% 50%',
- 'chart-2': '340 75% 55%',
- 'chart-3': '30 80% 55%',
- 'chart-4': '280 65% 60%',
- 'chart-5': '160 60% 45%',
destructive: '0 62.8% 30.6%',
'destructive-foreground': '0 0% 98%',
foreground: '0 0% 98%',
@@ -63,11 +168,11 @@ const _THEMES = [
type: 'sans-serif',
},
},
- name: 'Default',
+ name: 'Catppuccin',
radius: 0.5,
},
- {
- id: 'default-palette',
+ 'default-shadcn': {
+ id: 'default-shadcn',
colors: {
accent: '240 4.8% 95.9%',
'accent-foreground': '240 5.9% 10%',
@@ -75,11 +180,6 @@ const _THEMES = [
border: '240 5.9% 90%',
card: '0 0% 100%',
'card-foreground': '240 10% 3.9%',
- 'chart-1': '12 76% 61%',
- 'chart-2': '173 58% 39%',
- 'chart-3': '197 37% 24%',
- 'chart-4': '43 74% 66%',
- 'chart-5': '27 87% 67%',
destructive: '0 84.2% 60.2%',
'destructive-foreground': '0 0% 98%',
foreground: '240 10% 3.9%',
@@ -101,11 +201,6 @@ const _THEMES = [
border: '240 3.7% 15.9%',
card: '240 10% 3.9%',
'card-foreground': '0 0% 98%',
- 'chart-1': '220 70% 50%',
- 'chart-2': '160 60% 45%',
- 'chart-3': '30 80% 55%',
- 'chart-4': '280 65% 60%',
- 'chart-5': '340 75% 55%',
destructive: '0 62.8% 30.6%',
'destructive-foreground': '0 0% 98%',
foreground: '0 0% 98%',
@@ -130,62 +225,108 @@ const _THEMES = [
type: 'sans-serif',
},
},
- name: 'Palette',
+ name: 'Default',
radius: 0.5,
},
- {
- id: 'default-sapphire',
+ dune: {
+ id: 'dune',
colors: {
- accent: '210 40% 96.1%',
- accentForeground: '222.2 47.4% 11.2%',
- background: '0 0% 100%',
- border: '214.3 31.8% 91.4%',
- card: '0 0% 100%',
- cardForeground: '222.2 84% 4.9%',
- 'chart-1': '221.2 83.2% 53.3%',
- 'chart-2': '212 95% 68%',
- 'chart-3': '216 92% 60%',
- 'chart-4': '210 98% 78%',
- 'chart-5': '212 97% 87%',
- destructive: '0 72% 51%',
- destructiveForeground: '210 40% 98%',
- foreground: '222.2 84% 4.9%',
- input: '214.3 31.8% 91.4%',
- muted: '210 40% 96.1%',
- mutedForeground: '215.4 16.3% 44%',
- popover: '0 0% 100%',
- popoverForeground: '222.2 84% 4.9%',
- primary: '221.2 83.2% 53.3%',
- primaryForeground: '210 40% 98%',
- ring: '221.2 83.2% 53.3%',
- secondary: '210 40% 96.1%',
- secondaryForeground: '222.2 47.4% 11.2%',
+ accent: '36 33% 75%',
+ accentForeground: '36 45% 25%',
+ background: '43 47% 92%',
+ border: '43 27% 84%',
+ card: '43 47% 92%',
+ cardForeground: '39 14% 22%',
+ destructive: '0 84% 33%',
+ destructiveForeground: '0 0% 100%',
+ foreground: '39 14% 22%',
+ input: '43 27% 84%',
+ muted: '43 27% 84%',
+ mutedForeground: '39 14% 46%',
+ popover: '43 47% 92%',
+ popoverForeground: '39 14% 22%',
+ primary: '39 14% 22%',
+ primaryForeground: '43 47% 92%',
+ ring: '39 14% 22%',
+ secondary: '43 27% 84%',
+ secondaryForeground: '39 14% 22%',
},
colorsDark: {
- accent: '240 3.7% 15.9%',
- 'accent-foreground': '0 0% 98%',
- background: '240 10% 3.9%',
- border: '240 3.7% 15.9%',
- card: '240 10% 3.9%',
- 'card-foreground': '0 0% 98%',
- 'chart-1': '221.2 83.2% 53.3%',
- 'chart-2': '212 95% 68%',
- 'chart-3': '216 92% 60%',
- 'chart-4': '210 98% 78%',
- 'chart-5': '212 97% 87%',
- destructive: '0 72% 51%',
- destructiveForeground: '210 40% 98%',
- foreground: '0 0% 98%',
- input: '240 3.7% 15.9%',
- muted: '240 3.7% 15.9%',
- 'muted-foreground': '240 5% 64.9%',
- popover: '240 10% 3.9%',
- 'popover-foreground': '0 0% 98%',
- primary: '221.2 83.2% 53.3%',
- primaryForeground: '210 40% 98%',
- ring: '221.2 83.2% 53.3%',
- secondary: '210 40% 96.1%',
- secondaryForeground: '222.2 47.4% 11.2%',
+ accent: '36 33% 25%',
+ accentForeground: '36 45% 75%',
+ background: '39 14% 12%',
+ border: '43 27% 16%',
+ card: '39 14% 14%',
+ cardForeground: '43 47% 88%',
+ destructive: '0 84% 60%',
+ destructiveForeground: '0 0% 100%',
+ foreground: '43 47% 88%',
+ input: '43 27% 16%',
+ muted: '43 27% 16%',
+ mutedForeground: '39 14% 64%',
+ popover: '39 14% 14%',
+ popoverForeground: '43 47% 88%',
+ primary: '43 47% 88%',
+ primaryForeground: '39 14% 12%',
+ ring: '43 47% 88%',
+ secondary: '43 27% 16%',
+ secondaryForeground: '43 47% 88%',
+ },
+ fontFamily: {
+ body: {
+ name: 'Space Mono',
+ type: 'monospace',
+ },
+ heading: {
+ name: 'DM Sans',
+ type: 'sans-serif',
+ },
+ },
+ name: 'Dune',
+ },
+ everforest: {
+ id: 'everforest',
+ colors: {
+ accent: '142 40% 46%', // #8da101
+ accentForeground: '44 96% 98%', // #fdf6e3
+ background: '44 96% 98%', // #fdf6e3
+ border: '44 24% 83%', // #e0dcc7
+ card: '44 96% 98%', // #fdf6e3
+ cardForeground: '151 17% 39%', // #5c6a72
+ destructive: '3 89% 65%', // #f85552
+ destructiveForeground: '44 96% 98%', // #fdf6e3
+ foreground: '151 17% 39%', // #5c6a72
+ input: '44 24% 83%', // #e0dcc7
+ muted: '44 24% 95%', // #f4f0d9
+ mutedForeground: '151 9% 63%', // #939f91
+ popover: '44 96% 98%', // #fdf6e3
+ popoverForeground: '151 17% 39%', // #5c6a72
+ primary: '142 40% 46%', // #8da101
+ primaryForeground: '44 96% 98%', // #fdf6e3
+ ring: '142 40% 46%', // #8da101
+ secondary: '44 24% 95%', // #f4f0d9
+ secondaryForeground: '151 17% 39%',
+ },
+ colorsDark: {
+ accent: '165 23% 61%',
+ 'accent-foreground': '220 17% 20%',
+ background: '220 17% 20%',
+ border: '210 9% 33%',
+ card: '220 17% 24%',
+ 'card-foreground': '39 14% 74%',
+ destructive: '0 43% 70%',
+ 'destructive-foreground': '39 14% 74%',
+ foreground: '39 14% 74%',
+ input: '210 9% 33%',
+ muted: '210 9% 33%',
+ 'muted-foreground': '95 8% 53%',
+ popover: '220 17% 24%',
+ 'popover-foreground': '39 14% 74%',
+ primary: '88 23% 63%',
+ 'primary-foreground': '220 17% 20%',
+ ring: '88 23% 63%',
+ secondary: '210 9% 31%',
+ 'secondary-foreground': '39 14% 74%',
},
fontFamily: {
body: {
@@ -197,62 +338,52 @@ const _THEMES = [
type: 'sans-serif',
},
},
- name: 'Sapphire',
+ name: 'Everforest',
radius: 0.5,
},
- {
- id: 'default-ruby',
+ github: {
+ id: 'github',
colors: {
- accent: '240 4.8% 95.9%',
- accentForeground: '240 5.9% 10%',
+ accent: '212 12% 45%',
+ accentForeground: '0 0% 100%',
background: '0 0% 100%',
- border: '240 5.9% 90%',
+ border: '210 18% 87%',
card: '0 0% 100%',
- cardForeground: '240 10% 3.9%',
- 'chart-1': '347 77% 50%',
- 'chart-2': '352 83% 91%',
- 'chart-3': '350 80% 72%',
- 'chart-4': '351 83% 82%',
- 'chart-5': '349 77% 62%',
+ cardForeground: '215 14% 34%',
destructive: '0 72% 51%',
- destructiveForeground: '0 0% 98%',
- foreground: '240 10% 3.9%',
- input: '240 5.9% 90%',
- muted: '240 4.8% 95.9%',
- mutedForeground: '240 3.8% 45%',
+ destructiveForeground: '0 0% 100%',
+ foreground: '215 14% 34%',
+ input: '210 18% 87%',
+ muted: '210 18% 96%',
+ mutedForeground: '215 14% 45%',
popover: '0 0% 100%',
- popoverForeground: '240 10% 3.9%',
- primary: '346.8 77.2% 49.8%',
- primaryForeground: '355.7 100% 99%',
- ring: '346.8 77.2% 49.8%',
- secondary: '240 4.8% 95.9%',
- secondaryForeground: '240 5.9% 10%',
+ popoverForeground: '215 14% 34%',
+ primary: '215 69% 43%',
+ primaryForeground: '0 0% 100%',
+ ring: '215 69% 43%',
+ secondary: '210 18% 96%',
+ secondaryForeground: '215 14% 34%',
},
colorsDark: {
- accent: '240 3.7% 15.9%',
- 'accent-foreground': '0 0% 98%',
- background: '240 10% 3.9%',
- border: '240 3.7% 15.9%',
- card: '240 10% 3.9%',
- 'card-foreground': '0 0% 98%',
- 'chart-1': '347 77% 50%',
- 'chart-2': '349 77% 62%',
- 'chart-3': '350 80% 72%',
- 'chart-4': '351 83% 82%',
- 'chart-5': '352 83% 91%',
+ accent: '213 14% 33%',
+ accentForeground: '210 14% 93%',
+ background: '215 28% 17%',
+ border: '215 14% 25%',
+ card: '215 28% 17%',
+ cardForeground: '210 14% 93%',
destructive: '0 72% 51%',
- destructiveForeground: '0 0% 98%',
- foreground: '0 0% 98%',
- input: '240 3.7% 15.9%',
- muted: '240 3.7% 15.9%',
- 'muted-foreground': '240 5% 64.9%',
- popover: '240 10% 3.9%',
- 'popover-foreground': '0 0% 98%',
- primary: '346.8 77.2% 49.8%',
- primaryForeground: '355.7 100% 99%',
- ring: '221.2 83.2% 53.3%',
- secondary: '240 4.8% 95.9%',
- secondaryForeground: '240 5.9% 10%',
+ destructiveForeground: '210 14% 93%',
+ foreground: '210 14% 93%',
+ input: '215 14% 25%',
+ muted: '215 14% 25%',
+ mutedForeground: '217 10% 64%',
+ popover: '215 28% 17%',
+ popoverForeground: '210 14% 93%',
+ primary: '212 92% 45%',
+ primaryForeground: '210 14% 93%',
+ ring: '212 92% 45%',
+ secondary: '215 14% 25%',
+ secondaryForeground: '210 14% 93%',
},
fontFamily: {
body: {
@@ -264,62 +395,52 @@ const _THEMES = [
type: 'sans-serif',
},
},
- name: 'Ruby',
- radius: 0.5,
+ name: 'GitHub',
+ radius: 0.375,
},
- {
- id: 'default-emerald',
+ horizon: {
+ id: 'horizon',
colors: {
- accent: '240 4.8% 95.9%',
- accentForeground: '240 5.9% 10%',
- background: '0 0% 100%',
- border: '240 5.9% 90%',
- card: '0 0% 100%',
- cardForeground: '240 10% 3.9%',
- 'chart-1': '139 65% 20%',
- 'chart-2': '140 74% 44%',
- 'chart-3': '142 88% 28%',
- 'chart-4': '137 55% 15%',
- 'chart-5': '141 40% 9%',
- destructive: '0 72% 51%',
- destructiveForeground: '0 0% 98%',
- foreground: '240 10% 3.9%',
- input: '240 5.9% 90%',
- muted: '240 4.8% 95.9%',
- mutedForeground: '240 3.8% 45%',
- popover: '0 0% 100%',
- popoverForeground: '240 10% 3.9%',
- primary: '142 86% 28%',
- primaryForeground: '356 29% 98%',
- ring: '142 86% 28%',
- secondary: '240 4.8% 95.9%',
- secondaryForeground: '240 5.9% 10%',
+ accent: '344 96% 92%', // #fceae5
+ accentForeground: '345 6% 30%', // #52484e
+ background: '345 6% 95%', // #fdf0ed
+ border: '345 6% 85%', // #e4d8d4
+ card: '345 6% 93%', // #f9e8e4
+ cardForeground: '345 6% 30%', // #52484e
+ destructive: '0 72% 51%', // #e33400
+ destructiveForeground: '345 6% 95%', // #fdf0ed
+ foreground: '345 6% 30%', // #52484e
+ input: '345 6% 85%', // #e4d8d4
+ muted: '345 6% 90%', // #eee0dc
+ mutedForeground: '345 6% 50%', // #8b7b82
+ popover: '345 6% 93%', // #f9e8e4
+ popoverForeground: '345 6% 30%', // #52484e
+ primary: '345 80% 70%', // #f075b5
+ primaryForeground: '345 6% 95%', // #fdf0ed
+ ring: '345 80% 70%', // #f075b5
+ secondary: '345 6% 90%', // #eee0dc
+ secondaryForeground: '345 6% 30%', // #52484e
},
colorsDark: {
- accent: '240 3.7% 15.9%',
- 'accent-foreground': '0 0% 98%',
- background: '240 10% 3.9%',
- border: '240 3.7% 15.9%',
- card: '240 10% 3.9%',
- 'card-foreground': '0 0% 98%',
- 'chart-1': '142 88% 28%',
- 'chart-2': '139 65% 20%',
- 'chart-3': '140 74% 24%',
- 'chart-4': '137 55% 15%',
- 'chart-5': '141 40% 9%',
- destructive: '0 72% 51%',
- destructiveForeground: '0 0% 98%',
- foreground: '0 0% 98%',
- input: '240 3.7% 15.9%',
- muted: '240 3.7% 15.9%',
- 'muted-foreground': '240 5% 64.9%',
- popover: '240 10% 3.9%',
- 'popover-foreground': '0 0% 98%',
- primary: '142 86% 28%',
- primaryForeground: '356 29% 98%',
- ring: '142 86% 28%',
- secondary: '240 4.8% 95.9%',
- secondaryForeground: '240 5.9% 10%',
+ accent: '344 96% 92%', // #fceae5
+ accentForeground: '345 6% 30%', // #52484e
+ background: '345 6% 15%', // #1c1e26
+ border: '345 6% 25%', // #3d3741
+ card: '345 6% 17%', // #232530
+ cardForeground: '345 6% 80%', // #d5d0d2
+ destructive: '0 72% 51%', // #e33400
+ destructiveForeground: '345 6% 95%', // #fdf0ed
+ foreground: '345 6% 80%', // #d5d0d2
+ input: '345 6% 25%', // #3d3741
+ muted: '345 6% 20%', // #2e3037
+ mutedForeground: '345 6% 60%', // #a39fa1
+ popover: '345 6% 17%', // #232530
+ popoverForeground: '345 6% 80%', // #d5d0d2
+ primary: '345 80% 70%', // #f075b5
+ primaryForeground: '345 6% 15%', // #1c1e26
+ ring: '345 80% 70%', // #f075b5
+ secondary: '345 6% 20%', // #2e3037
+ secondaryForeground: '345 6% 80%', // #d5d0d2
},
fontFamily: {
body: {
@@ -331,143 +452,137 @@ const _THEMES = [
type: 'sans-serif',
},
},
- name: 'Emerald',
+ name: 'Horizon',
radius: 0.5,
},
- {
- id: 'default-daylight',
+ linear: {
+ id: 'linear',
colors: {
- accent: '36 64% 57%',
- accentForeground: '36 72% 17%',
- background: '36 39% 88%',
- border: '36 45% 60%',
- card: '36 46% 82%',
- cardForeground: '36 45% 20%',
- 'chart-1': '25 34% 28%',
- 'chart-2': '26 36% 34%',
- 'chart-3': '28 40% 40%',
- 'chart-4': '31 41% 48%',
- 'chart-5': '35 43% 53%',
- destructive: '0 84% 37%',
- destructiveForeground: '0 0% 98%',
- foreground: '36 45% 15%',
- input: '36 45% 60%',
- muted: '36 33% 75%',
- mutedForeground: '36 45% 25%',
- popover: '0 0% 100%',
- popoverForeground: '240 10% 3.9%',
- primary: '36 45% 70%',
- primaryForeground: '36 45% 11%',
- ring: '36 45% 30%',
- secondary: '40 35% 77%',
- secondaryForeground: '36 45% 25%',
+ accent: '231 62% 63%', // #6e79d6
+ 'accent-foreground': '0 0% 98%', // #FBFBFB
+ background: '0 0% 98%', // #FBFBFB
+ border: '220 9% 93%', // #edeef1
+ card: '220 13% 95%', // #f2f3f5
+ 'card-foreground': '216 14% 43%', // #5d6a7e
+ destructive: '0 80% 60%', // #ef4343
+ 'destructive-foreground': '0 0% 98%', // #FBFBFB
+ foreground: '216 14% 43%', // #5d6a7e
+ input: '220 13% 91%', // #e8eaee
+ muted: '220 13% 91%', // #e8eaee
+ 'muted-foreground': '215 13% 65%', // #8b96a9
+ popover: '220 13% 95%', // #f2f3f5
+ 'popover-foreground': '216 14% 43%', // #5d6a7e
+ primary: '231 62% 63%', // #6e79d6
+ 'primary-foreground': '0 0% 98%', // #FBFBFB
+ ring: '231 62% 63%', // #6e79d6
+ secondary: '220 13% 91%', // #e8eaee
+ 'secondary-foreground': '216 14% 43%', // #5d6a7e
},
+ // Linear Dark
colorsDark: {
- accent: '36 64% 57%',
- accentForeground: '36 72% 17%',
- background: '36 39% 88%',
- border: '36 45% 60%',
- card: '36 46% 82%',
- cardForeground: '36 45% 20%',
- 'chart-1': '25 34% 28%',
- 'chart-2': '26 36% 34%',
- 'chart-3': '28 40% 40%',
- 'chart-4': '31 41% 48%',
- 'chart-5': '35 43% 53%',
- destructive: '0 84% 37%',
- destructiveForeground: '0 0% 98%',
- foreground: '36 45% 15%',
- input: '36 45% 60%',
- muted: '36 33% 75%',
- mutedForeground: '36 45% 25%',
- popover: '0 0% 100%',
- popoverForeground: '240 10% 3.9%',
- primary: '36 45% 70%',
- primaryForeground: '36 45% 11%',
- ring: '36 45% 30%',
- secondary: '40 35% 77%',
- secondaryForeground: '36 45% 25%',
+ accent: '231 62% 60%', // #5e6ad2
+ 'accent-foreground': '220 5% 77%', // #c1c3c8
+ background: '220 7% 13%', // #1f2023
+ border: '225 6% 19%', // #2e2f33
+ card: '225 5% 17%', // #292a2e
+ 'card-foreground': '220 5% 77%', // #c1c3c8
+ destructive: '0 72% 63%', // #eb5757
+ 'destructive-foreground': '220 5% 77%', // #c1c3c8
+ foreground: '220 5% 77%', // #c1c3c8
+ input: '225 7% 21%', // #323439
+ muted: '225 7% 21%', // #323439
+ 'muted-foreground': '220 5% 57%', // #8b8e98
+ popover: '225 5% 17%', // #292a2e
+ 'popover-foreground': '220 5% 77%', // #c1c3c8
+ primary: '231 62% 60%', // #5e6ad2
+ 'primary-foreground': '220 5% 77%', // #c1c3c8
+ ring: '231 62% 60%', // #5e6ad2
+ secondary: '225 7% 21%', // #323439
+ 'secondary-foreground': '220 5% 77%', // #c1c3c8
},
fontFamily: {
body: {
- name: 'Space Mono',
- type: 'monospace',
+ name: 'Manrope',
+ type: 'sans-serif',
},
heading: {
- name: 'DM Sans',
+ name: 'Manrope',
type: 'sans-serif',
},
},
- name: 'Daylight',
+ name: 'Linear',
+ radius: 0.5,
},
- {
- id: 'default-midnight',
+ 'one-dark-pro': {
+ id: 'one-dark-pro',
colors: {
- accent: '240 0% 13%',
- accentForeground: '60 0% 100%',
- background: '240 5% 6%',
- border: '240 6% 20%',
- card: '240 4% 10%',
- cardForeground: '60 5% 90%',
- 'chart-1': '359 2% 90%',
- 'chart-2': '240 1% 74%',
- 'chart-3': '240 1% 58%',
- 'chart-4': '240 1% 42%',
- 'chart-5': '240 2% 26%',
- destructive: '0 60% 50%',
- destructiveForeground: '0 0% 98%',
- foreground: '60 5% 90%',
- input: '240 6% 20%',
- muted: '240 5% 25%',
- mutedForeground: '60 5% 85%',
- popover: '240 5% 15%',
- popoverForeground: '60 5% 85%',
- primary: '240 0% 90%',
- primaryForeground: '60 0% 0%',
- ring: '240 5% 90%',
- secondary: '240 4% 15%',
- secondaryForeground: '60 5% 85%',
+ accent: '220 13% 33%',
+ 'accent-foreground': '220 13% 93%',
+ background: '220 13% 18%',
+ border: '220 3% 23%',
+ card: '220 13% 16%',
+ 'card-foreground': '219 14% 76%',
+ destructive: '6 97% 49%',
+ 'destructive-foreground': '0 0% 100%',
+ foreground: '219 14% 71%',
+ input: '220 3% 26%',
+ muted: '220 12% 22%',
+ 'muted-foreground': '220 12% 72%',
+ popover: '220 13% 15%',
+ 'popover-foreground': '219 14% 81%',
+ primary: '220 13% 86%',
+ 'primary-foreground': '220 13% 26%',
+ ring: '220 13% 86%',
+ secondary: '220 3% 25%',
+ 'secondary-foreground': '220 3% 85%',
},
colorsDark: {
- accent: '240 0% 13%',
- accentForeground: '60 0% 100%',
- background: '240 5% 6%',
- border: '240 6% 20%',
- card: '240 4% 10%',
- cardForeground: '60 5% 90%',
- 'chart-1': '359 2% 90%',
- 'chart-2': '240 1% 74%',
- 'chart-3': '240 1% 58%',
- 'chart-4': '240 1% 42%',
- 'chart-5': '240 2% 26%',
- destructive: '0 60% 50%',
- destructiveForeground: '0 0% 98%',
- foreground: '60 5% 90%',
- input: '240 6% 20%',
- muted: '240 5% 25%',
- mutedForeground: '60 5% 85%',
- popover: '240 5% 15%',
- popoverForeground: '60 5% 85%',
- primary: '240 0% 90%',
- primaryForeground: '60 0% 0%',
- ring: '240 5% 90%',
- secondary: '240 4% 15%',
- secondaryForeground: '60 5% 85%',
+ accent: '220 13% 33%',
+ 'accent-foreground': '220 13% 93%',
+ background: '220 13% 18%',
+ border: '220 3% 23%',
+ card: '220 13% 16%',
+ 'card-foreground': '219 14% 76%',
+ destructive: '6 97% 49%',
+ 'destructive-foreground': '0 0% 100%',
+ foreground: '219 14% 71%',
+ input: '220 3% 26%',
+ muted: '220 12% 22%',
+ 'muted-foreground': '220 12% 72%',
+ popover: '220 13% 15%',
+ 'popover-foreground': '219 14% 81%',
+ primary: '220 13% 86%',
+ 'primary-foreground': '220 13% 26%',
+ ring: '220 13% 86%',
+ secondary: '220 3% 25%',
+ 'secondary-foreground': '220 3% 85%',
},
fontFamily: {
body: {
- name: 'Manrope',
+ name: 'Inter',
type: 'sans-serif',
},
heading: {
- name: 'Manrope',
+ name: 'Inter',
type: 'sans-serif',
},
},
- name: 'Midnight',
+ name: 'One Dark Pro',
radius: 0.5,
},
-] as const;
+} as const;
+
+Object.entries(_THEMES).forEach(([key, theme]) => {
+ (_THEMES as any)[key] = {
+ ...theme,
+ cssVars: {
+ dark: themeColorsToCssVariables(theme.colorsDark),
+ light: themeColorsToCssVariables(theme.colors),
+ },
+ };
+});
+
+export const THEMES: Record = _THEMES as any;
export function themeColorsToCssVariables(
colors: Record
@@ -497,12 +612,38 @@ export function themeColorNameToCssVariable(name: string) {
return `--${name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()}`;
}
-export const THEMES = _THEMES.map((theme) => ({
- ...theme,
- cssVars: {
- dark: themeColorsToCssVariables(theme.colorsDark),
- light: themeColorsToCssVariables(theme.colors),
- },
-}));
+export const THEME_LIST = [
+ THEMES['default-shadcn'],
+ THEMES.github,
+ THEMES.catppuccin,
+ // THEMES.linear,
+ THEMES.ayu,
+ THEMES.horizon,
+ THEMES.everforest,
+ THEMES.dune,
+ THEMES['one-dark-pro'],
+];
-export type Theme = (typeof THEMES)[number];
+export type ThemeId = keyof typeof _THEMES;
+
+export type Theme = {
+ id: ThemeId;
+ cssVars: {
+ dark: Record;
+ light: Record;
+ };
+ fontFamily: {
+ body: {
+ name: string;
+ type: string;
+ };
+ heading: {
+ name: string;
+ type: string;
+ };
+ };
+ colors: Record;
+ colorsDark: Record;
+ name: string;
+ radius?: number;
+};
diff --git a/apps/www/src/registry/default/example/mode-toggle.tsx b/apps/www/src/registry/default/example/mode-toggle.tsx
index deeedb5a5c..894f734da9 100644
--- a/apps/www/src/registry/default/example/mode-toggle.tsx
+++ b/apps/www/src/registry/default/example/mode-toggle.tsx
@@ -6,39 +6,23 @@ import { useTheme } from 'next-themes';
import { Icons } from '@/components/icons';
import { Button } from '@/registry/default/plate-ui/button';
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from '@/registry/default/plate-ui/dropdown-menu';
export default function ModeToggle() {
- const { setTheme } = useTheme();
+ const { setTheme, theme } = useTheme();
return (
-
-
-
-
-
- Toggle theme
-
-
-
- setTheme('light')}>
-
- Light
-
- setTheme('dark')}>
-
- Dark
-
- setTheme('system')}>
-
- System
-
-
-
+ setTheme(theme === 'dark' ? 'light' : 'dark')}
+ >
+ {theme === 'dark' ? (
+
+ ) : (
+
+ )}
+ Toggle theme
+
);
}
diff --git a/apps/www/src/registry/default/example/playground-demo.tsx b/apps/www/src/registry/default/example/playground-demo.tsx
index 1438d9aea1..90e9a82f0e 100644
--- a/apps/www/src/registry/default/example/playground-demo.tsx
+++ b/apps/www/src/registry/default/example/playground-demo.tsx
@@ -320,9 +320,11 @@ export const usePlaygroundEditor = (id: any = '', scrollSelector?: string) => {
export default function PlaygroundDemo({
id,
+ className,
scrollSelector,
}: {
id?: ValueId;
+ className?: string;
scrollSelector?: string;
}) {
const containerRef = useRef(null);
@@ -333,80 +335,79 @@ export default function PlaygroundDemo({
return (
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
);
diff --git a/apps/www/src/hooks/use-debounce.ts b/apps/www/src/registry/default/hooks/use-debounce.ts
similarity index 100%
rename from apps/www/src/hooks/use-debounce.ts
rename to apps/www/src/registry/default/hooks/use-debounce.ts
diff --git a/apps/www/src/types/plate-types.ts b/apps/www/src/registry/default/lib/plate-types.ts
similarity index 100%
rename from apps/www/src/types/plate-types.ts
rename to apps/www/src/registry/default/lib/plate-types.ts
diff --git a/apps/www/src/lib/utils.ts b/apps/www/src/registry/default/lib/utils.ts
similarity index 100%
rename from apps/www/src/lib/utils.ts
rename to apps/www/src/registry/default/lib/utils.ts
diff --git a/apps/www/src/registry/default/plate-ui/color-dropdown-menu-items.tsx b/apps/www/src/registry/default/plate-ui/color-dropdown-menu-items.tsx
index 61828bf4ca..9f044136d1 100644
--- a/apps/www/src/registry/default/plate-ui/color-dropdown-menu-items.tsx
+++ b/apps/www/src/registry/default/plate-ui/color-dropdown-menu-items.tsx
@@ -12,7 +12,12 @@ import type { TColor } from './color-dropdown-menu';
import { buttonVariants } from './button';
import { DropdownMenuItem } from './dropdown-menu';
-import { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipProvider,
+ TooltipTrigger,
+} from './tooltip';
type ColorDropdownMenuItemProps = {
isBrightColor: boolean;
@@ -81,16 +86,18 @@ export function ColorDropdownMenuItems({
className={cn('grid grid-cols-[repeat(10,1fr)] gap-1', className)}
{...props}
>
- {colors.map(({ isBrightColor, name, value }) => (
-
- ))}
+
+ {colors.map(({ isBrightColor, name, value }) => (
+
+ ))}
+
);
}
diff --git a/apps/www/src/registry/default/plate-ui/comments-popover.tsx b/apps/www/src/registry/default/plate-ui/comments-popover.tsx
index 12324873e3..298e19a9d6 100644
--- a/apps/www/src/registry/default/plate-ui/comments-popover.tsx
+++ b/apps/www/src/registry/default/plate-ui/comments-popover.tsx
@@ -55,7 +55,7 @@ export function CommentsPopover() {
return (
-
+
diff --git a/apps/www/src/registry/default/plate-ui/draggable.tsx b/apps/www/src/registry/default/plate-ui/draggable.tsx
index ff6164b35e..e5bd1f2296 100644
--- a/apps/www/src/registry/default/plate-ui/draggable.tsx
+++ b/apps/www/src/registry/default/plate-ui/draggable.tsx
@@ -23,6 +23,7 @@ import {
Tooltip,
TooltipContent,
TooltipPortal,
+ TooltipProvider,
TooltipTrigger,
} from './tooltip';
@@ -78,30 +79,32 @@ const DragHandle = () => {
const editor = useEditorRef();
return (
-
-
- {
- event.stopPropagation();
- event.preventDefault();
-
- // if (element.id) {
- // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);
- // api.blockContextMenu.show(editor.id, event as any);
- // }
- }}
- onMouseDown={() => {
- editor
- .getApi(BlockSelectionPlugin)
- .blockSelection.resetSelectedIds();
- }}
- />
-
-
- Drag to move
-
-
+
+
+
+ {
+ event.stopPropagation();
+ event.preventDefault();
+
+ // if (element.id) {
+ // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);
+ // api.blockContextMenu.show(editor.id, event as any);
+ // }
+ }}
+ onMouseDown={() => {
+ editor
+ .getApi(BlockSelectionPlugin)
+ .blockSelection.resetSelectedIds();
+ }}
+ />
+
+
+ Drag to move
+
+
+
);
};
diff --git a/apps/www/src/registry/default/plate-ui/editor.tsx b/apps/www/src/registry/default/plate-ui/editor.tsx
index 5646fd120b..832b4ec464 100644
--- a/apps/www/src/registry/default/plate-ui/editor.tsx
+++ b/apps/www/src/registry/default/plate-ui/editor.tsx
@@ -9,7 +9,7 @@ import { cva } from 'class-variance-authority';
const editorVariants = cva(
cn(
- 'relative overflow-x-auto whitespace-pre-wrap break-words',
+ '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',
'[&_[data-slate-placeholder]]:top-[auto_!important]',
diff --git a/apps/www/src/registry/default/plate-ui/emoji-input-element.tsx b/apps/www/src/registry/default/plate-ui/emoji-input-element.tsx
index c00bc8b276..e170a8f48a 100644
--- a/apps/www/src/registry/default/plate-ui/emoji-input-element.tsx
+++ b/apps/www/src/registry/default/plate-ui/emoji-input-element.tsx
@@ -4,6 +4,8 @@ import { withRef } from '@udecode/cn';
import { PlateElement } from '@udecode/plate-common/react';
import { EmojiInlineIndexSearch, insertEmoji } from '@udecode/plate-emoji';
+import { useDebounce } from '@/registry/default/hooks/use-debounce';
+
import {
InlineCombobox,
InlineComboboxContent,
@@ -66,20 +68,3 @@ export const EmojiInputElement = withRef
(
);
}
);
-
-const useDebounce = (value: any, delay = 500) => {
- const [debouncedValue, setDebouncedValue] = React.useState(value);
-
- React.useEffect(() => {
- const handler: NodeJS.Timeout = setTimeout(() => {
- setDebouncedValue(value);
- }, delay);
-
- // Cancel the timeout if value changes (also on delay change or unmount)
- return () => {
- clearTimeout(handler);
- };
- }, [value, delay]);
-
- return debouncedValue;
-};
diff --git a/apps/www/src/registry/default/plate-ui/floating-toolbar.tsx b/apps/www/src/registry/default/plate-ui/floating-toolbar.tsx
index 6e2ad7201d..a9fda8e243 100644
--- a/apps/www/src/registry/default/plate-ui/floating-toolbar.tsx
+++ b/apps/www/src/registry/default/plate-ui/floating-toolbar.tsx
@@ -65,7 +65,7 @@ export const FloatingToolbar = withRef<
;
tooltip?: React.ReactNode;
- } & React.ComponentPropsWithoutRef
+ } & React.ComponentPropsWithoutRef &
+ TooltipPrimitive.TooltipProviderProps
>(function ExtendComponent(
- { tooltip, tooltipContentProps, tooltipProps, ...props },
+ {
+ delayDuration = 0,
+ disableHoverableContent = true,
+ skipDelayDuration = 0,
+ tooltip,
+ tooltipContentProps,
+ tooltipProps,
+ ...props
+ },
ref
) {
const [mounted, setMounted] = React.useState(false);
@@ -50,13 +63,21 @@ export function withTooltip<
if (tooltip && mounted) {
return (
-
- {component}
+
+
+ {component}
-
- {tooltip}
-
-
+
+
+ {tooltip}
+
+
+
+
);
}
diff --git a/apps/www/src/registry/registry-examples.ts b/apps/www/src/registry/registry-examples.ts
index 88ce47ad1e..cab7b60df8 100644
--- a/apps/www/src/registry/registry-examples.ts
+++ b/apps/www/src/registry/registry-examples.ts
@@ -152,13 +152,7 @@ export const examples: Registry = [
},
{
external: true,
- files: ['styles/globals.css'],
- name: 'globals',
- type: 'registry:style',
- },
- {
- external: true,
- files: ['types/plate-types.ts'],
+ files: ['lib/plate-types.ts'],
name: 'plate-types',
type: 'registry:lib',
},
diff --git a/apps/www/src/registry/registry-hooks.ts b/apps/www/src/registry/registry-hooks.ts
index ba77fe8311..e3ddb1c49e 100644
--- a/apps/www/src/registry/registry-hooks.ts
+++ b/apps/www/src/registry/registry-hooks.ts
@@ -4,21 +4,11 @@ export const hooks: Registry = [
{
files: [
{
- path: 'hooks/use-mobile.tsx',
+ path: 'hooks/use-debounce.ts',
type: 'registry:hook',
},
],
- name: 'use-mobile',
- type: 'registry:hook',
- },
- {
- files: [
- {
- path: 'hooks/use-toast.ts',
- type: 'registry:hook',
- },
- ],
- name: 'use-toast',
+ name: 'use-debounce',
type: 'registry:hook',
},
];
From 4dc8b8962685ae94451f00001dc566e0d6f1a1dd Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Sun, 22 Sep 2024 20:49:27 +0200
Subject: [PATCH 5/8] fix
---
apps/www/public/r/styles/default/color-dropdown-menu.json | 2 +-
apps/www/public/r/styles/default/draggable.json | 2 +-
apps/www/public/r/styles/default/emoji-input-element.json | 2 +-
apps/www/public/r/styles/default/floating-toolbar.json | 2 +-
apps/www/public/r/styles/default/tooltip.json | 2 +-
apps/www/src/registry/default/plate-ui/tooltip.tsx | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/www/public/r/styles/default/color-dropdown-menu.json b/apps/www/public/r/styles/default/color-dropdown-menu.json
index efc5a7ad01..c86e1eff83 100644
--- a/apps/www/public/r/styles/default/color-dropdown-menu.json
+++ b/apps/www/public/r/styles/default/color-dropdown-menu.json
@@ -14,7 +14,7 @@
"type": "registry:ui"
},
{
- "content": "'use client';\n\nimport React from 'react';\n\nimport type { DropdownMenuItemProps } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@udecode/cn';\n\nimport { Icons } from '@/components/icons';\n\nimport type { TColor } from './color-dropdown-menu';\n\nimport { buttonVariants } from './button';\nimport { DropdownMenuItem } from './dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './tooltip';\n\ntype ColorDropdownMenuItemProps = {\n isBrightColor: boolean;\n isSelected: boolean;\n updateColor: (color: string) => void;\n value: string;\n name?: string;\n} & DropdownMenuItemProps;\n\nexport function ColorDropdownMenuItem({\n className,\n isBrightColor,\n isSelected,\n name,\n updateColor,\n value,\n ...props\n}: ColorDropdownMenuItemProps) {\n const content = (\n {\n e.preventDefault();\n updateColor(value);\n }}\n {...props}\n >\n {isSelected ? : null}\n \n );\n\n return name ? (\n \n {content} \n {name} \n \n ) : (\n content\n );\n}\n\ntype ColorDropdownMenuItemsProps = {\n colors: TColor[];\n updateColor: (color: string) => void;\n color?: string;\n} & React.HTMLAttributes;\n\nexport function ColorDropdownMenuItems({\n className,\n color,\n colors,\n updateColor,\n ...props\n}: ColorDropdownMenuItemsProps) {\n return (\n \n {colors.map(({ isBrightColor, name, value }) => (\n \n ))}\n
\n );\n}\n",
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { DropdownMenuItemProps } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '@udecode/cn';\n\nimport { Icons } from '@/components/icons';\n\nimport type { TColor } from './color-dropdown-menu';\n\nimport { buttonVariants } from './button';\nimport { DropdownMenuItem } from './dropdown-menu';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from './tooltip';\n\ntype ColorDropdownMenuItemProps = {\n isBrightColor: boolean;\n isSelected: boolean;\n updateColor: (color: string) => void;\n value: string;\n name?: string;\n} & DropdownMenuItemProps;\n\nexport function ColorDropdownMenuItem({\n className,\n isBrightColor,\n isSelected,\n name,\n updateColor,\n value,\n ...props\n}: ColorDropdownMenuItemProps) {\n const content = (\n {\n e.preventDefault();\n updateColor(value);\n }}\n {...props}\n >\n {isSelected ? : null}\n \n );\n\n return name ? (\n \n {content} \n {name} \n \n ) : (\n content\n );\n}\n\ntype ColorDropdownMenuItemsProps = {\n colors: TColor[];\n updateColor: (color: string) => void;\n color?: string;\n} & React.HTMLAttributes;\n\nexport function ColorDropdownMenuItems({\n className,\n color,\n colors,\n updateColor,\n ...props\n}: ColorDropdownMenuItemsProps) {\n return (\n \n \n {colors.map(({ isBrightColor, name, value }) => (\n \n ))}\n \n
\n );\n}\n",
"path": "plate-ui/color-dropdown-menu-items.tsx",
"target": "",
"type": "registry:ui"
diff --git a/apps/www/public/r/styles/default/draggable.json b/apps/www/public/r/styles/default/draggable.json
index 2cad99ce70..823fd6f73e 100644
--- a/apps/www/public/r/styles/default/draggable.json
+++ b/apps/www/public/r/styles/default/draggable.json
@@ -6,7 +6,7 @@
],
"files": [
{
- "content": "'use client';\n\nimport React from 'react';\n\nimport type { ClassNames, TEditor } from '@udecode/plate-common';\nimport type { DropTargetMonitor } from 'react-dnd';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n type PlateElementProps,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport {\n type DragItemNode,\n useDraggable,\n useDraggableState,\n} from '@udecode/plate-dnd';\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipPortal,\n TooltipTrigger,\n} from './tooltip';\n\nexport interface DraggableProps\n extends PlateElementProps,\n ClassNames<{\n /** Block. */\n block: string;\n\n /** Block and gutter. */\n blockAndGutter: string;\n\n /** Block toolbar in the gutter. */\n blockToolbar: string;\n\n /**\n * Block toolbar wrapper in the gutter left. It has the height of a line\n * of the block.\n */\n blockToolbarWrapper: string;\n\n blockWrapper: string;\n\n /** Button to dnd the block, in the block toolbar. */\n dragHandle: string;\n\n /** Icon of the drag button, in the drag icon. */\n dragIcon: string;\n\n /** Show a dropline above or below the block when dragging a block. */\n dropLine: string;\n\n /** Gutter at the left side of the editor. It has the height of the block */\n gutterLeft: string;\n }> {\n /**\n * Intercepts the drop handling. If `false` is returned, the default drop\n * behavior is called after. If `true` is returned, the default behavior is\n * not called.\n */\n onDropHandler?: (\n editor: TEditor,\n props: {\n id: string;\n dragItem: DragItemNode;\n monitor: DropTargetMonitor;\n nodeRef: any;\n }\n ) => boolean;\n}\n\nconst DragHandle = () => {\n const editor = useEditorRef();\n\n return (\n \n \n {\n event.stopPropagation();\n event.preventDefault();\n\n // if (element.id) {\n // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);\n // api.blockContextMenu.show(editor.id, event as any);\n // }\n }}\n onMouseDown={() => {\n editor\n .getApi(BlockSelectionPlugin)\n .blockSelection.resetSelectedIds();\n }}\n />\n \n \n Drag to move \n \n \n );\n};\n\nexport const Draggable = withRef<'div', DraggableProps>(\n ({ className, classNames = {}, onDropHandler, ...props }, ref) => {\n const { children, element } = props;\n\n const state = useDraggableState({ element, onDropHandler });\n const { dropLine, isDragging, isHovered } = state;\n const {\n droplineProps,\n groupProps,\n gutterLeftProps,\n previewRef,\n handleRef,\n } = useDraggable(state);\n\n return (\n \n
\n
\n
\n
\n {isHovered && }\n
\n
\n
\n
\n\n
\n {children}\n\n {!!dropLine && (\n
\n )}\n
\n
\n );\n }\n);\n",
+ "content": "'use client';\n\nimport React from 'react';\n\nimport type { ClassNames, TEditor } from '@udecode/plate-common';\nimport type { DropTargetMonitor } from 'react-dnd';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n type PlateElementProps,\n useEditorRef,\n} from '@udecode/plate-common/react';\nimport {\n type DragItemNode,\n useDraggable,\n useDraggableState,\n} from '@udecode/plate-dnd';\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nimport { Icons } from '@/components/icons';\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n} from './tooltip';\n\nexport interface DraggableProps\n extends PlateElementProps,\n ClassNames<{\n /** Block. */\n block: string;\n\n /** Block and gutter. */\n blockAndGutter: string;\n\n /** Block toolbar in the gutter. */\n blockToolbar: string;\n\n /**\n * Block toolbar wrapper in the gutter left. It has the height of a line\n * of the block.\n */\n blockToolbarWrapper: string;\n\n blockWrapper: string;\n\n /** Button to dnd the block, in the block toolbar. */\n dragHandle: string;\n\n /** Icon of the drag button, in the drag icon. */\n dragIcon: string;\n\n /** Show a dropline above or below the block when dragging a block. */\n dropLine: string;\n\n /** Gutter at the left side of the editor. It has the height of the block */\n gutterLeft: string;\n }> {\n /**\n * Intercepts the drop handling. If `false` is returned, the default drop\n * behavior is called after. If `true` is returned, the default behavior is\n * not called.\n */\n onDropHandler?: (\n editor: TEditor,\n props: {\n id: string;\n dragItem: DragItemNode;\n monitor: DropTargetMonitor;\n nodeRef: any;\n }\n ) => boolean;\n}\n\nconst DragHandle = () => {\n const editor = useEditorRef();\n\n return (\n \n \n \n {\n event.stopPropagation();\n event.preventDefault();\n\n // if (element.id) {\n // editor.getApi(BlockSelectionPlugin).blockSelection.addSelectedRow(element.id as string);\n // api.blockContextMenu.show(editor.id, event as any);\n // }\n }}\n onMouseDown={() => {\n editor\n .getApi(BlockSelectionPlugin)\n .blockSelection.resetSelectedIds();\n }}\n />\n \n \n Drag to move \n \n \n \n );\n};\n\nexport const Draggable = withRef<'div', DraggableProps>(\n ({ className, classNames = {}, onDropHandler, ...props }, ref) => {\n const { children, element } = props;\n\n const state = useDraggableState({ element, onDropHandler });\n const { dropLine, isDragging, isHovered } = state;\n const {\n droplineProps,\n groupProps,\n gutterLeftProps,\n previewRef,\n handleRef,\n } = useDraggable(state);\n\n return (\n \n
\n
\n
\n
\n {isHovered && }\n
\n
\n
\n
\n\n
\n {children}\n\n {!!dropLine && (\n
\n )}\n
\n
\n );\n }\n);\n",
"path": "plate-ui/draggable.tsx",
"target": "",
"type": "registry:ui"
diff --git a/apps/www/public/r/styles/default/emoji-input-element.json b/apps/www/public/r/styles/default/emoji-input-element.json
index ceef1bb623..4cd8ed33ec 100644
--- a/apps/www/public/r/styles/default/emoji-input-element.json
+++ b/apps/www/public/r/styles/default/emoji-input-element.json
@@ -4,7 +4,7 @@
],
"files": [
{
- "content": "import React, { useMemo, useState } from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { EmojiInlineIndexSearch, insertEmoji } from '@udecode/plate-emoji';\n\nimport { useDebounce } from '@/hooks/use-debounce';\n\nimport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n} from './inline-combobox';\n\nexport const EmojiInputElement = withRef(\n ({ className, ...props }, ref) => {\n const { children, editor, element } = props;\n const [value, setValue] = useState('');\n const debouncedValue = useDebounce(value, 100);\n const isPending = value !== debouncedValue;\n\n const filteredEmojis = useMemo(() => {\n if (debouncedValue.trim().length === 0) return [];\n\n return EmojiInlineIndexSearch.getInstance()\n .search(debouncedValue.replace(/:$/, ''))\n .get();\n }, [debouncedValue]);\n\n return (\n \n \n \n\n \n {!isPending && (\n No matching emoji found \n )}\n\n {filteredEmojis.map((emoji) => (\n insertEmoji(editor, emoji)}\n >\n {emoji.skins[0].native} {emoji.name}\n \n ))}\n \n \n\n {children}\n \n );\n }\n);\n",
+ "content": "import React, { useMemo, useState } from 'react';\n\nimport { withRef } from '@udecode/cn';\nimport { PlateElement } from '@udecode/plate-common/react';\nimport { EmojiInlineIndexSearch, insertEmoji } from '@udecode/plate-emoji';\n\nimport { useDebounce } from '@/registry/default/hooks/use-debounce';\n\nimport {\n InlineCombobox,\n InlineComboboxContent,\n InlineComboboxEmpty,\n InlineComboboxInput,\n InlineComboboxItem,\n} from './inline-combobox';\n\nexport const EmojiInputElement = withRef(\n ({ className, ...props }, ref) => {\n const { children, editor, element } = props;\n const [value, setValue] = useState('');\n const debouncedValue = useDebounce(value, 100);\n const isPending = value !== debouncedValue;\n\n const filteredEmojis = useMemo(() => {\n if (debouncedValue.trim().length === 0) return [];\n\n return EmojiInlineIndexSearch.getInstance()\n .search(debouncedValue.replace(/:$/, ''))\n .get();\n }, [debouncedValue]);\n\n return (\n \n \n \n\n \n {!isPending && (\n No matching emoji found \n )}\n\n {filteredEmojis.map((emoji) => (\n insertEmoji(editor, emoji)}\n >\n {emoji.skins[0].native} {emoji.name}\n \n ))}\n \n \n\n {children}\n \n );\n }\n);\n",
"path": "plate-ui/emoji-input-element.tsx",
"target": "",
"type": "registry:ui"
diff --git a/apps/www/public/r/styles/default/floating-toolbar.json b/apps/www/public/r/styles/default/floating-toolbar.json
index af61bbd306..9de2dc03c0 100644
--- a/apps/www/public/r/styles/default/floating-toolbar.json
+++ b/apps/www/public/r/styles/default/floating-toolbar.json
@@ -4,7 +4,7 @@
],
"files": [
{
- "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n PortalBody,\n useComposedRef,\n useEditorId,\n useEventEditorSelectors,\n} from '@udecode/plate-common/react';\nimport {\n type FloatingToolbarState,\n flip,\n offset,\n useFloatingToolbar,\n useFloatingToolbarState,\n} from '@udecode/plate-floating';\n\nimport { Toolbar } from './toolbar';\n\nexport const FloatingToolbar = withRef<\n typeof Toolbar,\n {\n state?: FloatingToolbarState;\n }\n>(({ children, state, ...props }, componentRef) => {\n const editorId = useEditorId();\n const focusedEditorId = useEventEditorSelectors.focus();\n\n const floatingToolbarState = useFloatingToolbarState({\n editorId,\n focusedEditorId,\n ...state,\n floatingOptions: {\n middleware: [\n offset(12),\n flip({\n fallbackPlacements: [\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n ],\n padding: 12,\n }),\n ],\n placement: 'top',\n ...state?.floatingOptions,\n },\n });\n\n const {\n hidden,\n props: rootProps,\n ref: floatingRef,\n } = useFloatingToolbar(floatingToolbarState);\n\n const ref = useComposedRef(componentRef, floatingRef);\n\n if (hidden) return null;\n\n return (\n \n \n {children}\n \n \n );\n});\n",
+ "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef } from '@udecode/cn';\nimport {\n PortalBody,\n useComposedRef,\n useEditorId,\n useEventEditorSelectors,\n} from '@udecode/plate-common/react';\nimport {\n type FloatingToolbarState,\n flip,\n offset,\n useFloatingToolbar,\n useFloatingToolbarState,\n} from '@udecode/plate-floating';\n\nimport { Toolbar } from './toolbar';\n\nexport const FloatingToolbar = withRef<\n typeof Toolbar,\n {\n state?: FloatingToolbarState;\n }\n>(({ children, state, ...props }, componentRef) => {\n const editorId = useEditorId();\n const focusedEditorId = useEventEditorSelectors.focus();\n\n const floatingToolbarState = useFloatingToolbarState({\n editorId,\n focusedEditorId,\n ...state,\n floatingOptions: {\n middleware: [\n offset(12),\n flip({\n fallbackPlacements: [\n 'top-start',\n 'top-end',\n 'bottom-start',\n 'bottom-end',\n ],\n padding: 12,\n }),\n ],\n placement: 'top',\n ...state?.floatingOptions,\n },\n });\n\n const {\n hidden,\n props: rootProps,\n ref: floatingRef,\n } = useFloatingToolbar(floatingToolbarState);\n\n const ref = useComposedRef(componentRef, floatingRef);\n\n if (hidden) return null;\n\n return (\n \n \n {children}\n \n \n );\n});\n",
"path": "plate-ui/floating-toolbar.tsx",
"target": "",
"type": "registry:ui"
diff --git a/apps/www/public/r/styles/default/tooltip.json b/apps/www/public/r/styles/default/tooltip.json
index 949704ca00..357e4999fd 100644
--- a/apps/www/public/r/styles/default/tooltip.json
+++ b/apps/www/public/r/styles/default/tooltip.json
@@ -4,7 +4,7 @@
],
"files": [
{
- "content": "'use client';\n\nimport React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { withCn, withProps } from '@udecode/cn';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport const Tooltip = TooltipPrimitive.Root;\n\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipPortal = TooltipPrimitive.Portal;\n\nexport const TooltipContent = withCn(\n withProps(TooltipPrimitive.Content, {\n sideOffset: 4,\n }),\n 'z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md'\n);\n\nexport function withTooltip<\n T extends React.ComponentType | keyof HTMLElementTagNameMap,\n>(Component: T) {\n return React.forwardRef<\n React.ElementRef,\n {\n tooltipContentProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltipProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltip?: React.ReactNode;\n } & React.ComponentPropsWithoutRef\n >(function ExtendComponent(\n { tooltip, tooltipContentProps, tooltipProps, ...props },\n ref\n ) {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n const component = ;\n\n if (tooltip && mounted) {\n return (\n \n {component} \n\n \n {tooltip} \n \n \n );\n }\n\n return component;\n });\n}\n",
+ "content": "'use client';\n\nimport React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { withCn, withProps } from '@udecode/cn';\n\nexport const TooltipProvider = withProps(TooltipPrimitive.Provider, {\n delayDuration: 0,\n disableHoverableContent: true,\n skipDelayDuration: 0,\n});\n\nexport const Tooltip = TooltipPrimitive.Root;\n\nexport const TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport const TooltipPortal = TooltipPrimitive.Portal;\n\nexport const TooltipContent = withCn(\n withProps(TooltipPrimitive.Content, {\n sideOffset: 4,\n }),\n 'z-50 overflow-hidden rounded-md bg-black px-3 py-1.5 text-sm font-semibold text-white shadow-md'\n);\n\nexport function withTooltip<\n T extends React.ComponentType | keyof HTMLElementTagNameMap,\n>(Component: T) {\n return React.forwardRef<\n React.ElementRef,\n {\n tooltipContentProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltipProps?: Omit<\n React.ComponentPropsWithoutRef,\n 'children'\n >;\n tooltip?: React.ReactNode;\n } & React.ComponentPropsWithoutRef &\n Omit\n >(function ExtendComponent(\n {\n delayDuration = 0,\n disableHoverableContent = true,\n skipDelayDuration = 0,\n tooltip,\n tooltipContentProps,\n tooltipProps,\n ...props\n },\n ref\n ) {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n const component = ;\n\n if (tooltip && mounted) {\n return (\n \n \n {component} \n\n \n \n {tooltip}\n \n \n \n \n );\n }\n\n return component;\n });\n}\n",
"path": "plate-ui/tooltip.tsx",
"target": "",
"type": "registry:ui"
diff --git a/apps/www/src/registry/default/plate-ui/tooltip.tsx b/apps/www/src/registry/default/plate-ui/tooltip.tsx
index 130f88ece5..ca6e82ab74 100644
--- a/apps/www/src/registry/default/plate-ui/tooltip.tsx
+++ b/apps/www/src/registry/default/plate-ui/tooltip.tsx
@@ -40,7 +40,7 @@ export function withTooltip<
>;
tooltip?: React.ReactNode;
} & React.ComponentPropsWithoutRef &
- TooltipPrimitive.TooltipProviderProps
+ Omit
>(function ExtendComponent(
{
delayDuration = 0,
From 76426b6b904e050c00401a3c33a6f6526aa93285 Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Mon, 23 Sep 2024 11:59:34 +0200
Subject: [PATCH 6/8] fix
---
apps/www/src/components/main-nav.tsx | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/apps/www/src/components/main-nav.tsx b/apps/www/src/components/main-nav.tsx
index f9bcc55d3f..d5090c251f 100644
--- a/apps/www/src/components/main-nav.tsx
+++ b/apps/www/src/components/main-nav.tsx
@@ -30,7 +30,9 @@ export function MainNav() {
@@ -40,7 +42,7 @@ export function MainNav() {
className={cn(
'transition-colors hover:text-foreground/80',
pathname?.startsWith('/docs/components')
- ? 'text-foreground'
+ ? 'font-medium text-foreground'
: 'text-foreground/60'
)}
href="/docs/components"
From 2fadcdc01f27c1e6d7dfc245d4649b62416140e2 Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Tue, 24 Sep 2024 03:31:57 +0200
Subject: [PATCH 7/8] feat: registry
---
apps/www/content/docs/components/cli.mdx | 68 +-
templates/plate-template/components.json | 12 +-
templates/plate-template/package.json | 1 +
templates/plate-template/pnpm-lock.yaml | 5128 ++++++++++-------
templates/plate-template/src/lib/utils.ts | 6 +
.../plate-template/src/styles/globals.css | 28 +-
templates/plate-template/tailwind.config.js | 151 +-
7 files changed, 3115 insertions(+), 2279 deletions(-)
create mode 100644 templates/plate-template/src/lib/utils.ts
diff --git a/apps/www/content/docs/components/cli.mdx b/apps/www/content/docs/components/cli.mdx
index 6f012ba52b..525c2f2ff2 100644
--- a/apps/www/content/docs/components/cli.mdx
+++ b/apps/www/content/docs/components/cli.mdx
@@ -3,6 +3,12 @@ title: CLI
description: Use the CLI to add components to your project.
---
+
+
+**Note:** We are now using the `shadcn` CLI.
+
+
+
## init
Use the `init` command to initialize configuration and dependencies for a new project.
@@ -13,41 +19,65 @@ The `init` command installs dependencies, adds the `cn` util, configures `tailwi
npx @udecode/plate-ui@latest init
```
-You will be asked a few questions to configure `plate-components.json`:
+You will be asked a few questions to configure `components.json`:
```txt showLineNumbers
Which style would you like to use? › Default
Which color would you like to use as base color? › Slate
-Where is your global CSS file? › src/style/globals.css
-Do you want to use CSS variables for colors? › no / yes
-Are you using a custom tailwind prefix eg. tw-? (Leave blank if not) ...
-Where is your tailwind.config.js located? › tailwind.config.js
-Configure the import alias for components: › @/components
-Configure the import alias for ui: › @/components/plate-ui
-Are you using React Server Components? › no / yes
+Do you want to use CSS variables for colors? › yes
+```
+
+To have the same look than Plate UI, you should:
+
+- Pick "Default" for the style. Plate does not have the "New York" style.
+- Pick "Slate" for the base color.
+- Pick "Yes" for using CSS variables.
+
+You should get something like this:
+
+```txt
+npx shadcn@latest init
+Need to install the following packages:
+shadcn@2.0.7
+Ok to proceed? (y) y
+
+✔ Preflight checks.
+✔ Verifying framework. Found Next.js.
+✔ Validating Tailwind CSS.
+✔ Validating import alias.
+✔ Which style would you like to use? › Default
+✔ Which color would you like to use as the base color? › Slate
+✔ Would you like to use CSS variables for theming? … no / yes
+✔ Writing components.json.
+✔ Checking registry.
+✔ Updating tailwind.config.js
+✔ Updating src/styles/globals.css
+✔ Installing dependencies.
+✔ Created 1 file:
+ - src/lib/utils.ts
+
+Success! Project initialization completed.
+You may now add components.
```
### Options
```txt
-Usage: @udecode/plate-ui init [options]
+Usage: shadcn init [options] [components...]
initialize your project and install dependencies
+Arguments:
+ components the components to add or a url to the component.
+
Options:
- -y, --yes skip confirmation prompt. (default: false)
- -c, --cwd the working directory. defaults to the current directory.
+ -d, --defaults use default values i.e new-york, zinc and css variables. (default: false)
+ -f, --force force overwrite of existing components.json. (default: false)
+ -y, --yes skip confirmation prompt. (default: false)
+ -c, --cwd the working directory. defaults to the current directory.
-h, --help display help for command
```
-### Add icons
-
-Add the icons you'll use in `components/icons.tsx`:
-
-
-
-We use icons from Lucide. You can use any icon library you want.
-
## add
Use the `add` command to add components and dependencies to your project.
diff --git a/templates/plate-template/components.json b/templates/plate-template/components.json
index e6266e13d8..132ed0edbc 100644
--- a/templates/plate-template/components.json
+++ b/templates/plate-template/components.json
@@ -1,14 +1,20 @@
{
- "$schema": "https://platejs.org/schema.json",
+ "$schema": "https://ui.shadcn.com/schema.json",
"style": "default",
"rsc": true,
+ "tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "src/styles/globals.css",
"baseColor": "slate",
- "cssVariables": true
+ "cssVariables": true,
+ "prefix": ""
},
"aliases": {
- "components": "@/components"
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
}
}
diff --git a/templates/plate-template/package.json b/templates/plate-template/package.json
index f0c12d6450..0c6c2e44ef 100644
--- a/templates/plate-template/package.json
+++ b/templates/plate-template/package.json
@@ -17,6 +17,7 @@
"@udecode/cn": "^38.0.1",
"@udecode/plate-common": "^38.0.0",
"class-variance-authority": "0.7.0",
+ "clsx": "^2.1.1",
"eslint-plugin-prettier": "^5.2.1",
"lucide-react": "0.441.0",
"next": "^14.2.9",
diff --git a/templates/plate-template/pnpm-lock.yaml b/templates/plate-template/pnpm-lock.yaml
index 2bf86d3ed9..a1b6477fa4 100644
--- a/templates/plate-template/pnpm-lock.yaml
+++ b/templates/plate-template/pnpm-lock.yaml
@@ -1,371 +1,258 @@
-lockfileVersion: '6.0'
+lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-dependencies:
- '@radix-ui/react-slot':
- specifier: ^1.1.0
- version: 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-tooltip':
- specifier: ^1.1.2
- version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@udecode/cn':
- specifier: ^38.0.1
- version: 38.0.1(@types/react@18.3.7)(class-variance-authority@0.7.0)(react-dom@18.3.1)(react@18.3.1)(tailwind-merge@2.5.2)
- '@udecode/plate-common':
- specifier: ^38.0.0
- version: 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0)
- class-variance-authority:
- specifier: 0.7.0
- version: 0.7.0
- eslint-plugin-prettier:
- specifier: ^5.2.1
- version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.3.3)
- lucide-react:
- specifier: 0.441.0
- version: 0.441.0(react@18.3.1)
- next:
- specifier: ^14.2.9
- version: 14.2.12(@babel/core@7.25.2)(react-dom@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:
- specifier: ^18.3.1
- version: 18.3.1
- react-dnd:
- specifier: ^16.0.1
- version: 16.0.1(@types/node@22.5.5)(@types/react@18.3.7)(react@18.3.1)
- react-dnd-html5-backend:
- specifier: ^16.0.1
- version: 16.0.1
- react-dom:
- specifier: ^18.3.1
- version: 18.3.1(react@18.3.1)
- slate:
- specifier: 0.103.0
- version: 0.103.0
- slate-history:
- specifier: 0.109.0
- version: 0.109.0(slate@0.103.0)
- slate-hyperscript:
- specifier: 0.100.0
- version: 0.100.0(slate@0.103.0)
- slate-react:
- specifier: 0.110.1
- version: 0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0)
- tailwind-merge:
- specifier: 2.5.2
- version: 2.5.2
- tailwindcss-animate:
- specifier: 1.0.7
- version: 1.0.7(tailwindcss@3.4.12)
-
-devDependencies:
- '@ianvs/prettier-plugin-sort-imports':
- specifier: ^4.3.1
- version: 4.3.1(prettier@3.3.3)
- '@types/node':
- specifier: ^22.5.4
- version: 22.5.5
- '@types/react':
- specifier: ^18.3.5
- version: 18.3.7
- '@types/react-dom':
- specifier: ^18.3.0
- version: 18.3.0
- '@typescript-eslint/parser':
- specifier: ^8.5.0
- version: 8.6.0(eslint@8.57.1)(typescript@5.6.2)
- autoprefixer:
- specifier: ^10.4.20
- version: 10.4.20(postcss@8.4.47)
- encoding:
- specifier: ^0.1.13
- version: 0.1.13
- eslint:
- specifier: ^8.56.0
- version: 8.57.1
- eslint-config-next:
- specifier: 14.2.12
- version: 14.2.12(eslint@8.57.1)(typescript@5.6.2)
- eslint-config-prettier:
- specifier: ^9.1.0
- version: 9.1.0(eslint@8.57.1)
- eslint-plugin-react:
- specifier: ^7.35.2
- version: 7.36.1(eslint@8.57.1)
- eslint-plugin-tailwindcss:
- specifier: ^3.17.4
- version: 3.17.4(tailwindcss@3.4.12)
- eslint-plugin-unused-imports:
- specifier: ^4.1.3
- version: 4.1.4(eslint@8.57.1)
- postcss:
- specifier: ^8.4.45
- version: 8.4.47
- prettier:
- specifier: ^3.3.3
- version: 3.3.3
- tailwindcss:
- specifier: ^3.4.10
- version: 3.4.12
- typescript:
- specifier: 5.6.2
- version: 5.6.2
+importers:
+
+ .:
+ dependencies:
+ '@radix-ui/react-slot':
+ specifier: ^1.1.0
+ version: 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-tooltip':
+ specifier: ^1.1.2
+ version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/cn':
+ specifier: ^38.0.1
+ version: 38.0.1(@types/react@18.3.7)(class-variance-authority@0.7.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwind-merge@2.5.2)
+ '@udecode/plate-common':
+ specifier: ^38.0.0
+ version: 38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ class-variance-authority:
+ specifier: 0.7.0
+ version: 0.7.0
+ clsx:
+ specifier: ^2.1.1
+ version: 2.1.1
+ eslint-plugin-prettier:
+ specifier: ^5.2.1
+ version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3)
+ lucide-react:
+ specifier: 0.441.0
+ version: 0.441.0(react@18.3.1)
+ next:
+ specifier: ^14.2.9
+ version: 14.2.12(@babel/core@7.25.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)
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dnd:
+ specifier: ^16.0.1
+ version: 16.0.1(@types/node@22.5.5)(@types/react@18.3.7)(react@18.3.1)
+ react-dnd-html5-backend:
+ specifier: ^16.0.1
+ version: 16.0.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ slate:
+ specifier: 0.103.0
+ version: 0.103.0
+ slate-history:
+ specifier: 0.109.0
+ version: 0.109.0(slate@0.103.0)
+ slate-hyperscript:
+ specifier: 0.100.0
+ version: 0.100.0(slate@0.103.0)
+ slate-react:
+ specifier: 0.110.1
+ version: 0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0)
+ tailwind-merge:
+ specifier: 2.5.2
+ version: 2.5.2
+ tailwindcss-animate:
+ specifier: 1.0.7
+ version: 1.0.7(tailwindcss@3.4.12)
+ devDependencies:
+ '@ianvs/prettier-plugin-sort-imports':
+ specifier: ^4.3.1
+ version: 4.3.1(prettier@3.3.3)
+ '@types/node':
+ specifier: ^22.5.4
+ version: 22.5.5
+ '@types/react':
+ specifier: ^18.3.5
+ version: 18.3.7
+ '@types/react-dom':
+ specifier: ^18.3.0
+ version: 18.3.0
+ '@typescript-eslint/parser':
+ specifier: ^8.5.0
+ version: 8.6.0(eslint@8.57.1)(typescript@5.6.2)
+ autoprefixer:
+ specifier: ^10.4.20
+ version: 10.4.20(postcss@8.4.47)
+ encoding:
+ specifier: ^0.1.13
+ version: 0.1.13
+ eslint:
+ specifier: ^8.56.0
+ version: 8.57.1
+ eslint-config-next:
+ specifier: 14.2.12
+ version: 14.2.12(eslint@8.57.1)(typescript@5.6.2)
+ eslint-config-prettier:
+ specifier: ^9.1.0
+ version: 9.1.0(eslint@8.57.1)
+ eslint-plugin-react:
+ specifier: ^7.35.2
+ version: 7.36.1(eslint@8.57.1)
+ eslint-plugin-tailwindcss:
+ specifier: ^3.17.4
+ version: 3.17.4(tailwindcss@3.4.12)
+ eslint-plugin-unused-imports:
+ specifier: ^4.1.3
+ version: 4.1.4(@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)
+ postcss:
+ specifier: ^8.4.45
+ version: 8.4.47
+ prettier:
+ specifier: ^3.3.3
+ version: 3.3.3
+ tailwindcss:
+ specifier: ^3.4.10
+ version: 3.4.12
+ typescript:
+ specifier: 5.6.2
+ version: 5.6.2
packages:
- /@alloc/quick-lru@5.2.0:
+ '@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- /@ampproject/remapping@2.3.0:
+ '@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/gen-mapping': 0.3.5
- '@jridgewell/trace-mapping': 0.3.25
- /@babel/code-frame@7.24.7:
+ '@babel/code-frame@7.24.7':
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.24.7
- picocolors: 1.1.0
- /@babel/compat-data@7.25.4:
+ '@babel/compat-data@7.25.4':
resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
engines: {node: '>=6.9.0'}
- /@babel/core@7.25.2:
+ '@babel/core@7.25.2':
resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
engines: {node: '>=6.9.0'}
- 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:
+ '@babel/generator@7.25.6':
resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
engines: {node: '>=6.9.0'}
- 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:
+ '@babel/helper-compilation-targets@7.25.2':
resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
engines: {node: '>=6.9.0'}
- 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:
+ '@babel/helper-module-imports@7.24.7':
resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
- 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):
+ '@babel/helper-module-transforms@7.25.2':
resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- 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:
+ '@babel/helper-simple-access@7.24.7':
resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/traverse': 7.25.6
- '@babel/types': 7.25.6
- transitivePeerDependencies:
- - supports-color
- /@babel/helper-string-parser@7.24.8:
+ '@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:
+ '@babel/helper-validator-identifier@7.24.7':
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-option@7.24.8:
+ '@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:
+ '@babel/helpers@7.25.6':
resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.25.0
- '@babel/types': 7.25.6
- /@babel/highlight@7.24.7:
+ '@babel/highlight@7.24.7':
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
- 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:
+ '@babel/parser@7.25.6':
resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
engines: {node: '>=6.0.0'}
hasBin: true
- dependencies:
- '@babel/types': 7.25.6
- /@babel/runtime@7.25.6:
+ '@babel/runtime@7.25.6':
resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
engines: {node: '>=6.9.0'}
- dependencies:
- regenerator-runtime: 0.14.1
- dev: false
- /@babel/template@7.25.0:
+ '@babel/template@7.25.0':
resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.24.7
- '@babel/parser': 7.25.6
- '@babel/types': 7.25.6
- /@babel/traverse@7.25.6:
+ '@babel/traverse@7.25.6':
resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
engines: {node: '>=6.9.0'}
- 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:
+ '@babel/types@7.25.6':
resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.24.8
- '@babel/helper-validator-identifier': 7.24.7
- to-fast-properties: 2.0.0
- /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1):
+ '@eslint-community/eslint-utils@4.4.0':
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- dependencies:
- eslint: 8.57.1
- eslint-visitor-keys: 3.4.3
- /@eslint-community/regexpp@4.11.1:
+ '@eslint-community/regexpp@4.11.1':
resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- /@eslint/eslintrc@2.1.4:
+ '@eslint/eslintrc@2.1.4':
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- ajv: 6.12.6
- debug: 4.3.7
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.2
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
- /@eslint/js@8.57.1:
+ '@eslint/js@8.57.1':
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- /@floating-ui/core@1.6.8:
+ '@floating-ui/core@1.6.8':
resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==}
- dependencies:
- '@floating-ui/utils': 0.2.8
- dev: false
- /@floating-ui/dom@1.6.11:
+ '@floating-ui/dom@1.6.11':
resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==}
- dependencies:
- '@floating-ui/core': 1.6.8
- '@floating-ui/utils': 0.2.8
- dev: false
- /@floating-ui/react-dom@2.1.2(react-dom@18.3.1)(react@18.3.1):
+ '@floating-ui/react-dom@2.1.2':
resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
peerDependencies:
- react: '*'
- react-dom: '*'
- dependencies:
- '@floating-ui/dom': 1.6.11
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
- /@floating-ui/utils@0.2.8:
+ '@floating-ui/utils@0.2.8':
resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==}
- dev: false
- /@humanwhocodes/config-array@0.13.0:
+ '@humanwhocodes/config-array@0.13.0':
resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
engines: {node: '>=10.10.0'}
deprecated: Use @eslint/config-array instead
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.7
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
- /@humanwhocodes/module-importer@1.0.1:
+ '@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- /@humanwhocodes/object-schema@2.0.3:
+ '@humanwhocodes/object-schema@2.0.3':
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
- /@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3):
+ '@ianvs/prettier-plugin-sort-imports@4.3.1':
resolution: {integrity: sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==}
peerDependencies:
'@vue/compiler-sfc': 2.7.x || 3.x
@@ -373,577 +260,2581 @@ packages:
peerDependenciesMeta:
'@vue/compiler-sfc':
optional: true
- 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
- dev: true
- /@isaacs/cliui@8.0.2:
+ '@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
- dependencies:
- string-width: 5.1.2
- string-width-cjs: /string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: /strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: /wrap-ansi@7.0.0
- /@jridgewell/gen-mapping@0.3.5:
+ '@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
- /@jridgewell/resolve-uri@3.1.2:
+ '@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- /@jridgewell/set-array@1.2.1:
+ '@jridgewell/set-array@1.2.1':
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
- /@jridgewell/sourcemap-codec@1.5.0:
+ '@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
- /@jridgewell/trace-mapping@0.3.25:
+ '@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
- /@juggle/resize-observer@3.4.0:
+ '@juggle/resize-observer@3.4.0':
resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
- dev: false
- /@next/env@14.2.12:
+ '@next/env@14.2.12':
resolution: {integrity: sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q==}
- dev: false
- /@next/eslint-plugin-next@14.2.12:
+ '@next/eslint-plugin-next@14.2.12':
resolution: {integrity: sha512-cPrKbXtK8NTThOOFNxRGGTw+5s02Ek8z8ri/hZqeKs6uP8LOTGqFyBy6hpCXt7TvLzzriWiiwRyD4h0XYmPEEg==}
- dependencies:
- glob: 10.3.10
- dev: true
- /@next/swc-darwin-arm64@14.2.12:
+ '@next/swc-darwin-arm64@14.2.12':
resolution: {integrity: sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-darwin-x64@14.2.12:
+ '@next/swc-darwin-x64@14.2.12':
resolution: {integrity: sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-linux-arm64-gnu@14.2.12:
+ '@next/swc-linux-arm64-gnu@14.2.12':
resolution: {integrity: sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-linux-arm64-musl@14.2.12:
+ '@next/swc-linux-arm64-musl@14.2.12':
resolution: {integrity: sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-linux-x64-gnu@14.2.12:
+ '@next/swc-linux-x64-gnu@14.2.12':
resolution: {integrity: sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-linux-x64-musl@14.2.12:
+ '@next/swc-linux-x64-musl@14.2.12':
resolution: {integrity: sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-win32-arm64-msvc@14.2.12:
+ '@next/swc-win32-arm64-msvc@14.2.12':
resolution: {integrity: sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-win32-ia32-msvc@14.2.12:
+ '@next/swc-win32-ia32-msvc@14.2.12':
resolution: {integrity: sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
- requiresBuild: true
- dev: false
- optional: true
- /@next/swc-win32-x64-msvc@14.2.12:
+ '@next/swc-win32-x64-msvc@14.2.12':
resolution: {integrity: sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- requiresBuild: true
- dev: false
- optional: true
- /@nodelib/fs.scandir@2.1.5:
+ '@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
- /@nodelib/fs.stat@2.0.5:
+ '@nodelib/fs.stat@2.0.5':
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
- /@nodelib/fs.walk@1.2.8:
+ '@nodelib/fs.walk@1.2.8':
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
- /@nolyfill/is-core-module@1.0.39:
+ '@nolyfill/is-core-module@1.0.39':
resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
engines: {node: '>=12.4.0'}
- dev: true
- /@pkgjs/parseargs@0.11.0:
+ '@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- requiresBuild: true
- optional: true
- /@pkgr/core@0.1.1:
+ '@pkgr/core@0.1.1':
resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- dev: false
- /@radix-ui/primitive@1.1.0:
+ '@radix-ui/primitive@1.1.0':
resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
- dev: false
- /@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-arrow@1.1.0':
resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-compose-refs@1.1.0':
resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-context@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-context@1.1.0':
resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-dismissable-layer@1.1.0':
resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-id@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-id@1.1.0':
resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-popper@1.2.0':
resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/rect': 1.1.0
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-portal@1.1.1':
resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-presence@1.1.0':
resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-primitive@2.0.0':
resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-slot@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-slot@1.1.0':
resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
+ '@radix-ui/react-tooltip@1.1.2':
resolution: {integrity: sha512-9XRsLwe6Yb9B/tlnYCPVUd/TFS4J7HuOZW345DCeC6vKIxQGMZdx21RK4VoZauPD5frgkXTYVS5y90L+3YBn4w==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: '*'
- react-dom: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
- dependencies:
- '@radix-ui/primitive': 1.1.0
- '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-context': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-id': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@radix-ui/react-slot': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@types/react': 18.3.7
- '@types/react-dom': 18.3.0
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-use-callback-ref@1.1.0':
resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-use-escape-keydown@1.1.0':
resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-use-layout-effect@1.1.0':
resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@types/react': 18.3.7
- react: 18.3.1
- dev: false
- /@radix-ui/react-use-rect@1.1.0(@types/react@18.3.7)(react@18.3.1):
+ '@radix-ui/react-use-rect@1.1.0':
resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
peerDependencies:
'@types/react': '*'
- react: '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
- dependencies:
- '@radix-ui/rect': 1.1.0
+
+ '@radix-ui/react-use-size@1.1.0':
+ resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-visually-hidden@1.1.0':
+ resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/rect@1.1.0':
+ resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
+
+ '@react-dnd/asap@5.0.2':
+ resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==}
+
+ '@react-dnd/invariant@4.0.2':
+ resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==}
+
+ '@react-dnd/shallowequal@4.0.2':
+ resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==}
+
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
+ '@rushstack/eslint-patch@1.10.4':
+ resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
+
+ '@swc/counter@0.1.3':
+ resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+
+ '@swc/helpers@0.5.5':
+ resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ '@types/node@22.5.5':
+ resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==}
+
+ '@types/prop-types@15.7.13':
+ resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
+
+ '@types/react-dom@18.3.0':
+ resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+
+ '@types/react@18.3.7':
+ resolution: {integrity: sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==}
+
+ '@typescript-eslint/eslint-plugin@8.6.0':
+ resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@8.6.0':
+ resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@8.6.0':
+ resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/type-utils@8.6.0':
+ resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@8.6.0':
+ resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.6.0':
+ resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@8.6.0':
+ resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+
+ '@typescript-eslint/visitor-keys@8.6.0':
+ resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@udecode/cn@38.0.1':
+ resolution: {integrity: sha512-9w0yzIGX/2KAZyYDXJCPJJIUdAGnneH8nYlpFAFjFgNrNhBqgCp1H9T0Cl8LKeDHkjKfP+Xe59ttuCd8ieqeTg==}
+ peerDependencies:
+ class-variance-authority: '>=0.7.0'
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ tailwind-merge: '>=2.2.0'
+
+ '@udecode/plate-common@38.0.4':
+ resolution: {integrity: sha512-xmo4jrHZT2mTvYLsHAs4JHfBwMUwMQIURX8rF33gAVmUcP+piswaDhIfsr5OXxwc82pWCwGxv4343VHz2NLdbA==}
+ peerDependencies:
+ 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-core@38.0.4':
+ resolution: {integrity: sha512-AzQO42bZyRtZuD5pnJ2aoiN9sN+Pn5sLB48t34d7rc22il/9urUgocmaxAlJRqJmgbdCfk8cVFzFMm5wM46RVQ==}
+ peerDependencies:
+ 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-utils@38.0.4':
+ resolution: {integrity: sha512-G4VzdHbAv8Jm+1J3p9VNRu38Tl2TnCZbQT7omtLAl/XLQCxk69LX0kHKe/Vmh2nhSFuCtu2JRIYIYY18SyKTzQ==}
+ peerDependencies:
+ 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.110.0'
+
+ '@udecode/react-hotkeys@37.0.0':
+ resolution: {integrity: sha512-3ZV5LiaTnKyhXwN6U0NE2cofNsNN2IPMkNCDntbSIIRLYmI+o6LRkDwAucSNh/BIdNXfvxscsR04RYyIwjGbJw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@udecode/react-utils@38.0.1':
+ resolution: {integrity: sha512-flUBUNmTgaSi3N2qK4+Dv962d4VKiVYn0S6eQ1lAwofSZ70I2PtOGdFiCilSkCD9tq4T4I2ez0YVTgJB0UW2iw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@udecode/slate-react@38.0.4':
+ resolution: {integrity: sha512-JjwrQSEvniNVKIO5vkfbR6r7DYmURH/hUFEpDpBMvciO7YDlS6ONsP3dV7cngWKpDFLsJhrr8JgVNH0uDMACTQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+ slate-react: '>=0.108.0'
+
+ '@udecode/slate-utils@38.0.4':
+ resolution: {integrity: sha512-7Dwu1fLEoqs9OJ9ZsPbx1G4STHZ91SDc+wCEOgAclMUrr9b1HBErJ9E6Svqp63hicXcUd2du2qSdSVTlyw7mGg==}
+ peerDependencies:
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+
+ '@udecode/slate@38.0.4':
+ resolution: {integrity: sha512-PlnavxtTd4xIqC/HdNl/nebMUogBjXgq1WyiH1mCXBNzMRuTpss7ByhXOr/SO67h6CKpaeGc1kf3dqZsHQWHZw==}
+ peerDependencies:
+ slate: '>=0.103.0'
+ slate-history: '>=0.93.0'
+
+ '@udecode/utils@37.0.0':
+ resolution: {integrity: sha512-30ixi2pznIXyIqpFocX+X5Sj38js+wZ0RLY14eZv1C1zwWo5BxSuJfzpGQTvGcLPJnij019tEpmGH61QdDxtrQ==}
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.1.0:
+ 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'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-query@5.1.3:
+ resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+
+ array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+
+ array-includes@3.1.8:
+ resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.findlast@1.2.5:
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.findlastindex@1.2.5:
+ resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.2:
+ resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.tosorted@1.1.4:
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
+
+ arraybuffer.prototype.slice@1.0.3:
+ resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
+ engines: {node: '>= 0.4'}
+
+ ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+
+ autoprefixer@10.4.20:
+ resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ axe-core@4.10.0:
+ resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==}
+ engines: {node: '>=4'}
+
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.23.3:
+ resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+
+ call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+
+ caniuse-lite@1.0.30001660:
+ resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==}
+
+ 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'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ class-variance-authority@0.7.0:
+ resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
+
+ client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+
+ clsx@2.0.0:
+ resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
+ engines: {node: '>=6'}
+
+ clsx@2.1.1:
+ 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==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ compute-scroll-into-view@3.1.0:
+ resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+
+ data-view-buffer@1.0.1:
+ resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.1:
+ resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.0:
+ resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
+ engines: {node: '>= 0.4'}
+
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ deep-equal@2.2.3:
+ resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ direction@1.0.4:
+ resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==}
+ hasBin: true
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ dnd-core@16.0.1:
+ resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==}
+
+ doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ electron-to-chromium@1.5.25:
+ resolution: {integrity: sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ encoding@0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+
+ enhanced-resolve@5.17.1:
+ resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
+ engines: {node: '>=10.13.0'}
+
+ es-abstract@1.23.3:
+ resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-get-iterator@1.1.3:
+ resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+
+ es-iterator-helpers@1.0.19:
+ resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.0.0:
+ resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.0.3:
+ resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+
+ es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.2.0:
+ 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'}
+
+ eslint-config-next@14.2.12:
+ resolution: {integrity: sha512-fzUIlF6Ng1cUFFd013wn9H3YhKe3vV/cZBC0Ec9S64q/wGoTq0HlASA7WgiOwDAISSbzkLprInLiIMu6U8bqEw==}
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ eslint-config-prettier@9.1.0:
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
+ eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+
+ eslint-import-resolver-typescript@3.6.3:
+ resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.11.0:
+ resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-import@2.30.0:
+ resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.0:
+ resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
+ eslint-plugin-prettier@5.2.1:
+ resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ '@types/eslint': '>=8.0.0'
+ eslint: '>=8.0.0'
+ eslint-config-prettier: '*'
+ prettier: '>=3.0.0'
+ peerDependenciesMeta:
+ '@types/eslint':
+ optional: true
+ eslint-config-prettier:
+ optional: true
+
+ eslint-plugin-react-hooks@4.6.2:
+ resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+
+ eslint-plugin-react@7.36.1:
+ resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-plugin-tailwindcss@3.17.4:
+ resolution: {integrity: sha512-gJAEHmCq2XFfUP/+vwEfEJ9igrPeZFg+skeMtsxquSQdxba9XRk5bn0Bp9jxG1VV9/wwPKi1g3ZjItu6MIjhNg==}
+ engines: {node: '>=18.12.0'}
+ peerDependencies:
+ tailwindcss: ^3.4.0
+
+ eslint-plugin-unused-imports@4.1.4:
+ resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
+ eslint: ^9.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.1:
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
+ engines: {node: '>=14'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function.prototype.name@1.1.6:
+ resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ engines: {node: '>= 0.4'}
+
+ 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-symbol-description@1.0.2:
+ resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
+ engines: {node: '>= 0.4'}
+
+ get-tsconfig@4.8.1:
+ resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@10.3.10:
+ resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ glob@7.2.3:
+ 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'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
+ gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ 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'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ immer@10.1.1:
+ resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+
+ is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+
+ is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+
+ is-async-function@2.0.0:
+ resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+
+ is-bun-module@1.2.1:
+ resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.1:
+ resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.0.2:
+ resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-generator-function@1.0.10:
+ resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
+ engines: {node: '>= 0.4'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-hotkey@0.2.0:
+ resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
+
+ is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
+ is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-object@5.0.0:
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
+
+ is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+
+ is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+
+ is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+
+ is-typed-array@1.1.13:
+ resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
+ engines: {node: '>= 0.4'}
+
+ is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+
+ is-weakset@2.0.3:
+ resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
+ engines: {node: '>= 0.4'}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ iterator.prototype@1.1.2:
+ resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+
+ jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jiti@1.21.6:
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
+ hasBin: true
+
+ jotai-optics@0.4.0:
+ resolution: {integrity: sha512-osbEt9AgS55hC4YTZDew2urXKZkaiLmLqkTS/wfW5/l0ib8bmmQ7kBXSFaosV6jDDWSp00IipITcJARFHdp42g==}
+ peerDependencies:
+ jotai: '>=2.0.0'
+ optics-ts: '>=2.0.0'
+
+ jotai-x@1.2.4:
+ resolution: {integrity: sha512-FyLrAR/ZDtmaWgif4cNRuJvMam/RSFv+B11/p4T427ws/T+8WhZzwmULwNogG6ZbZq+v1XpH6f9aN1lYqY5dLg==}
+ peerDependencies:
+ '@types/react': '>=17.0.0'
+ jotai: '>=2.0.0'
+ react: '>=17.0.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
+ jotai@2.8.4:
+ resolution: {integrity: sha512-f6jwjhBJcDtpeauT2xH01gnqadKEySwwt1qNBLvAXcnojkmb76EdqRt05Ym8IamfHGAQz2qMKAwftnyjeSoHAA==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ '@types/react': '>=17.0.0'
+ react: '>=17.0.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.0:
+ 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==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ language-subtag-registry@0.3.23:
+ resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
+
+ language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ lilconfig@3.1.2:
+ resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
+ engines: {node: '>=14'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.mapvalues@4.6.0:
+ resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ 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.441.0:
+ resolution: {integrity: sha512-0vfExYtvSDhkC2lqg0zYVW1Uu9GsI4knuV9GP9by5z0Xhc4Zi5RejTxfz9LsjRmCyWVzHCJvxGKZWcRyvQCWVg==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ next-themes@0.3.0:
+ resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==}
+ peerDependencies:
+ react: ^16.8 || ^17 || ^18
+ react-dom: ^16.8 || ^17 || ^18
+
+ next@14.2.12:
+ resolution: {integrity: sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==}
+ engines: {node: '>=18.17.0'}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ '@playwright/test': ^1.41.2
+ react: ^18.2.0
+ react-dom: ^18.2.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ '@playwright/test':
+ optional: true
+ sass:
+ optional: true
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
+
+ object-is@1.1.6:
+ resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.8:
+ resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
+ engines: {node: '>= 0.4'}
+
+ object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
+
+ object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
+
+ object.values@1.2.0:
+ resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
+ engines: {node: '>= 0.4'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ optics-ts@2.4.1:
+ resolution: {integrity: sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ==}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+
+ postcss-import@15.1.0:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.0.1:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@4.0.2:
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-nested@6.2.0:
+ resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.1.2:
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ postcss@8.4.47:
+ resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier-linter-helpers@1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+
+ prettier@3.3.3:
+ resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ proxy-compare@2.6.0:
+ resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ react-dnd-html5-backend@16.0.1:
+ resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==}
+
+ react-dnd@16.0.1:
+ resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==}
+ peerDependencies:
+ '@types/hoist-non-react-statics': '>= 3.3.1'
+ '@types/node': '>= 12'
+ '@types/react': '>= 16'
+ react: '>= 16.14'
+ peerDependenciesMeta:
+ '@types/hoist-non-react-statics':
+ optional: true
+ '@types/node':
+ optional: true
+ '@types/react':
+ optional: true
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-tracked@1.7.14:
+ resolution: {integrity: sha512-6UMlgQeRAGA+uyYzuQGm7kZB6ZQYFhc7sntgP7Oxwwd6M0Ud/POyb4K3QWT1eXvoifSa80nrAWnXWFGpOvbwkw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '*'
+ react-native: '*'
+ scheduler: '>=0.19.0'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ redux@4.2.1:
+ resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==}
+
+ reflect.getprototypeof@1.0.6:
+ resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
+ engines: {node: '>= 0.4'}
+
+ regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+
+ regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ resolve@2.0.0-next.5:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
+ hasBin: true
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-array-concat@1.1.2:
+ resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
+ engines: {node: '>=0.4'}
+
+ safe-regex-test@1.0.3:
+ resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
+ engines: {node: '>= 0.4'}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ scroll-into-view-if-needed@3.1.0:
+ resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ slate-history@0.109.0:
+ resolution: {integrity: sha512-DHavPwrTTAEAV66eAocB3iQHEj65N6IVtbRK98ZuqGT0S44T3zXlhzY+5SZ7EPxRcoOYVt1dioRxXYM/+PmCiQ==}
+ peerDependencies:
+ slate: '>=0.65.3'
+
+ slate-hyperscript@0.100.0:
+ resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==}
+ peerDependencies:
+ slate: '>=0.65.3'
+
+ slate-react@0.110.1:
+ resolution: {integrity: sha512-bx6J0PkY9A50O4w78k4NPqNOXGo49fmSbCRgr8OBDWKKo4BeSt9y3vGXCkQ/Mm4lQ8riyRKr3TrJXzqMY7lRZg==}
+ peerDependencies:
+ react: '>=18.2.0'
+ react-dom: '>=18.2.0'
+ slate: '>=0.99.0'
+
+ slate@0.103.0:
+ resolution: {integrity: sha512-eCUOVqUpADYMZ59O37QQvUdnFG+8rin0OGQAXNHvHbQeVJ67Bu0spQbcy621vtf8GQUXTEQBlk6OP9atwwob4w==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ stop-iteration-iterator@1.0.0:
+ resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+
+ streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string.prototype.includes@2.0.0:
+ resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==}
+
+ string.prototype.matchall@4.0.11:
+ resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.repeat@1.0.0:
+ resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+
+ string.prototype.trim@1.2.9:
+ resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.8:
+ resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ styled-jsx@5.1.1:
+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+
+ sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ 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'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ synckit@0.9.1:
+ resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
+ tailwind-merge@2.5.2:
+ resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==}
+
+ tailwindcss-animate@1.0.7:
+ resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders'
+
+ tailwindcss@3.4.12:
+ resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+
+ thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+
+ tiny-invariant@1.3.1:
+ resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
+
+ 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'}
+
+ ts-api-utils@1.3.0:
+ resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
+
+ ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
+ tslib@2.7.0:
+ resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ typed-array-buffer@1.0.2:
+ resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.1:
+ resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.2:
+ resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.6:
+ resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
+ engines: {node: '>= 0.4'}
+
+ typescript@5.6.2:
+ resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
+ update-browserslist-db@1.1.0:
+ resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ use-context-selector@1.4.4:
+ resolution: {integrity: sha512-pS790zwGxxe59GoBha3QYOwk8AFGp4DN6DOtH+eoqVmgBBRXVx4IlPDhJmmMiNQAgUaLlP+58aqRC3A4rdaSjg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '*'
+ react-native: '*'
+ scheduler: '>=0.19.0'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+
+ use-deep-compare@1.3.0:
+ resolution: {integrity: sha512-94iG+dEdEP/Sl3WWde+w9StIunlV8Dgj+vkt5wTwMoFQLaijiEZSXXy8KtcStpmEDtIptRJiNeD4ACTtVvnIKA==}
+ peerDependencies:
+ react: '>=16.8.0'
+
+ use-sync-external-store@1.2.2:
+ resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+
+ which-builtin-type@1.1.4:
+ resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+
+ which-typed-array@1.1.15:
+ resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
+ engines: {node: '>= 0.4'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@2.5.1:
+ resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ zustand-x@3.0.4:
+ resolution: {integrity: sha512-dVD8WUEpR/0mMdLah9j8i+r6PMAq9Ii2u+BX/9Bn4MHRt8sSnRQ90YMUlTVonZYAHGb2UHZwPpE2gMb8GtYDDw==}
+ peerDependencies:
+ zustand: '>=4.3.9'
+
+ zustand@4.5.5:
+ resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==}
+ engines: {node: '>=12.7.0'}
+ peerDependencies:
+ '@types/react': '>=16.8'
+ immer: '>=9.0.6'
+ react: '>=16.8'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+
+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
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)':
+ dependencies:
+ eslint: 8.57.1
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.11.1': {}
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.7
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.1': {}
+
+ '@floating-ui/core@1.6.8':
+ dependencies:
+ '@floating-ui/utils': 0.2.8
+
+ '@floating-ui/dom@1.6.11':
+ dependencies:
+ '@floating-ui/core': 1.6.8
+ '@floating-ui/utils': 0.2.8
+
+ '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@floating-ui/dom': 1.6.11
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@floating-ui/utils@0.2.8': {}
+
+ '@humanwhocodes/config-array@0.13.0':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.7
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@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
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@juggle/resize-observer@3.4.0': {}
+
+ '@next/env@14.2.12': {}
+
+ '@next/eslint-plugin-next@14.2.12':
+ dependencies:
+ glob: 10.3.10
+
+ '@next/swc-darwin-arm64@14.2.12':
+ optional: true
+
+ '@next/swc-darwin-x64@14.2.12':
+ optional: true
+
+ '@next/swc-linux-arm64-gnu@14.2.12':
+ optional: true
+
+ '@next/swc-linux-arm64-musl@14.2.12':
+ optional: true
+
+ '@next/swc-linux-x64-gnu@14.2.12':
+ optional: true
+
+ '@next/swc-linux-x64-musl@14.2.12':
+ optional: true
+
+ '@next/swc-win32-arm64-msvc@14.2.12':
+ optional: true
+
+ '@next/swc-win32-ia32-msvc@14.2.12':
+ optional: true
+
+ '@next/swc-win32-x64-msvc@14.2.12':
+ optional: true
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@nolyfill/is-core-module@1.0.39': {}
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.1.1': {}
+
+ '@radix-ui/primitive@1.1.0': {}
+
+ '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.7
+
+ '@radix-ui/react-context@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.7
+
+ '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-id@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.7
+
+ '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/rect': 1.1.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-slot@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.7
+
+ '@radix-ui/react-tooltip@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-id': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.7
+
+ '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
'@types/react': 18.3.7
+
+ '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.7)(react@18.3.1)
react: 18.3.1
- dev: false
+ optionalDependencies:
+ '@types/react': 18.3.7
- /@radix-ui/react-use-size@1.1.0(@types/react@18.3.7)(react@18.3.1):
- resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
- peerDependencies:
- '@types/react': '*'
- react: '*'
- peerDependenciesMeta:
- '@types/react':
- optional: true
+ '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.7)(react@18.3.1)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
'@types/react': 18.3.7
+
+ '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.7)(react@18.3.1)':
+ dependencies:
+ '@radix-ui/rect': 1.1.0
react: 18.3.1
- dev: false
+ optionalDependencies:
+ '@types/react': 18.3.7
- /@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: '*'
- react-dom: '*'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
+ '@radix-ui/react-use-size@1.1.0(@types/react@18.3.7)(react@18.3.1)':
dependencies:
- '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.7)(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
'@types/react': 18.3.7
- '@types/react-dom': 18.3.0
+
+ '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- dev: false
+ optionalDependencies:
+ '@types/react': 18.3.7
+ '@types/react-dom': 18.3.0
- /@radix-ui/rect@1.1.0:
- resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
- dev: false
+ '@radix-ui/rect@1.1.0': {}
- /@react-dnd/asap@5.0.2:
- resolution: {integrity: sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==}
- dev: false
+ '@react-dnd/asap@5.0.2': {}
- /@react-dnd/invariant@4.0.2:
- resolution: {integrity: sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==}
- dev: false
+ '@react-dnd/invariant@4.0.2': {}
- /@react-dnd/shallowequal@4.0.2:
- resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==}
- dev: false
+ '@react-dnd/shallowequal@4.0.2': {}
- /@rtsao/scc@1.1.0:
- resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- dev: true
+ '@rtsao/scc@1.1.0': {}
- /@rushstack/eslint-patch@1.10.4:
- resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
- dev: true
+ '@rushstack/eslint-patch@1.10.4': {}
- /@swc/counter@0.1.3:
- resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- dev: false
+ '@swc/counter@0.1.3': {}
- /@swc/helpers@0.5.5:
- resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
+ '@swc/helpers@0.5.5':
dependencies:
'@swc/counter': 0.1.3
tslib: 2.7.0
- dev: false
- /@types/json5@0.0.29:
- resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
- dev: true
+ '@types/json5@0.0.29': {}
- /@types/node@22.5.5:
- resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==}
+ '@types/node@22.5.5':
dependencies:
undici-types: 6.19.8
- /@types/prop-types@15.7.13:
- resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
+ '@types/prop-types@15.7.13': {}
- /@types/react-dom@18.3.0:
- resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
+ '@types/react-dom@18.3.0':
dependencies:
'@types/react': 18.3.7
- /@types/react@18.3.7:
- resolution: {integrity: sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==}
+ '@types/react@18.3.7':
dependencies:
'@types/prop-types': 15.7.13
csstype: 3.1.3
- /@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0)(eslint@8.57.1)(typescript@5.6.2):
- resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ '@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)':
dependencies:
'@eslint-community/regexpp': 4.11.1
'@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
@@ -956,20 +2847,12 @@ packages:
ignore: 5.3.2
natural-compare: 1.4.0
ts-api-utils: 1.3.0(typescript@5.6.2)
+ optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- dev: true
- /@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2):
- resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ '@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2)':
dependencies:
'@typescript-eslint/scope-manager': 8.6.0
'@typescript-eslint/types': 8.6.0
@@ -977,51 +2860,31 @@ packages:
'@typescript-eslint/visitor-keys': 8.6.0
debug: 4.3.7
eslint: 8.57.1
+ optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- dev: true
- /@typescript-eslint/scope-manager@8.6.0:
- resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/scope-manager@8.6.0':
dependencies:
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/visitor-keys': 8.6.0
- dev: true
- /@typescript-eslint/type-utils@8.6.0(eslint@8.57.1)(typescript@5.6.2):
- resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ '@typescript-eslint/type-utils@8.6.0(eslint@8.57.1)(typescript@5.6.2)':
dependencies:
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
'@typescript-eslint/utils': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
debug: 4.3.7
ts-api-utils: 1.3.0(typescript@5.6.2)
+ optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- eslint
- supports-color
- dev: true
- /@typescript-eslint/types@8.6.0:
- resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dev: true
+ '@typescript-eslint/types@8.6.0': {}
- /@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2):
- resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
+ '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2)':
dependencies:
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/visitor-keys': 8.6.0
@@ -1031,16 +2894,12 @@ packages:
minimatch: 9.0.5
semver: 7.6.3
ts-api-utils: 1.3.0(typescript@5.6.2)
+ optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- dev: true
- /@typescript-eslint/utils@8.6.0(eslint@8.57.1)(typescript@5.6.2):
- resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
+ '@typescript-eslint/utils@8.6.0(eslint@8.57.1)(typescript@5.6.2)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@typescript-eslint/scope-manager': 8.6.0
@@ -1050,85 +2909,57 @@ packages:
transitivePeerDependencies:
- supports-color
- typescript
- dev: true
- /@typescript-eslint/visitor-keys@8.6.0:
- resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/visitor-keys@8.6.0':
dependencies:
'@typescript-eslint/types': 8.6.0
eslint-visitor-keys: 3.4.3
- dev: true
- /@udecode/cn@38.0.1(@types/react@18.3.7)(class-variance-authority@0.7.0)(react-dom@18.3.1)(react@18.3.1)(tailwind-merge@2.5.2):
- resolution: {integrity: sha512-9w0yzIGX/2KAZyYDXJCPJJIUdAGnneH8nYlpFAFjFgNrNhBqgCp1H9T0Cl8LKeDHkjKfP+Xe59ttuCd8ieqeTg==}
- peerDependencies:
- class-variance-authority: '>=0.7.0'
- react: '*'
- react-dom: '*'
- tailwind-merge: '>=2.2.0'
+ '@udecode/cn@38.0.1(@types/react@18.3.7)(class-variance-authority@0.7.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwind-merge@2.5.2)':
dependencies:
- '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
+ '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
class-variance-authority: 0.7.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tailwind-merge: 2.5.2
transitivePeerDependencies:
- '@types/react'
- dev: false
- /@udecode/plate-common@38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0):
- resolution: {integrity: sha512-xmo4jrHZT2mTvYLsHAs4JHfBwMUwMQIURX8rF33gAVmUcP+piswaDhIfsr5OXxwc82pWCwGxv4343VHz2NLdbA==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
- slate-hyperscript: '>=0.66.0'
- slate-react: '>=0.108.0'
+ '@udecode/plate-common@38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)':
dependencies:
- '@udecode/plate-core': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/plate-utils': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1)(react@18.3.1)
- '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@udecode/slate': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
- '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/slate-utils': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
+ '@udecode/plate-core': 38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/plate-utils': 38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/slate': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.109.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-utils': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
'@udecode/utils': 37.0.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
slate-hyperscript: 0.100.0(slate@0.103.0)
- slate-react: 0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0)
+ slate-react: 0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0)
transitivePeerDependencies:
- '@types/react'
- immer
- react-native
- scheduler
- dev: false
- /@udecode/plate-core@38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0):
- resolution: {integrity: sha512-AzQO42bZyRtZuD5pnJ2aoiN9sN+Pn5sLB48t34d7rc22il/9urUgocmaxAlJRqJmgbdCfk8cVFzFMm5wM46RVQ==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
- slate-hyperscript: '>=0.66.0'
- slate-react: '>=0.108.0'
+ '@udecode/plate-core@38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)':
dependencies:
- '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1)(react@18.3.1)
- '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@udecode/slate': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
- '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/slate-utils': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
+ '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/slate': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.109.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-utils': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
'@udecode/utils': 37.0.0
clsx: 2.1.1
is-hotkey: 0.2.0
jotai: 2.8.4(@types/react@18.3.7)(react@18.3.1)
- jotai-optics: 0.4.0(jotai@2.8.4)(optics-ts@2.4.1)
- jotai-x: 1.2.4(@types/react@18.3.7)(jotai@2.8.4)(react@18.3.1)
+ jotai-optics: 0.4.0(jotai@2.8.4(@types/react@18.3.7)(react@18.3.1))(optics-ts@2.4.1)
+ jotai-x: 1.2.4(@types/react@18.3.7)(jotai@2.8.4(@types/react@18.3.7)(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
nanoid: 3.3.7
optics-ts: 2.4.1
@@ -1137,32 +2968,23 @@ packages:
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
slate-hyperscript: 0.100.0(slate@0.103.0)
- slate-react: 0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0)
+ slate-react: 0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0)
use-deep-compare: 1.3.0(react@18.3.1)
- zustand: 4.5.5(@types/react@18.3.7)(react@18.3.1)
- zustand-x: 3.0.4(react-dom@18.3.1)(react@18.3.1)(zustand@4.5.5)
+ zustand: 4.5.5(@types/react@18.3.7)(immer@10.1.1)(react@18.3.1)
+ zustand-x: 3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@4.5.5(@types/react@18.3.7)(immer@10.1.1)(react@18.3.1))
transitivePeerDependencies:
- '@types/react'
- immer
- react-native
- scheduler
- dev: false
- /@udecode/plate-utils@38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0):
- resolution: {integrity: sha512-G4VzdHbAv8Jm+1J3p9VNRu38Tl2TnCZbQT7omtLAl/XLQCxk69LX0kHKe/Vmh2nhSFuCtu2JRIYIYY18SyKTzQ==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
- slate-hyperscript: '>=0.66.0'
- slate-react: '>=0.110.0'
+ '@udecode/plate-utils@38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)':
dependencies:
- '@udecode/plate-core': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-hyperscript@0.100.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@udecode/slate': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
- '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-react@0.110.1)(slate@0.103.0)
- '@udecode/slate-utils': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
+ '@udecode/plate-core': 38.0.4(@types/react@18.3.7)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-history@0.109.0(slate@0.103.0))(slate-hyperscript@0.100.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/slate': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-react': 38.0.4(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.109.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)
+ '@udecode/slate-utils': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
'@udecode/utils': 37.0.0
clsx: 2.1.1
lodash: 4.17.21
@@ -1171,29 +2993,19 @@ packages:
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
slate-hyperscript: 0.100.0(slate@0.103.0)
- slate-react: 0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0)
+ slate-react: 0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0)
transitivePeerDependencies:
- '@types/react'
- immer
- react-native
- scheduler
- dev: false
- /@udecode/react-hotkeys@37.0.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-3ZV5LiaTnKyhXwN6U0NE2cofNsNN2IPMkNCDntbSIIRLYmI+o6LRkDwAucSNh/BIdNXfvxscsR04RYyIwjGbJw==}
- peerDependencies:
- react: '*'
- react-dom: '*'
+ '@udecode/react-hotkeys@37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- dev: false
- /@udecode/react-utils@38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-flUBUNmTgaSi3N2qK4+Dv962d4VKiVYn0S6eQ1lAwofSZ70I2PtOGdFiCilSkCD9tq4T4I2ez0YVTgJB0UW2iw==}
- peerDependencies:
- react: '*'
- react-dom: '*'
+ '@udecode/react-utils@38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/react-slot': 1.1.0(@types/react@18.3.7)(react@18.3.1)
'@udecode/utils': 37.0.0
@@ -1202,137 +3014,86 @@ packages:
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- dev: false
- /@udecode/slate-react@38.0.4(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)(slate-history@0.109.0)(slate-react@0.110.1)(slate@0.103.0):
- resolution: {integrity: sha512-JjwrQSEvniNVKIO5vkfbR6r7DYmURH/hUFEpDpBMvciO7YDlS6ONsP3dV7cngWKpDFLsJhrr8JgVNH0uDMACTQ==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
- slate-react: '>=0.108.0'
+ '@udecode/slate-react@38.0.4(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-history@0.109.0(slate@0.103.0))(slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0))(slate@0.103.0)':
dependencies:
- '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1)(react@18.3.1)
- '@udecode/slate': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
+ '@udecode/react-utils': 38.0.1(@types/react@18.3.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@udecode/slate': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
'@udecode/utils': 37.0.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
- slate-react: 0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0)
+ slate-react: 0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0)
transitivePeerDependencies:
- '@types/react'
- dev: false
- /@udecode/slate-utils@38.0.4(slate-history@0.109.0)(slate@0.103.0):
- resolution: {integrity: sha512-7Dwu1fLEoqs9OJ9ZsPbx1G4STHZ91SDc+wCEOgAclMUrr9b1HBErJ9E6Svqp63hicXcUd2du2qSdSVTlyw7mGg==}
- peerDependencies:
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
+ '@udecode/slate-utils@38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)':
dependencies:
- '@udecode/slate': 38.0.4(slate-history@0.109.0)(slate@0.103.0)
+ '@udecode/slate': 38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)
'@udecode/utils': 37.0.0
lodash: 4.17.21
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
- dev: false
- /@udecode/slate@38.0.4(slate-history@0.109.0)(slate@0.103.0):
- resolution: {integrity: sha512-PlnavxtTd4xIqC/HdNl/nebMUogBjXgq1WyiH1mCXBNzMRuTpss7ByhXOr/SO67h6CKpaeGc1kf3dqZsHQWHZw==}
- peerDependencies:
- slate: '>=0.103.0'
- slate-history: '>=0.93.0'
+ '@udecode/slate@38.0.4(slate-history@0.109.0(slate@0.103.0))(slate@0.103.0)':
dependencies:
'@udecode/utils': 37.0.0
slate: 0.103.0
slate-history: 0.109.0(slate@0.103.0)
- dev: false
- /@udecode/utils@37.0.0:
- resolution: {integrity: sha512-30ixi2pznIXyIqpFocX+X5Sj38js+wZ0RLY14eZv1C1zwWo5BxSuJfzpGQTvGcLPJnij019tEpmGH61QdDxtrQ==}
- dev: false
+ '@udecode/utils@37.0.0': {}
- /@ungap/structured-clone@1.2.0:
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ '@ungap/structured-clone@1.2.0': {}
- /acorn-jsx@5.3.2(acorn@8.12.1):
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ acorn-jsx@5.3.2(acorn@8.12.1):
dependencies:
acorn: 8.12.1
- /acorn@8.12.1:
- resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
+ acorn@8.12.1: {}
- /ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@6.12.6:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- /ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
+ ansi-regex@5.0.1: {}
- /ansi-regex@6.1.0:
- resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
- engines: {node: '>=12'}
+ ansi-regex@6.1.0: {}
- /ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
+ ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
- /ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
+ ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
- /ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
+ ansi-styles@6.2.1: {}
- /any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ any-promise@1.3.0: {}
- /anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
+ anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
- /arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ arg@5.0.2: {}
- /argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ argparse@2.0.1: {}
- /aria-query@5.1.3:
- resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+ aria-query@5.1.3:
dependencies:
deep-equal: 2.2.3
- dev: true
- /array-buffer-byte-length@1.0.1:
- resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
- engines: {node: '>= 0.4'}
+ array-buffer-byte-length@1.0.1:
dependencies:
call-bind: 1.0.7
is-array-buffer: 3.0.4
- dev: true
- /array-includes@3.1.8:
- resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
- engines: {node: '>= 0.4'}
+ array-includes@3.1.8:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -1340,11 +3101,8 @@ packages:
es-object-atoms: 1.0.0
get-intrinsic: 1.2.4
is-string: 1.0.7
- dev: true
- /array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
+ array.prototype.findlast@1.2.5:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -1352,11 +3110,8 @@ packages:
es-errors: 1.3.0
es-object-atoms: 1.0.0
es-shim-unscopables: 1.0.2
- dev: true
- /array.prototype.findlastindex@1.2.5:
- resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
- engines: {node: '>= 0.4'}
+ array.prototype.findlastindex@1.2.5:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -1364,42 +3119,30 @@ packages:
es-errors: 1.3.0
es-object-atoms: 1.0.0
es-shim-unscopables: 1.0.2
- dev: true
- /array.prototype.flat@1.3.2:
- resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
- engines: {node: '>= 0.4'}
+ array.prototype.flat@1.3.2:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
es-shim-unscopables: 1.0.2
- dev: true
- /array.prototype.flatmap@1.3.2:
- resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
- engines: {node: '>= 0.4'}
+ array.prototype.flatmap@1.3.2:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
es-shim-unscopables: 1.0.2
- dev: true
- /array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
+ array.prototype.tosorted@1.1.4:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
es-errors: 1.3.0
es-shim-unscopables: 1.0.2
- dev: true
- /arraybuffer.prototype.slice@1.0.3:
- resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
- engines: {node: '>= 0.4'}
+ arraybuffer.prototype.slice@1.0.3:
dependencies:
array-buffer-byte-length: 1.0.1
call-bind: 1.0.7
@@ -1409,18 +3152,10 @@ packages:
get-intrinsic: 1.2.4
is-array-buffer: 3.0.4
is-shared-array-buffer: 1.0.3
- dev: true
- /ast-types-flow@0.0.8:
- resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
- dev: true
+ ast-types-flow@0.0.8: {}
- /autoprefixer@10.4.20(postcss@8.4.47):
- resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
+ autoprefixer@10.4.20(postcss@8.4.47):
dependencies:
browserslist: 4.23.3
caniuse-lite: 1.0.30001660
@@ -1429,106 +3164,69 @@ packages:
picocolors: 1.1.0
postcss: 8.4.47
postcss-value-parser: 4.2.0
- dev: true
- /available-typed-arrays@1.0.7:
- resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
- engines: {node: '>= 0.4'}
+ available-typed-arrays@1.0.7:
dependencies:
possible-typed-array-names: 1.0.0
- dev: true
- /axe-core@4.10.0:
- resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==}
- engines: {node: '>=4'}
- dev: true
+ axe-core@4.10.0: {}
- /axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
- dev: true
+ axobject-query@4.1.0: {}
- /balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ balanced-match@1.0.2: {}
- /binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
+ binary-extensions@2.3.0: {}
- /brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- /brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@2.0.1:
dependencies:
balanced-match: 1.0.2
- /braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
+ braces@3.0.3:
dependencies:
fill-range: 7.1.1
- /browserslist@4.23.3:
- resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
+ browserslist@4.23.3:
dependencies:
caniuse-lite: 1.0.30001660
electron-to-chromium: 1.5.25
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
- /busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
+ busboy@1.6.0:
dependencies:
streamsearch: 1.1.0
- dev: false
- /call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
+ call-bind@1.0.7:
dependencies:
es-define-property: 1.0.0
es-errors: 1.3.0
function-bind: 1.1.2
get-intrinsic: 1.2.4
set-function-length: 1.2.2
- dev: true
- /callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
+ callsites@3.1.0: {}
- /camelcase-css@2.0.1:
- resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
- engines: {node: '>= 6'}
+ camelcase-css@2.0.1: {}
- /caniuse-lite@1.0.30001660:
- resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==}
+ caniuse-lite@1.0.30001660: {}
- /chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
+ 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:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
+ chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
- /chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
+ chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
braces: 3.0.3
@@ -1540,129 +3238,75 @@ packages:
optionalDependencies:
fsevents: 2.3.3
- /class-variance-authority@0.7.0:
- resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
+ class-variance-authority@0.7.0:
dependencies:
clsx: 2.0.0
- dev: false
- /client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
- dev: false
+ client-only@0.0.1: {}
- /clsx@2.0.0:
- resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
- engines: {node: '>=6'}
- dev: false
+ clsx@2.0.0: {}
- /clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
- dev: false
+ clsx@2.1.1: {}
- /color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ color-convert@1.9.3:
dependencies:
color-name: 1.1.3
- /color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
+ color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- /color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ color-name@1.1.3: {}
- /color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ color-name@1.1.4: {}
- /commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
+ commander@4.1.1: {}
- /compute-scroll-into-view@3.1.0:
- resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
- dev: false
+ compute-scroll-into-view@3.1.0: {}
- /concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ concat-map@0.0.1: {}
- /convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ convert-source-map@2.0.0: {}
- /cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
+ cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- /cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
+ cssesc@3.0.0: {}
- /csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ csstype@3.1.3: {}
- /damerau-levenshtein@1.0.8:
- resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
- dev: true
+ damerau-levenshtein@1.0.8: {}
- /data-view-buffer@1.0.1:
- resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==}
- engines: {node: '>= 0.4'}
+ data-view-buffer@1.0.1:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
is-data-view: 1.0.1
- dev: true
- /data-view-byte-length@1.0.1:
- resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==}
- engines: {node: '>= 0.4'}
+ data-view-byte-length@1.0.1:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
is-data-view: 1.0.1
- dev: true
- /data-view-byte-offset@1.0.0:
- resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==}
- engines: {node: '>= 0.4'}
+ data-view-byte-offset@1.0.0:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
is-data-view: 1.0.1
- dev: true
- /debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
+ debug@3.2.7:
dependencies:
ms: 2.1.3
- dev: true
- /debug@4.3.7:
- resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
+ debug@4.3.7:
dependencies:
ms: 2.1.3
- /deep-equal@2.2.3:
- resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
- engines: {node: '>= 0.4'}
+ deep-equal@2.2.3:
dependencies:
array-buffer-byte-length: 1.0.1
call-bind: 1.0.7
@@ -1682,95 +3326,61 @@ packages:
which-boxed-primitive: 1.0.2
which-collection: 1.0.2
which-typed-array: 1.1.15
- dev: true
- /deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deep-is@0.1.4: {}
- /define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
+ define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.0
es-errors: 1.3.0
gopd: 1.0.1
- dev: true
- /define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
+ define-properties@1.2.1:
dependencies:
define-data-property: 1.1.4
has-property-descriptors: 1.0.2
object-keys: 1.1.1
- dev: true
- /dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
- dev: false
+ dequal@2.0.3: {}
- /didyoumean@1.2.2:
- resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ didyoumean@1.2.2: {}
- /direction@1.0.4:
- resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==}
- hasBin: true
- dev: false
+ direction@1.0.4: {}
- /dlv@1.1.3:
- resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ dlv@1.1.3: {}
- /dnd-core@16.0.1:
- resolution: {integrity: sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==}
+ dnd-core@16.0.1:
dependencies:
'@react-dnd/asap': 5.0.2
'@react-dnd/invariant': 4.0.2
redux: 4.2.1
- dev: false
- /doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
+ doctrine@2.1.0:
dependencies:
esutils: 2.0.3
- dev: true
- /doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
+ doctrine@3.0.0:
dependencies:
esutils: 2.0.3
- /eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ eastasianwidth@0.2.0: {}
- /electron-to-chromium@1.5.25:
- resolution: {integrity: sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==}
+ electron-to-chromium@1.5.25: {}
- /emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ emoji-regex@8.0.0: {}
- /emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ emoji-regex@9.2.2: {}
- /encoding@0.1.13:
- resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+ encoding@0.1.13:
dependencies:
iconv-lite: 0.6.3
- dev: true
- /enhanced-resolve@5.17.1:
- resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
- engines: {node: '>=10.13.0'}
+ enhanced-resolve@5.17.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.2.1
- dev: true
- /es-abstract@1.23.3:
- resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
- engines: {node: '>= 0.4'}
+ es-abstract@1.23.3:
dependencies:
array-buffer-byte-length: 1.0.1
arraybuffer.prototype.slice: 1.0.3
@@ -1818,22 +3428,14 @@ packages:
typed-array-length: 1.0.6
unbox-primitive: 1.0.2
which-typed-array: 1.1.15
- dev: true
- /es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
+ es-define-property@1.0.0:
dependencies:
get-intrinsic: 1.2.4
- dev: true
- /es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
- dev: true
+ es-errors@1.3.0: {}
- /es-get-iterator@1.1.3:
- resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ es-get-iterator@1.1.3:
dependencies:
call-bind: 1.0.7
get-intrinsic: 1.2.4
@@ -1844,11 +3446,8 @@ packages:
is-string: 1.0.7
isarray: 2.0.5
stop-iteration-iterator: 1.0.0
- dev: true
- /es-iterator-helpers@1.0.19:
- resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==}
- engines: {node: '>= 0.4'}
+ es-iterator-helpers@1.0.19:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -1864,168 +3463,98 @@ packages:
internal-slot: 1.0.7
iterator.prototype: 1.1.2
safe-array-concat: 1.1.2
- dev: true
- /es-object-atoms@1.0.0:
- resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
- engines: {node: '>= 0.4'}
+ es-object-atoms@1.0.0:
dependencies:
es-errors: 1.3.0
- dev: true
- /es-set-tostringtag@2.0.3:
- resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
- engines: {node: '>= 0.4'}
+ es-set-tostringtag@2.0.3:
dependencies:
get-intrinsic: 1.2.4
has-tostringtag: 1.0.2
hasown: 2.0.2
- dev: true
- /es-shim-unscopables@1.0.2:
- resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+ es-shim-unscopables@1.0.2:
dependencies:
hasown: 2.0.2
- dev: true
- /es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
+ es-to-primitive@1.2.1:
dependencies:
is-callable: 1.2.7
is-date-object: 1.0.5
is-symbol: 1.0.4
- dev: true
- /escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
+ escalade@3.2.0: {}
- /escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
+ escape-string-regexp@1.0.5: {}
- /escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
+ escape-string-regexp@4.0.0: {}
- /eslint-config-next@14.2.12(eslint@8.57.1)(typescript@5.6.2):
- resolution: {integrity: sha512-fzUIlF6Ng1cUFFd013wn9H3YhKe3vV/cZBC0Ec9S64q/wGoTq0HlASA7WgiOwDAISSbzkLprInLiIMu6U8bqEw==}
- peerDependencies:
- eslint: ^7.23.0 || ^8.0.0
- typescript: '>=3.3.1'
- peerDependenciesMeta:
- typescript:
- optional: true
+ eslint-config-next@14.2.12(eslint@8.57.1)(typescript@5.6.2):
dependencies:
'@next/eslint-plugin-next': 14.2.12
'@rushstack/eslint-patch': 1.10.4
- '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0)(eslint@8.57.1)(typescript@5.6.2)
+ '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)
'@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1)
- eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1)
eslint-plugin-react: 7.36.1(eslint@8.57.1)
eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
+ optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- eslint-import-resolver-webpack
- eslint-plugin-import-x
- supports-color
- dev: true
- /eslint-config-prettier@9.1.0(eslint@8.57.1):
- resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
+ eslint-config-prettier@9.1.0(eslint@8.57.1):
dependencies:
eslint: 8.57.1
- /eslint-import-resolver-node@0.3.9:
- resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+ eslint-import-resolver-node@0.3.9:
dependencies:
debug: 3.2.7
is-core-module: 2.15.1
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- dev: true
- /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1):
- resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
+ eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.3.7
enhanced-resolve: 5.17.1
eslint: 8.57.1
- eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
- eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
+ eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1)
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.2.1
is-glob: 4.0.3
+ optionalDependencies:
+ eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
- eslint-import-resolver-webpack
- supports-color
- dev: true
- /eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1):
- resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
+ eslint-module-utils@2.11.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1):
dependencies:
- '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
- dev: true
- /eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1):
- resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
+ eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1):
dependencies:
'@rtsao/scc': 1.1.0
- '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
array.prototype.flat: 1.3.2
@@ -2034,7 +3563,7 @@ packages:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
+ eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.30.0)(eslint@8.57.1))(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -2044,17 +3573,14 @@ packages:
object.values: 1.2.0
semver: 6.3.1
tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.6.0(eslint@8.57.1)(typescript@5.6.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- dev: true
- /eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1):
- resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+ eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1):
dependencies:
aria-query: 5.1.3
array-includes: 3.1.8
@@ -2073,43 +3599,21 @@ packages:
object.fromentries: 2.0.8
safe-regex-test: 1.0.3
string.prototype.includes: 2.0.0
- dev: true
- /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.3.3):
- resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- '@types/eslint': '>=8.0.0'
- eslint: '>=8.0.0'
- eslint-config-prettier: '*'
- prettier: '>=3.0.0'
- peerDependenciesMeta:
- '@types/eslint':
- optional: true
- eslint-config-prettier:
- optional: true
+ 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
- eslint-config-prettier: 9.1.0(eslint@8.57.1)
prettier: 3.3.3
prettier-linter-helpers: 1.0.0
synckit: 0.9.1
- dev: false
+ optionalDependencies:
+ eslint-config-prettier: 9.1.0(eslint@8.57.1)
- /eslint-plugin-react-hooks@4.6.2(eslint@8.57.1):
- resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
+ eslint-plugin-react-hooks@4.6.2(eslint@8.57.1):
dependencies:
eslint: 8.57.1
- dev: true
- /eslint-plugin-react@7.36.1(eslint@8.57.1):
- resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+ eslint-plugin-react@7.36.1(eslint@8.57.1):
dependencies:
array-includes: 3.1.8
array.prototype.findlast: 1.2.5
@@ -2130,46 +3634,27 @@ packages:
semver: 6.3.1
string.prototype.matchall: 4.0.11
string.prototype.repeat: 1.0.0
- dev: true
- /eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.12):
- resolution: {integrity: sha512-gJAEHmCq2XFfUP/+vwEfEJ9igrPeZFg+skeMtsxquSQdxba9XRk5bn0Bp9jxG1VV9/wwPKi1g3ZjItu6MIjhNg==}
- engines: {node: '>=18.12.0'}
- peerDependencies:
- tailwindcss: ^3.4.0
+ eslint-plugin-tailwindcss@3.17.4(tailwindcss@3.4.12):
dependencies:
fast-glob: 3.3.2
postcss: 8.4.47
tailwindcss: 3.4.12
- dev: true
- /eslint-plugin-unused-imports@4.1.4(eslint@8.57.1):
- resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
- eslint: ^9.0.0 || ^8.0.0
- peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
- optional: true
+ eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1):
dependencies:
eslint: 8.57.1
- dev: true
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)
- /eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-scope@7.2.2:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
- /eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-visitor-keys@3.4.3: {}
- /eslint@8.57.1:
- resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
+ eslint@8.57.1:
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1)
'@eslint-community/regexpp': 4.11.1
@@ -2212,44 +3697,29 @@ packages:
transitivePeerDependencies:
- supports-color
- /espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ espree@9.6.1:
dependencies:
acorn: 8.12.1
acorn-jsx: 5.3.2(acorn@8.12.1)
eslint-visitor-keys: 3.4.3
- /esquery@1.6.0:
- resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
- engines: {node: '>=0.10'}
+ esquery@1.6.0:
dependencies:
estraverse: 5.3.0
- /esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
+ esrecurse@4.3.0:
dependencies:
estraverse: 5.3.0
- /estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
+ estraverse@5.3.0: {}
- /esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
+ esutils@2.0.3: {}
- /fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-deep-equal@3.1.3: {}
- /fast-diff@1.3.0:
- resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
- dev: false
+ fast-diff@1.3.0: {}
- /fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
+ fast-glob@3.3.2:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
@@ -2257,148 +3727,99 @@ packages:
merge2: 1.4.1
micromatch: 4.0.8
- /fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ fast-json-stable-stringify@2.1.0: {}
- /fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ fast-levenshtein@2.0.6: {}
- /fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ fastq@1.17.1:
dependencies:
reusify: 1.0.4
- /file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@6.0.1:
dependencies:
flat-cache: 3.2.0
- /fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
+ fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
- /find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
+ find-up@5.0.0:
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
- /flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@3.2.0:
dependencies:
flatted: 3.3.1
keyv: 4.5.4
rimraf: 3.0.2
- /flatted@3.3.1:
- resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+ flatted@3.3.1: {}
- /for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ for-each@0.3.3:
dependencies:
is-callable: 1.2.7
- dev: true
- /foreground-child@3.3.0:
- resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
- engines: {node: '>=14'}
+ foreground-child@3.3.0:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- /fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
- dev: true
+ fraction.js@4.3.7: {}
- /fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fs.realpath@1.0.0: {}
- /fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
- requiresBuild: true
+ fsevents@2.3.3:
optional: true
- /function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ function-bind@1.1.2: {}
- /function.prototype.name@1.1.6:
- resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
- engines: {node: '>= 0.4'}
+ function.prototype.name@1.1.6:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
functions-have-names: 1.2.3
- dev: true
- /functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
- dev: true
+ functions-have-names@1.2.3: {}
- /gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
+ gensync@1.0.0-beta.2: {}
- /get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
+ get-intrinsic@1.2.4:
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
has-proto: 1.0.3
has-symbols: 1.0.3
hasown: 2.0.2
- dev: true
- /get-symbol-description@1.0.2:
- resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
- engines: {node: '>= 0.4'}
+ get-symbol-description@1.0.2:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
- dev: true
- /get-tsconfig@4.8.1:
- resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+ get-tsconfig@4.8.1:
dependencies:
resolve-pkg-maps: 1.0.0
- dev: true
- /glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
+ glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
- /glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
+ glob-parent@6.0.2:
dependencies:
is-glob: 4.0.3
- /glob@10.3.10:
- resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
+ glob@10.3.10:
dependencies:
foreground-child: 3.3.0
jackspeak: 2.3.6
minimatch: 9.0.5
minipass: 7.1.2
path-scurry: 1.11.1
- dev: true
- /glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
- hasBin: true
+ glob@10.4.5:
dependencies:
foreground-child: 3.3.0
jackspeak: 3.4.3
@@ -2407,9 +3828,7 @@ packages:
package-json-from-dist: 1.0.0
path-scurry: 1.11.1
- /glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -2418,596 +3837,342 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
- /globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
+ globals@11.12.0: {}
- /globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
+ globals@13.24.0:
dependencies:
type-fest: 0.20.2
- /globalthis@1.0.4:
- resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
- engines: {node: '>= 0.4'}
+ globalthis@1.0.4:
dependencies:
define-properties: 1.2.1
gopd: 1.0.1
- dev: true
- /gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
- dev: true
- /graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ graceful-fs@4.2.11: {}
- /graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ graphemer@1.4.0: {}
- /has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
- dev: true
+ has-bigints@1.0.2: {}
- /has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
+ has-flag@3.0.0: {}
- /has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
+ has-flag@4.0.0: {}
- /has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ has-property-descriptors@1.0.2:
dependencies:
es-define-property: 1.0.0
- dev: true
- /has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
- dev: true
+ has-proto@1.0.3: {}
- /has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
- dev: true
+ has-symbols@1.0.3: {}
- /has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
+ has-tostringtag@1.0.2:
dependencies:
has-symbols: 1.0.3
- dev: true
- /hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
+ hasown@2.0.2:
dependencies:
function-bind: 1.1.2
- /hoist-non-react-statics@3.3.2:
- resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+ hoist-non-react-statics@3.3.2:
dependencies:
react-is: 16.13.1
- dev: false
- /iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
+ iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
- dev: true
- /ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
+ ignore@5.3.2: {}
- /immer@10.1.1:
- resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==}
- dev: false
+ immer@10.1.1: {}
- /import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
+ import-fresh@3.3.0:
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
- /imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
+ imurmurhash@0.1.4: {}
- /inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+ inflight@1.0.6:
dependencies:
once: 1.4.0
wrappy: 1.0.2
- /inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ inherits@2.0.4: {}
- /internal-slot@1.0.7:
- resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
- engines: {node: '>= 0.4'}
+ internal-slot@1.0.7:
dependencies:
es-errors: 1.3.0
hasown: 2.0.2
side-channel: 1.0.6
- dev: true
- /is-arguments@1.1.1:
- resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
- engines: {node: '>= 0.4'}
+ is-arguments@1.1.1:
dependencies:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- dev: true
- /is-array-buffer@3.0.4:
- resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
- engines: {node: '>= 0.4'}
+ is-array-buffer@3.0.4:
dependencies:
call-bind: 1.0.7
get-intrinsic: 1.2.4
- dev: true
- /is-async-function@2.0.0:
- resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
- engines: {node: '>= 0.4'}
+ is-async-function@2.0.0:
dependencies:
has-tostringtag: 1.0.2
- dev: true
- /is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ is-bigint@1.0.4:
dependencies:
has-bigints: 1.0.2
- dev: true
- /is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
+ is-binary-path@2.1.0:
dependencies:
binary-extensions: 2.3.0
- /is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
+ is-boolean-object@1.1.2:
dependencies:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- dev: true
- /is-bun-module@1.2.1:
- resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==}
+ is-bun-module@1.2.1:
dependencies:
semver: 7.6.3
- dev: true
- /is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
- dev: true
+ is-callable@1.2.7: {}
- /is-core-module@2.15.1:
- resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
- engines: {node: '>= 0.4'}
+ is-core-module@2.15.1:
dependencies:
hasown: 2.0.2
- /is-data-view@1.0.1:
- resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
- engines: {node: '>= 0.4'}
+ is-data-view@1.0.1:
dependencies:
is-typed-array: 1.1.13
- dev: true
- /is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
+ is-date-object@1.0.5:
dependencies:
has-tostringtag: 1.0.2
- dev: true
- /is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
+ is-extglob@2.1.1: {}
- /is-finalizationregistry@1.0.2:
- resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
+ is-finalizationregistry@1.0.2:
dependencies:
call-bind: 1.0.7
- dev: true
- /is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
+ is-fullwidth-code-point@3.0.0: {}
- /is-generator-function@1.0.10:
- resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
- engines: {node: '>= 0.4'}
+ is-generator-function@1.0.10:
dependencies:
has-tostringtag: 1.0.2
- dev: true
- /is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
+ is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- /is-hotkey@0.2.0:
- resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
- dev: false
+ is-hotkey@0.2.0: {}
- /is-map@2.0.3:
- resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
- engines: {node: '>= 0.4'}
- dev: true
+ is-map@2.0.3: {}
- /is-negative-zero@2.0.3:
- resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
- engines: {node: '>= 0.4'}
- dev: true
+ is-negative-zero@2.0.3: {}
- /is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
+ is-number-object@1.0.7:
dependencies:
has-tostringtag: 1.0.2
- dev: true
- /is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
+ is-number@7.0.0: {}
- /is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
+ is-path-inside@3.0.3: {}
- /is-plain-object@5.0.0:
- resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
- engines: {node: '>=0.10.0'}
- dev: false
+ is-plain-object@5.0.0: {}
- /is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
+ is-regex@1.1.4:
dependencies:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- dev: true
- /is-set@2.0.3:
- resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
- engines: {node: '>= 0.4'}
- dev: true
+ is-set@2.0.3: {}
- /is-shared-array-buffer@1.0.3:
- resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
- engines: {node: '>= 0.4'}
+ is-shared-array-buffer@1.0.3:
dependencies:
call-bind: 1.0.7
- dev: true
- /is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
+ is-string@1.0.7:
dependencies:
has-tostringtag: 1.0.2
- dev: true
- /is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
+ is-symbol@1.0.4:
dependencies:
has-symbols: 1.0.3
- dev: true
- /is-typed-array@1.1.13:
- resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
- engines: {node: '>= 0.4'}
+ is-typed-array@1.1.13:
dependencies:
which-typed-array: 1.1.15
- dev: true
- /is-weakmap@2.0.2:
- resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
- engines: {node: '>= 0.4'}
- dev: true
+ is-weakmap@2.0.2: {}
- /is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ is-weakref@1.0.2:
dependencies:
call-bind: 1.0.7
- dev: true
- /is-weakset@2.0.3:
- resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
- engines: {node: '>= 0.4'}
+ is-weakset@2.0.3:
dependencies:
call-bind: 1.0.7
get-intrinsic: 1.2.4
- dev: true
- /isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
- dev: true
+ isarray@2.0.5: {}
- /isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isexe@2.0.0: {}
- /iterator.prototype@1.1.2:
- resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+ iterator.prototype@1.1.2:
dependencies:
define-properties: 1.2.1
get-intrinsic: 1.2.4
has-symbols: 1.0.3
reflect.getprototypeof: 1.0.6
set-function-name: 2.0.2
- dev: true
- /jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
+ jackspeak@2.3.6:
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- dev: true
- /jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- /jiti@1.21.6:
- resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
- hasBin: true
+ jiti@1.21.6: {}
- /jotai-optics@0.4.0(jotai@2.8.4)(optics-ts@2.4.1):
- resolution: {integrity: sha512-osbEt9AgS55hC4YTZDew2urXKZkaiLmLqkTS/wfW5/l0ib8bmmQ7kBXSFaosV6jDDWSp00IipITcJARFHdp42g==}
- peerDependencies:
- jotai: '>=2.0.0'
- optics-ts: '>=2.0.0'
+ jotai-optics@0.4.0(jotai@2.8.4(@types/react@18.3.7)(react@18.3.1))(optics-ts@2.4.1):
dependencies:
jotai: 2.8.4(@types/react@18.3.7)(react@18.3.1)
optics-ts: 2.4.1
- dev: false
- /jotai-x@1.2.4(@types/react@18.3.7)(jotai@2.8.4)(react@18.3.1):
- resolution: {integrity: sha512-FyLrAR/ZDtmaWgif4cNRuJvMam/RSFv+B11/p4T427ws/T+8WhZzwmULwNogG6ZbZq+v1XpH6f9aN1lYqY5dLg==}
- peerDependencies:
- '@types/react': '>=17.0.0'
- jotai: '>=2.0.0'
- react: '*'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- react:
- optional: true
+ jotai-x@1.2.4(@types/react@18.3.7)(jotai@2.8.4(@types/react@18.3.7)(react@18.3.1))(react@18.3.1):
dependencies:
- '@types/react': 18.3.7
jotai: 2.8.4(@types/react@18.3.7)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.7
react: 18.3.1
- dev: false
- /jotai@2.8.4(@types/react@18.3.7)(react@18.3.1):
- resolution: {integrity: sha512-f6jwjhBJcDtpeauT2xH01gnqadKEySwwt1qNBLvAXcnojkmb76EdqRt05Ym8IamfHGAQz2qMKAwftnyjeSoHAA==}
- engines: {node: '>=12.20.0'}
- peerDependencies:
- '@types/react': '>=17.0.0'
- react: '*'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- react:
- optional: true
- dependencies:
+ jotai@2.8.4(@types/react@18.3.7)(react@18.3.1):
+ optionalDependencies:
'@types/react': 18.3.7
react: 18.3.1
- dev: false
- /js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ js-tokens@4.0.0: {}
- /js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
+ js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
- /jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
+ jsesc@2.5.2: {}
- /json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ json-buffer@3.0.1: {}
- /json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ json-schema-traverse@0.4.1: {}
- /json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ json-stable-stringify-without-jsonify@1.0.1: {}
- /json5@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
- hasBin: true
+ json5@1.0.2:
dependencies:
minimist: 1.2.8
- dev: true
- /json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
+ json5@2.2.3: {}
- /jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
+ jsx-ast-utils@3.3.5:
dependencies:
array-includes: 3.1.8
array.prototype.flat: 1.3.2
object.assign: 4.1.5
object.values: 1.2.0
- dev: true
- /keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
- /language-subtag-registry@0.3.23:
- resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
- dev: true
+ language-subtag-registry@0.3.23: {}
- /language-tags@1.0.9:
- resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
- engines: {node: '>=0.10'}
+ language-tags@1.0.9:
dependencies:
language-subtag-registry: 0.3.23
- dev: true
- /levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
+ levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
- /lilconfig@2.1.0:
- resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
- engines: {node: '>=10'}
+ lilconfig@2.1.0: {}
- /lilconfig@3.1.2:
- resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
- engines: {node: '>=14'}
+ lilconfig@3.1.2: {}
- /lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ lines-and-columns@1.2.4: {}
- /locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
+ locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
- /lodash.mapvalues@4.6.0:
- resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==}
- dev: false
+ lodash.mapvalues@4.6.0: {}
- /lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ lodash.merge@4.6.2: {}
- /lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
- dev: false
+ lodash@4.17.21: {}
- /loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
+ loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
- /lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@10.4.3: {}
- /lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
- /lucide-react@0.441.0(react@18.3.1):
- resolution: {integrity: sha512-0vfExYtvSDhkC2lqg0zYVW1Uu9GsI4knuV9GP9by5z0Xhc4Zi5RejTxfz9LsjRmCyWVzHCJvxGKZWcRyvQCWVg==}
- peerDependencies:
- react: '*'
+ lucide-react@0.441.0(react@18.3.1):
dependencies:
react: 18.3.1
- dev: false
- /merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
+ merge2@1.4.1: {}
- /micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
+ micromatch@4.0.8:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
- /minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
- /minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
+ minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
- /minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- dev: true
+ minimist@1.2.8: {}
- /minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
+ minipass@7.1.2: {}
- /ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ ms@2.1.3: {}
- /mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ mz@2.7.0:
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
- /nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
+ nanoid@3.3.7: {}
- /natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ natural-compare@1.4.0: {}
- /next-themes@0.3.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==}
- peerDependencies:
- react: '*'
- react-dom: '*'
+ next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- dev: false
- /next@14.2.12(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==}
- engines: {node: '>=18.17.0'}
- hasBin: true
- peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
- react: '*'
- react-dom: '*'
- sass: ^1.3.0
- peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- '@playwright/test':
- optional: true
- sass:
- optional: true
+ next@14.2.12(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 14.2.12
'@swc/helpers': 0.5.5
@@ -3031,105 +4196,65 @@ packages:
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
- dev: false
- /node-releases@2.0.18:
- resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+ node-releases@2.0.18: {}
- /normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
+ normalize-path@3.0.0: {}
- /normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
- dev: true
+ normalize-range@0.1.2: {}
- /object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
+ object-assign@4.1.1: {}
- /object-hash@3.0.0:
- resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
- engines: {node: '>= 6'}
+ object-hash@3.0.0: {}
- /object-inspect@1.13.2:
- resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
- engines: {node: '>= 0.4'}
- dev: true
+ object-inspect@1.13.2: {}
- /object-is@1.1.6:
- resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
- engines: {node: '>= 0.4'}
+ object-is@1.1.6:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- dev: true
- /object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
- dev: true
+ object-keys@1.1.1: {}
- /object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
- engines: {node: '>= 0.4'}
+ object.assign@4.1.5:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
- dev: true
- /object.entries@1.1.8:
- resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
- engines: {node: '>= 0.4'}
+ object.entries@1.1.8:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-object-atoms: 1.0.0
- dev: true
- /object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
+ object.fromentries@2.0.8:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
es-object-atoms: 1.0.0
- dev: true
- /object.groupby@1.0.3:
- resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
- engines: {node: '>= 0.4'}
+ object.groupby@1.0.3:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
- dev: true
- /object.values@1.2.0:
- resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
- engines: {node: '>= 0.4'}
+ object.values@1.2.0:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-object-atoms: 1.0.0
- dev: true
- /once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ once@1.4.0:
dependencies:
wrappy: 1.0.2
- /optics-ts@2.4.1:
- resolution: {integrity: sha512-HaYzMHvC80r7U/LqAd4hQyopDezC60PO2qF5GuIwALut2cl5rK1VWHsqTp0oqoJJWjiv6uXKqsO+Q2OO0C3MmQ==}
- dev: false
+ optics-ts@2.4.1: {}
- /optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
+ optionator@0.9.4:
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
@@ -3138,268 +4263,156 @@ packages:
type-check: 0.4.0
word-wrap: 1.2.5
- /p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
+ p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
- /p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
+ p-locate@5.0.0:
dependencies:
p-limit: 3.1.0
- /package-json-from-dist@1.0.0:
- resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+ package-json-from-dist@1.0.0: {}
- /parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
+ parent-module@1.0.1:
dependencies:
callsites: 3.1.0
- /path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
+ path-exists@4.0.0: {}
- /path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
+ path-is-absolute@1.0.1: {}
- /path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ path-key@3.1.1: {}
- /path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ path-parse@1.0.7: {}
- /path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
+ path-scurry@1.11.1:
dependencies:
lru-cache: 10.4.3
minipass: 7.1.2
- /picocolors@1.1.0:
- resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+ picocolors@1.1.0: {}
- /picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
+ picomatch@2.3.1: {}
- /pify@2.3.0:
- resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
- engines: {node: '>=0.10.0'}
+ pify@2.3.0: {}
- /pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
- engines: {node: '>= 6'}
+ pirates@4.0.6: {}
- /possible-typed-array-names@1.0.0:
- resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
- engines: {node: '>= 0.4'}
- dev: true
+ possible-typed-array-names@1.0.0: {}
- /postcss-import@15.1.0(postcss@8.4.47):
- resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- postcss: ^8.0.0
+ postcss-import@15.1.0(postcss@8.4.47):
dependencies:
postcss: 8.4.47
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
- /postcss-js@4.0.1(postcss@8.4.47):
- resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
- engines: {node: ^12 || ^14 || >= 16}
- peerDependencies:
- postcss: ^8.4.21
+ postcss-js@4.0.1(postcss@8.4.47):
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.47
- /postcss-load-config@4.0.2(postcss@8.4.47):
- resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
- engines: {node: '>= 14'}
- peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- postcss:
- optional: true
- ts-node:
- optional: true
+ postcss-load-config@4.0.2(postcss@8.4.47):
dependencies:
lilconfig: 3.1.2
- postcss: 8.4.47
yaml: 2.5.1
+ optionalDependencies:
+ postcss: 8.4.47
- /postcss-nested@6.2.0(postcss@8.4.47):
- resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.2.14
+ postcss-nested@6.2.0(postcss@8.4.47):
dependencies:
postcss: 8.4.47
postcss-selector-parser: 6.1.2
- /postcss-selector-parser@6.1.2:
- resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
- engines: {node: '>=4'}
+ postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
- /postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ postcss-value-parser@4.2.0: {}
- /postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
+ postcss@8.4.31:
dependencies:
nanoid: 3.3.7
picocolors: 1.1.0
source-map-js: 1.2.1
- dev: false
- /postcss@8.4.47:
- resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
- engines: {node: ^10 || ^12 || >=14}
+ postcss@8.4.47:
dependencies:
nanoid: 3.3.7
picocolors: 1.1.0
source-map-js: 1.2.1
- /prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
+ prelude-ls@1.2.1: {}
- /prettier-linter-helpers@1.0.0:
- resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
- engines: {node: '>=6.0.0'}
+ prettier-linter-helpers@1.0.0:
dependencies:
fast-diff: 1.3.0
- dev: false
- /prettier@3.3.3:
- resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
- engines: {node: '>=14'}
- hasBin: true
+ prettier@3.3.3: {}
- /prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ prop-types@15.8.1:
dependencies:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
- dev: true
- /proxy-compare@2.6.0:
- resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==}
- dev: false
+ proxy-compare@2.6.0: {}
- /punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
+ punycode@2.3.1: {}
- /queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ queue-microtask@1.2.3: {}
- /react-dnd-html5-backend@16.0.1:
- resolution: {integrity: sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==}
+ react-dnd-html5-backend@16.0.1:
dependencies:
dnd-core: 16.0.1
- dev: false
- /react-dnd@16.0.1(@types/node@22.5.5)(@types/react@18.3.7)(react@18.3.1):
- resolution: {integrity: sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==}
- peerDependencies:
- '@types/hoist-non-react-statics': '>= 3.3.1'
- '@types/node': '>= 12'
- '@types/react': '>= 16'
- react: '*'
- peerDependenciesMeta:
- '@types/hoist-non-react-statics':
- optional: true
- '@types/node':
- optional: true
- '@types/react':
- optional: true
+ react-dnd@16.0.1(@types/node@22.5.5)(@types/react@18.3.7)(react@18.3.1):
dependencies:
'@react-dnd/invariant': 4.0.2
'@react-dnd/shallowequal': 4.0.2
- '@types/node': 22.5.5
- '@types/react': 18.3.7
dnd-core: 16.0.1
fast-deep-equal: 3.1.3
hoist-non-react-statics: 3.3.2
react: 18.3.1
- dev: false
+ optionalDependencies:
+ '@types/node': 22.5.5
+ '@types/react': 18.3.7
- /react-dom@18.3.1(react@18.3.1):
- resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
- peerDependencies:
- react: '*'
+ react-dom@18.3.1(react@18.3.1):
dependencies:
loose-envify: 1.4.0
react: 18.3.1
scheduler: 0.23.2
- dev: false
- /react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ react-is@16.13.1: {}
- /react-tracked@1.7.14(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-6UMlgQeRAGA+uyYzuQGm7kZB6ZQYFhc7sntgP7Oxwwd6M0Ud/POyb4K3QWT1eXvoifSa80nrAWnXWFGpOvbwkw==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- react-native: '*'
- scheduler: '>=0.19.0'
- peerDependenciesMeta:
- react-dom:
- optional: true
- react-native:
- optional: true
- scheduler:
- optional: true
+ react-tracked@1.7.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2):
dependencies:
proxy-compare: 2.6.0
react: 18.3.1
+ scheduler: 0.23.2
+ use-context-selector: 1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)
+ optionalDependencies:
react-dom: 18.3.1(react@18.3.1)
- use-context-selector: 1.4.4(react-dom@18.3.1)(react@18.3.1)
- dev: false
- /react@18.3.1:
- resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
- engines: {node: '>=0.10.0'}
+ react@18.3.1:
dependencies:
loose-envify: 1.4.0
- dev: false
- /read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ read-cache@1.0.0:
dependencies:
pify: 2.3.0
- /readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
+ readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
- /redux@4.2.1:
- resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==}
+ redux@4.2.1:
dependencies:
'@babel/runtime': 7.25.6
- dev: false
- /reflect.getprototypeof@1.0.6:
- resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
- engines: {node: '>= 0.4'}
+ reflect.getprototypeof@1.0.6:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -3408,111 +4421,70 @@ packages:
get-intrinsic: 1.2.4
globalthis: 1.0.4
which-builtin-type: 1.1.4
- dev: true
- /regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
- dev: false
+ regenerator-runtime@0.14.1: {}
- /regexp.prototype.flags@1.5.2:
- resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
- engines: {node: '>= 0.4'}
+ regexp.prototype.flags@1.5.2:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-errors: 1.3.0
set-function-name: 2.0.2
- dev: true
- /resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
+ resolve-from@4.0.0: {}
- /resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
- dev: true
+ resolve-pkg-maps@1.0.0: {}
- /resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
+ resolve@1.22.8:
dependencies:
is-core-module: 2.15.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- /resolve@2.0.0-next.5:
- resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
- hasBin: true
+ resolve@2.0.0-next.5:
dependencies:
is-core-module: 2.15.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- dev: true
- /reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ reusify@1.0.4: {}
- /rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
+ rimraf@3.0.2:
dependencies:
glob: 7.2.3
- /run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
- /safe-array-concat@1.1.2:
- resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
- engines: {node: '>=0.4'}
+ safe-array-concat@1.1.2:
dependencies:
call-bind: 1.0.7
get-intrinsic: 1.2.4
has-symbols: 1.0.3
isarray: 2.0.5
- dev: true
- /safe-regex-test@1.0.3:
- resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
- engines: {node: '>= 0.4'}
+ safe-regex-test@1.0.3:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
is-regex: 1.1.4
- dev: true
- /safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- dev: true
+ safer-buffer@2.1.2: {}
- /scheduler@0.23.2:
- resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+ scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0
- dev: false
- /scroll-into-view-if-needed@3.1.0:
- resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
+ scroll-into-view-if-needed@3.1.0:
dependencies:
compute-scroll-into-view: 3.1.0
- dev: false
- /semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
+ semver@6.3.1: {}
- /semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
- engines: {node: '>=10'}
- hasBin: true
- dev: true
+ semver@7.6.3: {}
- /set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
+ set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
es-errors: 1.3.0
@@ -3520,66 +4492,40 @@ packages:
get-intrinsic: 1.2.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
- dev: true
- /set-function-name@2.0.2:
- resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
- engines: {node: '>= 0.4'}
+ set-function-name@2.0.2:
dependencies:
define-data-property: 1.1.4
es-errors: 1.3.0
functions-have-names: 1.2.3
has-property-descriptors: 1.0.2
- dev: true
- /shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
- /shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ shebang-regex@3.0.0: {}
- /side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
+ side-channel@1.0.6:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
object-inspect: 1.13.2
- dev: true
- /signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
+ signal-exit@4.1.0: {}
- /slate-history@0.109.0(slate@0.103.0):
- resolution: {integrity: sha512-DHavPwrTTAEAV66eAocB3iQHEj65N6IVtbRK98ZuqGT0S44T3zXlhzY+5SZ7EPxRcoOYVt1dioRxXYM/+PmCiQ==}
- peerDependencies:
- slate: '>=0.65.3'
+ slate-history@0.109.0(slate@0.103.0):
dependencies:
is-plain-object: 5.0.0
slate: 0.103.0
- dev: false
- /slate-hyperscript@0.100.0(slate@0.103.0):
- resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==}
- peerDependencies:
- slate: '>=0.65.3'
+ slate-hyperscript@0.100.0(slate@0.103.0):
dependencies:
is-plain-object: 5.0.0
slate: 0.103.0
- dev: false
- /slate-react@0.110.1(react-dom@18.3.1)(react@18.3.1)(slate@0.103.0):
- resolution: {integrity: sha512-bx6J0PkY9A50O4w78k4NPqNOXGo49fmSbCRgr8OBDWKKo4BeSt9y3vGXCkQ/Mm4lQ8riyRKr3TrJXzqMY7lRZg==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- slate: '>=0.99.0'
+ slate-react@0.110.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate@0.103.0):
dependencies:
'@juggle/resize-observer': 3.4.0
direction: 1.0.4
@@ -3591,58 +4537,39 @@ packages:
scroll-into-view-if-needed: 3.1.0
slate: 0.103.0
tiny-invariant: 1.3.1
- dev: false
- /slate@0.103.0:
- resolution: {integrity: sha512-eCUOVqUpADYMZ59O37QQvUdnFG+8rin0OGQAXNHvHbQeVJ67Bu0spQbcy621vtf8GQUXTEQBlk6OP9atwwob4w==}
+ slate@0.103.0:
dependencies:
immer: 10.1.1
is-plain-object: 5.0.0
tiny-warning: 1.0.3
- dev: false
- /source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
+ source-map-js@1.2.1: {}
- /stop-iteration-iterator@1.0.0:
- resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
- engines: {node: '>= 0.4'}
+ stop-iteration-iterator@1.0.0:
dependencies:
internal-slot: 1.0.7
- dev: true
- /streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
- dev: false
+ streamsearch@1.1.0: {}
- /string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
+ string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- /string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
+ string-width@5.1.2:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- /string.prototype.includes@2.0.0:
- resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==}
+ string.prototype.includes@2.0.0:
dependencies:
define-properties: 1.2.1
es-abstract: 1.23.3
- dev: true
- /string.prototype.matchall@4.0.11:
- resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==}
- engines: {node: '>= 0.4'}
+ string.prototype.matchall@4.0.11:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -3656,85 +4583,51 @@ packages:
regexp.prototype.flags: 1.5.2
set-function-name: 2.0.2
side-channel: 1.0.6
- dev: true
- /string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+ string.prototype.repeat@1.0.0:
dependencies:
define-properties: 1.2.1
es-abstract: 1.23.3
- dev: true
- /string.prototype.trim@1.2.9:
- resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
- engines: {node: '>= 0.4'}
+ string.prototype.trim@1.2.9:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-abstract: 1.23.3
es-object-atoms: 1.0.0
- dev: true
- /string.prototype.trimend@1.0.8:
- resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
+ string.prototype.trimend@1.0.8:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-object-atoms: 1.0.0
- dev: true
- /string.prototype.trimstart@1.0.8:
- resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
- engines: {node: '>= 0.4'}
+ string.prototype.trimstart@1.0.8:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
es-object-atoms: 1.0.0
- dev: true
- /strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
+ strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
- /strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
- engines: {node: '>=12'}
+ strip-ansi@7.1.0:
dependencies:
ansi-regex: 6.1.0
- /strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
- dev: true
+ strip-bom@3.0.0: {}
- /strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
+ strip-json-comments@3.1.1: {}
- /styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.3.1):
- resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '*'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
+ styled-jsx@5.1.1(@babel/core@7.25.2)(react@18.3.1):
dependencies:
- '@babel/core': 7.25.2
client-only: 0.0.1
react: 18.3.1
- dev: false
+ optionalDependencies:
+ '@babel/core': 7.25.2
- /sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
+ sucrase@3.35.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
commander: 4.1.1
@@ -3744,46 +4637,28 @@ packages:
pirates: 4.0.6
ts-interface-checker: 0.1.13
- /supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
+ supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
- /supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
+ supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
- /supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
+ supports-preserve-symlinks-flag@1.0.0: {}
- /synckit@0.9.1:
- resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ synckit@0.9.1:
dependencies:
'@pkgr/core': 0.1.1
tslib: 2.7.0
- dev: false
- /tailwind-merge@2.5.2:
- resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==}
- dev: false
+ tailwind-merge@2.5.2: {}
- /tailwindcss-animate@1.0.7(tailwindcss@3.4.12):
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.12):
dependencies:
tailwindcss: 3.4.12
- dev: false
- /tailwindcss@3.4.12:
- resolution: {integrity: sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==}
- engines: {node: '>=14.0.0'}
- hasBin: true
+ tailwindcss@3.4.12:
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -3810,101 +4685,64 @@ packages:
transitivePeerDependencies:
- ts-node
- /tapable@2.2.1:
- resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
- engines: {node: '>=6'}
- dev: true
+ tapable@2.2.1: {}
- /text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ text-table@0.2.0: {}
- /thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
+ thenify-all@1.6.0:
dependencies:
thenify: 3.3.1
- /thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ thenify@3.3.1:
dependencies:
any-promise: 1.3.0
- /tiny-invariant@1.3.1:
- resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
- dev: false
+ tiny-invariant@1.3.1: {}
- /tiny-warning@1.0.3:
- resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
- dev: false
+ tiny-warning@1.0.3: {}
- /to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
+ to-fast-properties@2.0.0: {}
- /to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
+ to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- /ts-api-utils@1.3.0(typescript@5.6.2):
- resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
- engines: {node: '>=16'}
- peerDependencies:
- typescript: '>=4.2.0'
+ ts-api-utils@1.3.0(typescript@5.6.2):
dependencies:
typescript: 5.6.2
- dev: true
- /ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ ts-interface-checker@0.1.13: {}
- /tsconfig-paths@3.15.0:
- resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+ tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
json5: 1.0.2
minimist: 1.2.8
strip-bom: 3.0.0
- dev: true
- /tslib@2.7.0:
- resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
- dev: false
+ tslib@2.7.0: {}
- /type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
+ type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
- /type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
+ type-fest@0.20.2: {}
- /typed-array-buffer@1.0.2:
- resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
- engines: {node: '>= 0.4'}
+ typed-array-buffer@1.0.2:
dependencies:
call-bind: 1.0.7
es-errors: 1.3.0
is-typed-array: 1.1.13
- dev: true
- /typed-array-byte-length@1.0.1:
- resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
- engines: {node: '>= 0.4'}
+ typed-array-byte-length@1.0.1:
dependencies:
call-bind: 1.0.7
for-each: 0.3.3
gopd: 1.0.1
has-proto: 1.0.3
is-typed-array: 1.1.13
- dev: true
- /typed-array-byte-offset@1.0.2:
- resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
- engines: {node: '>= 0.4'}
+ typed-array-byte-offset@1.0.2:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.7
@@ -3912,11 +4750,8 @@ packages:
gopd: 1.0.1
has-proto: 1.0.3
is-typed-array: 1.1.13
- dev: true
- /typed-array-length@1.0.6:
- resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
- engines: {node: '>= 0.4'}
+ typed-array-length@1.0.6:
dependencies:
call-bind: 1.0.7
for-each: 0.3.3
@@ -3924,93 +4759,55 @@ packages:
has-proto: 1.0.3
is-typed-array: 1.1.13
possible-typed-array-names: 1.0.0
- dev: true
- /typescript@5.6.2:
- resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
- engines: {node: '>=14.17'}
- hasBin: true
- dev: true
+ typescript@5.6.2: {}
- /unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ unbox-primitive@1.0.2:
dependencies:
call-bind: 1.0.7
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
- dev: true
- /undici-types@6.19.8:
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+ undici-types@6.19.8: {}
- /update-browserslist-db@1.1.0(browserslist@4.23.3):
- resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
+ update-browserslist-db@1.1.0(browserslist@4.23.3):
dependencies:
browserslist: 4.23.3
escalade: 3.2.0
picocolors: 1.1.0
- /uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ uri-js@4.4.1:
dependencies:
punycode: 2.3.1
- /use-context-selector@1.4.4(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-pS790zwGxxe59GoBha3QYOwk8AFGp4DN6DOtH+eoqVmgBBRXVx4IlPDhJmmMiNQAgUaLlP+58aqRC3A4rdaSjg==}
- peerDependencies:
- react: '*'
- react-dom: '*'
- react-native: '*'
- scheduler: '>=0.19.0'
- peerDependenciesMeta:
- react-dom:
- optional: true
- react-native:
- optional: true
- scheduler:
- optional: true
+ use-context-selector@1.4.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2):
dependencies:
react: 18.3.1
+ scheduler: 0.23.2
+ optionalDependencies:
react-dom: 18.3.1(react@18.3.1)
- dev: false
- /use-deep-compare@1.3.0(react@18.3.1):
- resolution: {integrity: sha512-94iG+dEdEP/Sl3WWde+w9StIunlV8Dgj+vkt5wTwMoFQLaijiEZSXXy8KtcStpmEDtIptRJiNeD4ACTtVvnIKA==}
- peerDependencies:
- react: '*'
+ use-deep-compare@1.3.0(react@18.3.1):
dependencies:
dequal: 2.0.3
react: 18.3.1
- dev: false
- /use-sync-external-store@1.2.2(react@18.3.1):
- resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
- peerDependencies:
- react: '*'
+ use-sync-external-store@1.2.2(react@18.3.1):
dependencies:
react: 18.3.1
- dev: false
- /util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ util-deprecate@1.0.2: {}
- /which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ which-boxed-primitive@1.0.2:
dependencies:
is-bigint: 1.0.4
is-boolean-object: 1.1.2
is-number-object: 1.0.7
is-string: 1.0.7
is-symbol: 1.0.4
- dev: true
- /which-builtin-type@1.1.4:
- resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==}
- engines: {node: '>= 0.4'}
+ which-builtin-type@1.1.4:
dependencies:
function.prototype.name: 1.1.6
has-tostringtag: 1.0.2
@@ -4024,103 +4821,64 @@ packages:
which-boxed-primitive: 1.0.2
which-collection: 1.0.2
which-typed-array: 1.1.15
- dev: true
- /which-collection@1.0.2:
- resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
- engines: {node: '>= 0.4'}
+ which-collection@1.0.2:
dependencies:
is-map: 2.0.3
is-set: 2.0.3
is-weakmap: 2.0.2
is-weakset: 2.0.3
- dev: true
- /which-typed-array@1.1.15:
- resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
- engines: {node: '>= 0.4'}
+ which-typed-array@1.1.15:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.7
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.2
- dev: true
- /which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
+ which@2.0.2:
dependencies:
isexe: 2.0.0
- /word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
+ word-wrap@1.2.5: {}
- /wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
+ wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
- /wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
+ wrap-ansi@8.1.0:
dependencies:
ansi-styles: 6.2.1
string-width: 5.1.2
strip-ansi: 7.1.0
- /wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ wrappy@1.0.2: {}
- /yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ yallist@3.1.1: {}
- /yaml@2.5.1:
- resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
- engines: {node: '>= 14'}
- hasBin: true
+ yaml@2.5.1: {}
- /yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
+ yocto-queue@0.1.0: {}
- /zustand-x@3.0.4(react-dom@18.3.1)(react@18.3.1)(zustand@4.5.5):
- resolution: {integrity: sha512-dVD8WUEpR/0mMdLah9j8i+r6PMAq9Ii2u+BX/9Bn4MHRt8sSnRQ90YMUlTVonZYAHGb2UHZwPpE2gMb8GtYDDw==}
- peerDependencies:
- zustand: '>=4.3.9'
+ zustand-x@3.0.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@4.5.5(@types/react@18.3.7)(immer@10.1.1)(react@18.3.1)):
dependencies:
immer: 10.1.1
lodash.mapvalues: 4.6.0
- react-tracked: 1.7.14(react-dom@18.3.1)(react@18.3.1)
- zustand: 4.5.5(@types/react@18.3.7)(react@18.3.1)
+ react-tracked: 1.7.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)
+ zustand: 4.5.5(@types/react@18.3.7)(immer@10.1.1)(react@18.3.1)
transitivePeerDependencies:
- react
- react-dom
- react-native
- scheduler
- dev: false
- /zustand@4.5.5(@types/react@18.3.7)(react@18.3.1):
- resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==}
- engines: {node: '>=12.7.0'}
- peerDependencies:
- '@types/react': '>=16.8'
- immer: '>=9.0.6'
- react: '*'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- immer:
- optional: true
- react:
- optional: true
+ zustand@4.5.5(@types/react@18.3.7)(immer@10.1.1)(react@18.3.1):
dependencies:
+ use-sync-external-store: 1.2.2(react@18.3.1)
+ optionalDependencies:
'@types/react': 18.3.7
+ immer: 10.1.1
react: 18.3.1
- use-sync-external-store: 1.2.2(react@18.3.1)
- dev: false
diff --git a/templates/plate-template/src/lib/utils.ts b/templates/plate-template/src/lib/utils.ts
new file mode 100644
index 0000000000..bd0c391ddd
--- /dev/null
+++ b/templates/plate-template/src/lib/utils.ts
@@ -0,0 +1,6 @@
+import { clsx, type ClassValue } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
diff --git a/templates/plate-template/src/styles/globals.css b/templates/plate-template/src/styles/globals.css
index e74b0ab4e2..5f110a9c87 100644
--- a/templates/plate-template/src/styles/globals.css
+++ b/templates/plate-template/src/styles/globals.css
@@ -28,12 +28,22 @@
--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
- --destructive: 0 72.22% 50.59%;
+ --destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
- --ring: 215 20.2% 65.1%;
+ --ring: 222.2 84% 4.9%;
--radius: 0.5rem;
+
+ --chart-1: 12 76% 61%;
+
+ --chart-2: 173 58% 39%;
+
+ --chart-3: 197 37% 24%;
+
+ --chart-4: 43 74% 66%;
+
+ --chart-5: 27 87% 67%;
}
.dark {
@@ -62,9 +72,19 @@
--accent-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
- --destructive-foreground: 0 85.7% 97.3%;
+ --destructive-foreground: 210 40% 98%;
+
+ --ring: 212.7 26.8% 83.9%;
+
+ --chart-1: 220 70% 50%;
+
+ --chart-2: 160 60% 45%;
+
+ --chart-3: 30 80% 55%;
+
+ --chart-4: 280 65% 60%;
- --ring: 217.2 32.6% 17.5%;
+ --chart-5: 340 75% 55%;
}
}
diff --git a/templates/plate-template/tailwind.config.js b/templates/plate-template/tailwind.config.js
index 1957c3c307..a16f078dae 100644
--- a/templates/plate-template/tailwind.config.js
+++ b/templates/plate-template/tailwind.config.js
@@ -5,74 +5,89 @@ module.exports = {
darkMode: ['class'],
content: ['src/**/*.{ts,tsx}'],
theme: {
- container: {
- center: true,
- padding: '2rem',
- screens: {
- '2xl': '1400px',
- },
- },
- extend: {
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- destructive: {
- DEFAULT: 'hsl(var(--destructive))',
- foreground: 'hsl(var(--destructive-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- },
- borderRadius: {
- xl: `calc(var(--radius) + 4px)`,
- lg: 'var(--radius)',
- md: 'calc(var(--radius) - 2px)',
- sm: 'calc(var(--radius) - 4px)',
- },
- fontFamily: {
- sans: ['var(--font-sans)', ...fontFamily.sans],
- heading: ['var(--font-heading)', ...fontFamily.sans],
- },
- keyframes: {
- 'accordion-down': {
- from: { height: '0' },
- to: { height: 'var(--radix-accordion-content-height)' },
- },
- 'accordion-up': {
- from: { height: 'var(--radix-accordion-content-height)' },
- to: { height: '0' },
- },
- },
- animation: {
- 'accordion-down': 'accordion-down 0.2s ease-out',
- 'accordion-up': 'accordion-up 0.2s ease-out',
- },
- },
+ container: {
+ center: 'true',
+ padding: '2rem',
+ screens: {
+ '2xl': '1400px'
+ }
+ },
+ extend: {
+ colors: {
+ border: 'hsl(var(--border))',
+ input: 'hsl(var(--input))',
+ ring: 'hsl(var(--ring))',
+ background: 'hsl(var(--background))',
+ foreground: 'hsl(var(--foreground))',
+ primary: {
+ DEFAULT: 'hsl(var(--primary))',
+ foreground: 'hsl(var(--primary-foreground))'
+ },
+ secondary: {
+ DEFAULT: 'hsl(var(--secondary))',
+ foreground: 'hsl(var(--secondary-foreground))'
+ },
+ destructive: {
+ DEFAULT: 'hsl(var(--destructive))',
+ foreground: 'hsl(var(--destructive-foreground))'
+ },
+ muted: {
+ DEFAULT: 'hsl(var(--muted))',
+ foreground: 'hsl(var(--muted-foreground))'
+ },
+ accent: {
+ DEFAULT: 'hsl(var(--accent))',
+ foreground: 'hsl(var(--accent-foreground))'
+ },
+ popover: {
+ DEFAULT: 'hsl(var(--popover))',
+ foreground: 'hsl(var(--popover-foreground))'
+ },
+ card: {
+ DEFAULT: 'hsl(var(--card))',
+ foreground: 'hsl(var(--card-foreground))'
+ },
+ chart: {
+ '1': 'hsl(var(--chart-1))',
+ '2': 'hsl(var(--chart-2))',
+ '3': 'hsl(var(--chart-3))',
+ '4': 'hsl(var(--chart-4))',
+ '5': 'hsl(var(--chart-5))'
+ }
+ },
+ borderRadius: {
+ xl: '`calc(var(--radius) + 4px)`',
+ lg: 'var(--radius)',
+ md: 'calc(var(--radius) - 2px)',
+ sm: 'calc(var(--radius) - 4px)'
+ },
+ fontFamily: {
+ sans: ['var(--font-sans)', ...fontFamily.sans],
+ heading: ['var(--font-heading)', ...fontFamily.sans]
+ },
+ keyframes: {
+ 'accordion-down': {
+ from: {
+ height: '0'
+ },
+ to: {
+ height: 'var(--radix-accordion-content-height)'
+ }
+ },
+ 'accordion-up': {
+ from: {
+ height: 'var(--radix-accordion-content-height)'
+ },
+ to: {
+ height: '0'
+ }
+ }
+ },
+ animation: {
+ 'accordion-down': 'accordion-down 0.2s ease-out',
+ 'accordion-up': 'accordion-up 0.2s ease-out'
+ }
+ }
},
plugins: [require('tailwindcss-animate')],
};
From 156a10cade53e19a837ae783c83b833fc81a8c81 Mon Sep 17 00:00:00 2001
From: zbeyens
Date: Tue, 24 Sep 2024 03:49:44 +0200
Subject: [PATCH 8/8] feat
---
apps/www/content/docs/components/cli.mdx | 8 ++++++--
apps/www/content/docs/components/components-json.mdx | 10 +++++++---
apps/www/content/docs/components/installation/next.mdx | 2 +-
apps/www/content/docs/components/installation/vite.mdx | 6 +++---
apps/www/content/docs/components/theming.mdx | 8 ++++++--
apps/www/public/r/styles/default/index.json | 7 +++----
apps/www/scripts/build-registry.mts | 4 +++-
7 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/apps/www/content/docs/components/cli.mdx b/apps/www/content/docs/components/cli.mdx
index 525c2f2ff2..c6e09b0a10 100644
--- a/apps/www/content/docs/components/cli.mdx
+++ b/apps/www/content/docs/components/cli.mdx
@@ -3,7 +3,11 @@ title: CLI
description: Use the CLI to add components to your project.
---
-
+
+WIP – We're migrating to npx shadcn.
+
+
+{/*
**Note:** We are now using the `shadcn` CLI.
@@ -172,4 +176,4 @@ Options:
-y, --yes skip confirmation prompt. (default: false)
-c, --cwd the working directory. defaults to the current directory.
-h, --help display help for command
-```
+``` */}
diff --git a/apps/www/content/docs/components/components-json.mdx b/apps/www/content/docs/components/components-json.mdx
index 3ce44a6090..21f4ebc63a 100644
--- a/apps/www/content/docs/components/components-json.mdx
+++ b/apps/www/content/docs/components/components-json.mdx
@@ -1,9 +1,13 @@
---
-title: plate-components.json
+title: components.json
description: Configuration for your project.
---
-The `plate-components.json` file holds configuration for your project.
+
+WIP – We're migrating to shadcn's components.json.
+
+
+{/* The `plate-components.json` file holds configuration for your project.
We use it to understand how your project is set up and how to generate components customized for your project.
@@ -163,4 +167,4 @@ The CLI will use this value to determine where to place your UI components. Use
"plate-ui": "@/components/plate-ui"
}
}
-```
\ No newline at end of file
+``` */}
\ No newline at end of file
diff --git a/apps/www/content/docs/components/installation/next.mdx b/apps/www/content/docs/components/installation/next.mdx
index 0a8c30f5c9..6e21c01a7e 100644
--- a/apps/www/content/docs/components/installation/next.mdx
+++ b/apps/www/content/docs/components/installation/next.mdx
@@ -16,7 +16,7 @@ A Lucide. You can use any
You can now start adding components to your project.
```bash
-npx shadcn@latest add button
+npx @udecode/plate-ui@latest add button
```
The command above will add the `Button` component to your project. You can then import it like this:
diff --git a/apps/www/content/docs/components/theming.mdx b/apps/www/content/docs/components/theming.mdx
index 55a1e9505f..6ff536c956 100644
--- a/apps/www/content/docs/components/theming.mdx
+++ b/apps/www/content/docs/components/theming.mdx
@@ -3,7 +3,11 @@ title: Theming
description: Using CSS Variables or Tailwind CSS for theming.
---
-You can choose between using CSS variables or Tailwind CSS utility classes for theming.
+
+WIP – We're migrating to npx shadcn.
+
+
+{/* You can choose between using CSS variables or Tailwind CSS utility classes for theming.
## Utility classes
@@ -185,4 +189,4 @@ You can now use the `warning` utility class in your components.
We recommend using HSL colors for theming but you can also use other color formats if you prefer.
-See the Tailwind CSS documentation for more information on using `rgb`, `rgba` or `hsl` colors.
+See the Tailwind CSS documentation for more information on using `rgb`, `rgba` or `hsl` colors. */}
diff --git a/apps/www/public/r/styles/default/index.json b/apps/www/public/r/styles/default/index.json
index d13e4c8203..80a0be635e 100644
--- a/apps/www/public/r/styles/default/index.json
+++ b/apps/www/public/r/styles/default/index.json
@@ -4,11 +4,10 @@
"dependencies": [
"tailwindcss-animate",
"class-variance-authority",
- "lucide-react"
- ],
- "registryDependencies": [
- "utils"
+ "lucide-react",
+ "@udecode/cn"
],
+ "registryDependencies": [],
"tailwind": {
"config": {
"plugins": [
diff --git a/apps/www/scripts/build-registry.mts b/apps/www/scripts/build-registry.mts
index 6febe8205d..25e60a44fe 100644
--- a/apps/www/scripts/build-registry.mts
+++ b/apps/www/scripts/build-registry.mts
@@ -434,6 +434,7 @@ async function buildStylesIndex() {
"tailwindcss-animate",
"class-variance-authority",
"lucide-react",
+ "@udecode/cn"
]
// TODO: Remove this when we migrate to lucide-react.
@@ -445,7 +446,8 @@ async function buildStylesIndex() {
name: style.name,
type: "registry:style",
dependencies,
- registryDependencies: ["utils"],
+ // registryDependencies: ["utils"],
+ registryDependencies: [],
tailwind: {
config: {
plugins: [`require("tailwindcss-animate")`],