diff --git a/apps/www/public/registry/styles/default/emoji-dropdown-menu.json b/apps/www/public/registry/styles/default/emoji-dropdown-menu.json
index 47f930f3fc..8b761e78ff 100644
--- a/apps/www/public/registry/styles/default/emoji-dropdown-menu.json
+++ b/apps/www/public/registry/styles/default/emoji-dropdown-menu.json
@@ -13,7 +13,7 @@
},
{
"name": "emoji-toolbar-dropdown.tsx",
- "content": "import React, { ReactNode } from 'react';\nimport * as Popover from '@radix-ui/react-popover';\n\ntype EmojiToolbarDropdownProps = {\n control: ReactNode;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n children: ReactNode;\n};\n\nexport function EmojiToolbarDropdown({\n control,\n isOpen,\n setIsOpen,\n children,\n}: EmojiToolbarDropdownProps) {\n return (\n \n {control}\n\n \n \n {children}\n \n \n \n );\n}\n"
+ "content": "import React, { ReactNode } from 'react';\nimport * as Popover from '@radix-ui/react-popover';\n\ntype EmojiToolbarDropdownProps = {\n control: ReactNode;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n children: ReactNode;\n};\n\nexport function EmojiToolbarDropdown({\n control,\n isOpen,\n setIsOpen,\n children,\n}: EmojiToolbarDropdownProps) {\n return (\n \n {control}\n\n \n {children}\n \n \n );\n}\n"
},
{
"name": "emoji-icons.tsx",
diff --git a/apps/www/public/registry/styles/default/table-dropdown-menu.json b/apps/www/public/registry/styles/default/table-dropdown-menu.json
index a9194cd921..bb6f5fca2f 100644
--- a/apps/www/public/registry/styles/default/table-dropdown-menu.json
+++ b/apps/www/public/registry/styles/default/table-dropdown-menu.json
@@ -10,7 +10,7 @@
"files": [
{
"name": "table-dropdown-menu.tsx",
- "content": "import React from 'react';\nimport { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\nimport { focusEditor, someNode } from '@udecode/plate-common';\nimport { usePlateEditorState } from '@udecode/plate-common';\nimport {\n ELEMENT_TABLE,\n deleteColumn,\n deleteRow,\n deleteTable,\n insertTable,\n insertTableColumn,\n insertTableRow,\n} from '@udecode/plate-table';\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 editor = usePlateEditorState();\n\n const tableSelected = someNode(editor, {\n match: { type: ELEMENT_TABLE },\n });\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 insertTableColumn(editor);\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"
+ "content": "import React from 'react';\nimport { DropdownMenuProps } from '@radix-ui/react-dropdown-menu';\nimport {\n focusEditor,\n someNode,\n usePlateEditorState,\n} from '@udecode/plate-common';\nimport {\n ELEMENT_TABLE,\n deleteColumn,\n deleteRow,\n deleteTable,\n insertTable,\n insertTableColumn,\n insertTableRow,\n} from '@udecode/plate-table';\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 editor = usePlateEditorState();\n\n const tableSelected = someNode(editor, {\n match: { type: ELEMENT_TABLE },\n });\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 insertTableColumn(editor);\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"
}
],
"type": "components:plate-ui"
diff --git a/packages/cli/src/utils/transformers/transform-rsc.ts b/packages/cli/src/utils/transformers/transform-rsc.ts
index 05926a81e7..d9e580d744 100644
--- a/packages/cli/src/utils/transformers/transform-rsc.ts
+++ b/packages/cli/src/utils/transformers/transform-rsc.ts
@@ -9,7 +9,10 @@ export const transformRsc: Transformer = async ({ sourceFile, config }) => {
// Remove "use client" from the top of the file.
const first = sourceFile.getFirstChildByKind(SyntaxKind.ExpressionStatement);
- if (first?.getText() === `'use client'`) {
+ if (
+ first?.getText() === `'use client'` ||
+ first?.getText() === `"use client"`
+ ) {
first.remove();
}
diff --git a/packages/cli/test/commands/init.test.ts b/packages/cli/test/commands/init.test.ts
index 9cc6eea1c1..e907a0186d 100644
--- a/packages/cli/test/commands/init.test.ts
+++ b/packages/cli/test/commands/init.test.ts
@@ -1,166 +1,166 @@
-import fs from "fs"
-import path from "path"
-import { execa } from "execa"
-import { afterEach, expect, test, vi } from "vitest"
+import fs from 'fs';
+import path from 'path';
+import { execa } from 'execa';
+import { afterEach, expect, test, vi } from 'vitest';
-import { runInit } from "../../src/commands/init"
-import { getConfig } from "../../src/utils/get-config"
-import * as getPackageManger from "../../src/utils/get-package-manager"
-import * as registry from "../../src/utils/registry"
+import { runInit } from '../../src/commands/init';
+import { getConfig } from '../../src/utils/get-config';
+import * as getPackageManger from '../../src/utils/get-package-manager';
+import * as registry from '../../src/utils/registry';
-vi.mock("execa")
-vi.mock("fs/promises", () => ({
+vi.mock('execa');
+vi.mock('fs/promises', () => ({
writeFile: vi.fn(),
mkdir: vi.fn(),
-}))
+}));
-vi.mock("execa")
-vi.mock("fs/promises", () => ({
+vi.mock('execa');
+vi.mock('fs/promises', () => ({
writeFile: vi.fn(),
mkdir: vi.fn(),
-}))
-vi.mock("ora")
+}));
+vi.mock('ora');
-test("init config-full", async () => {
- vi.spyOn(getPackageManger, "getPackageManager").mockResolvedValue("pnpm")
- vi.spyOn(registry, "getRegistryBaseColor").mockResolvedValue({
+test('init config-full', async () => {
+ vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('pnpm');
+ vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({
inlineColors: {},
cssVars: {},
inlineColorsTemplate:
- "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n",
+ '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n',
cssVarsTemplate:
- "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n",
- })
- const mockMkdir = vi.spyOn(fs.promises, "mkdir").mockResolvedValue(undefined)
- const mockWriteFile = vi.spyOn(fs.promises, "writeFile").mockResolvedValue()
+ '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n',
+ });
+ const mockMkdir = vi.spyOn(fs.promises, 'mkdir').mockResolvedValue();
+ const mockWriteFile = vi.spyOn(fs.promises, 'writeFile').mockResolvedValue();
- const targetDir = path.resolve(__dirname, "../fixtures/config-full")
- const config = await getConfig(targetDir)
+ const targetDir = path.resolve(__dirname, '../fixtures/config-full');
+ const config = await getConfig(targetDir);
- await runInit(targetDir, config)
+ await runInit(targetDir, config);
expect(mockMkdir).toHaveBeenNthCalledWith(
1,
expect.stringMatching(/src\/app$/),
expect.anything()
- )
+ );
expect(mockMkdir).toHaveBeenNthCalledWith(
2,
expect.stringMatching(/src\/lib$/),
expect.anything()
- )
+ );
expect(mockMkdir).toHaveBeenNthCalledWith(
3,
expect.stringMatching(/src\/components$/),
expect.anything()
- )
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
1,
expect.stringMatching(/tailwind.config.ts$/),
expect.stringContaining(`/** @type {import('tailwindcss').Config} */`),
- "utf8"
- )
+ 'utf8'
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
2,
expect.stringMatching(/src\/app\/globals.css$/),
expect.stringContaining(`@tailwind base`),
- "utf8"
- )
+ 'utf8'
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
3,
expect.stringMatching(/src\/lib\/utils.ts$/),
- expect.stringContaining(`import { type ClassValue, clsx } from "clsx"`),
- "utf8"
- )
+ expect.stringContaining(`import { type ClassValue, clsx } from 'clsx'`),
+ 'utf8'
+ );
expect(execa).toHaveBeenCalledWith(
- "pnpm",
+ 'pnpm',
[
- "add",
- "tailwindcss-animate",
- "class-variance-authority",
- "clsx",
- "tailwind-merge",
- "@radix-ui/react-icons",
+ 'add',
+ 'tailwindcss-animate',
+ 'class-variance-authority',
+ 'clsx',
+ 'tailwind-merge',
+ '@radix-ui/react-icons',
],
{
cwd: targetDir,
}
- )
+ );
- mockMkdir.mockRestore()
- mockWriteFile.mockRestore()
-})
+ mockMkdir.mockRestore();
+ mockWriteFile.mockRestore();
+});
-test("init config-partial", async () => {
- vi.spyOn(getPackageManger, "getPackageManager").mockResolvedValue("npm")
- vi.spyOn(registry, "getRegistryBaseColor").mockResolvedValue({
+test('init config-partial', async () => {
+ vi.spyOn(getPackageManger, 'getPackageManager').mockResolvedValue('npm');
+ vi.spyOn(registry, 'getRegistryBaseColor').mockResolvedValue({
inlineColors: {},
cssVars: {},
inlineColorsTemplate:
- "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n",
+ '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n',
cssVarsTemplate:
- "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n",
- })
- const mockMkdir = vi.spyOn(fs.promises, "mkdir").mockResolvedValue(undefined)
- const mockWriteFile = vi.spyOn(fs.promises, "writeFile").mockResolvedValue()
+ '@tailwind base;\n@tailwind components;\n@tailwind utilities;\n',
+ });
+ const mockMkdir = vi.spyOn(fs.promises, 'mkdir').mockResolvedValue();
+ const mockWriteFile = vi.spyOn(fs.promises, 'writeFile').mockResolvedValue();
- const targetDir = path.resolve(__dirname, "../fixtures/config-partial")
- const config = await getConfig(targetDir)
+ const targetDir = path.resolve(__dirname, '../fixtures/config-partial');
+ const config = await getConfig(targetDir);
- await runInit(targetDir, config)
+ await runInit(targetDir, config);
expect(mockMkdir).toHaveBeenNthCalledWith(
1,
expect.stringMatching(/src\/assets\/css$/),
expect.anything()
- )
+ );
expect(mockMkdir).toHaveBeenNthCalledWith(
2,
expect.stringMatching(/lib$/),
expect.anything()
- )
+ );
expect(mockMkdir).toHaveBeenNthCalledWith(
3,
expect.stringMatching(/components$/),
expect.anything()
- )
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
1,
expect.stringMatching(/tailwind.config.ts$/),
expect.stringContaining(`/** @type {import('tailwindcss').Config} */`),
- "utf8"
- )
+ 'utf8'
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
2,
expect.stringMatching(/src\/assets\/css\/tailwind.css$/),
expect.stringContaining(`@tailwind base`),
- "utf8"
- )
+ 'utf8'
+ );
expect(mockWriteFile).toHaveBeenNthCalledWith(
3,
expect.stringMatching(/utils.ts$/),
- expect.stringContaining(`import { type ClassValue, clsx } from "clsx"`),
- "utf8"
- )
+ expect.stringContaining(`import { type ClassValue, clsx } from 'clsx'`),
+ 'utf8'
+ );
expect(execa).toHaveBeenCalledWith(
- "npm",
+ 'npm',
[
- "install",
- "tailwindcss-animate",
- "class-variance-authority",
- "clsx",
- "tailwind-merge",
- "lucide-react",
+ 'install',
+ 'tailwindcss-animate',
+ 'class-variance-authority',
+ 'clsx',
+ 'tailwind-merge',
+ 'lucide-react',
],
{
cwd: targetDir,
}
- )
+ );
- mockMkdir.mockRestore()
- mockWriteFile.mockRestore()
-})
+ mockMkdir.mockRestore();
+ mockWriteFile.mockRestore();
+});
afterEach(() => {
- vi.resetAllMocks()
-})
+ vi.resetAllMocks();
+});
diff --git a/packages/cli/test/utils/__snapshots__/transform-rsc.test.ts.snap b/packages/cli/test/utils/__snapshots__/transform-rsc.test.ts.snap
index 15f0f8e9a6..6f01703924 100644
--- a/packages/cli/test/utils/__snapshots__/transform-rsc.test.ts.snap
+++ b/packages/cli/test/utils/__snapshots__/transform-rsc.test.ts.snap
@@ -15,7 +15,7 @@ import { Foo } from \\"bar\\"
`;
exports[`transform rsc 3`] = `
-" import * as React from \\"react\\"
+" import * as React from \\"react\\"
import { Foo } from \\"bar\\"
"
`;
diff --git a/packages/cli/test/utils/transform-rsc.test.ts b/packages/cli/test/utils/transform-rsc.test.ts
index e370d5ea21..f29db9c7d9 100644
--- a/packages/cli/test/utils/transform-rsc.test.ts
+++ b/packages/cli/test/utils/transform-rsc.test.ts
@@ -1,11 +1,11 @@
-import { expect, test } from "vitest"
+import { expect, test } from 'vitest';
-import { transform } from "../../src/utils/transformers"
+import { transform } from '../../src/utils/transformers';
-test("transform rsc", async () => {
+test('transform rsc', async () => {
expect(
await transform({
- filename: "test.ts",
+ filename: 'test.ts',
raw: `import * as React from "react"
import { Foo } from "bar"
`,
@@ -13,11 +13,11 @@ import { Foo } from "bar"
rsc: true,
},
})
- ).toMatchSnapshot()
+ ).toMatchSnapshot();
expect(
await transform({
- filename: "test.ts",
+ filename: 'test.ts',
raw: `"use client"
import * as React from "react"
@@ -27,25 +27,25 @@ import { Foo } from "bar"
rsc: true,
},
})
- ).toMatchSnapshot()
+ ).toMatchSnapshot();
expect(
await transform({
- filename: "test.ts",
+ filename: 'test.ts',
raw: `"use client"
- import * as React from "react"
+ import * as React from "react"
import { Foo } from "bar"
`,
config: {
rsc: false,
},
})
- ).toMatchSnapshot()
+ ).toMatchSnapshot();
expect(
await transform({
- filename: "test.ts",
+ filename: 'test.ts',
raw: `"use foo"
import * as React from "react"
@@ -57,5 +57,5 @@ import { Foo } from "bar"
rsc: false,
},
})
- ).toMatchSnapshot()
-})
+ ).toMatchSnapshot();
+});