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(); +});