@enjoys/context-engine 1.3.1 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/codeActions/angular.json +126 -0
- package/data/codeActions/nestjs.json +124 -0
- package/data/codeActions/nextjs.json +198 -0
- package/data/codeActions/react.json +154 -0
- package/data/codeActions/shadcn.json +112 -0
- package/data/codeActions/shell.json +169 -26
- package/data/codeLens/angular.json +22 -0
- package/data/codeLens/nestjs.json +21 -0
- package/data/codeLens/nextjs.json +117 -0
- package/data/codeLens/react.json +89 -0
- package/data/codeLens/shadcn.json +89 -0
- package/data/codeLens/shell.json +59 -17
- package/data/codeLens/tailwindcss.json +56 -0
- package/data/color/angular.json +21 -0
- package/data/color/nestjs.json +18 -0
- package/data/color/nextjs.json +22 -0
- package/data/color/react.json +93 -0
- package/data/color/shadcn.json +66 -0
- package/data/color/shell.json +106 -80
- package/data/commands/angular.json +312 -0
- package/data/commands/manifest.json +5 -0
- package/data/commands/nestjs.json +273 -0
- package/data/commands/nextjs.json +123 -0
- package/data/commands/react.json +210 -0
- package/data/commands/shadcn.json +410 -0
- package/data/commands/shell.json +571 -41
- package/data/completion/angular.json +1490 -0
- package/data/completion/css.json +793 -0
- package/data/completion/nestjs.json +1454 -0
- package/data/completion/nextjs.json +1373 -0
- package/data/completion/react.json +1319 -0
- package/data/completion/shadcn.json +1202 -0
- package/data/completion/shell.json +2446 -510
- package/data/declaration/angular.json +46 -0
- package/data/declaration/nestjs.json +47 -0
- package/data/declaration/nextjs.json +274 -0
- package/data/declaration/react.json +199 -0
- package/data/declaration/shadcn.json +211 -0
- package/data/declaration/shell.json +343 -24
- package/data/declaration/tailwindcss.json +72 -0
- package/data/definition/angular.json +670 -0
- package/data/definition/nestjs.json +684 -0
- package/data/definition/nextjs.json +439 -0
- package/data/definition/react.json +397 -0
- package/data/definition/shadcn.json +99 -0
- package/data/definition/shell.json +820 -0
- package/data/documentHighlight/angular.json +414 -0
- package/data/documentHighlight/css.json +77 -2
- package/data/documentHighlight/nestjs.json +115 -0
- package/data/documentHighlight/nextjs.json +212 -0
- package/data/documentHighlight/react.json +119 -0
- package/data/documentHighlight/shadcn.json +168 -0
- package/data/documentHighlight/shell.json +664 -334
- package/data/documentHighlight/tailwindcss.json +105 -10
- package/data/documentRangeFormatting/angular.json +45 -0
- package/data/documentRangeFormatting/nestjs.json +17 -0
- package/data/documentRangeFormatting/nextjs.json +17 -0
- package/data/documentRangeFormatting/react.json +78 -0
- package/data/documentRangeFormatting/shadcn.json +45 -0
- package/data/documentRangeFormatting/shell.json +120 -53
- package/data/documentSymbol/angular.json +180 -0
- package/data/documentSymbol/nestjs.json +152 -0
- package/data/documentSymbol/nextjs.json +159 -0
- package/data/documentSymbol/react.json +145 -0
- package/data/documentSymbol/shadcn.json +131 -0
- package/data/documentSymbol/shell.json +166 -26
- package/data/documentSymbol/tailwindcss.json +49 -0
- package/data/foldingRange/angular.json +99 -0
- package/data/foldingRange/nestjs.json +26 -0
- package/data/foldingRange/nextjs.json +26 -0
- package/data/foldingRange/react.json +120 -0
- package/data/foldingRange/shadcn.json +93 -0
- package/data/foldingRange/shell.json +106 -46
- package/data/formatting/angular.json +21 -0
- package/data/formatting/nestjs.json +23 -0
- package/data/formatting/nextjs.json +23 -0
- package/data/formatting/react.json +71 -0
- package/data/formatting/shadcn.json +61 -0
- package/data/formatting/shell.json +103 -19
- package/data/hover/angular.json +455 -0
- package/data/hover/css.json +232 -0
- package/data/hover/nestjs.json +296 -0
- package/data/hover/nextjs.json +305 -0
- package/data/hover/react.json +173 -0
- package/data/hover/shadcn.json +450 -0
- package/data/hover/shell.json +684 -75
- package/data/implementation/angular.json +22 -0
- package/data/implementation/nestjs.json +24 -0
- package/data/implementation/nextjs.json +137 -0
- package/data/implementation/react.json +125 -0
- package/data/implementation/shadcn.json +89 -0
- package/data/implementation/shell.json +59 -3
- package/data/inlayHints/angular.json +24 -0
- package/data/inlayHints/nestjs.json +24 -0
- package/data/inlayHints/nextjs.json +143 -0
- package/data/inlayHints/react.json +177 -0
- package/data/inlayHints/shadcn.json +109 -0
- package/data/inlayHints/shell.json +223 -35
- package/data/inlineCompletions/angular.json +135 -0
- package/data/inlineCompletions/nestjs.json +25 -0
- package/data/inlineCompletions/nextjs.json +179 -0
- package/data/inlineCompletions/react.json +203 -0
- package/data/inlineCompletions/shadcn.json +115 -0
- package/data/inlineCompletions/shell.json +185 -35
- package/data/linkedEditingRange/angular.json +23 -0
- package/data/linkedEditingRange/nestjs.json +10 -0
- package/data/linkedEditingRange/nextjs.json +11 -0
- package/data/linkedEditingRange/react.json +75 -0
- package/data/linkedEditingRange/shadcn.json +23 -0
- package/data/linkedEditingRange/shell.json +25 -25
- package/data/links/angular.json +95 -0
- package/data/links/nestjs.json +130 -0
- package/data/links/nextjs.json +91 -0
- package/data/links/react.json +75 -0
- package/data/links/shadcn.json +98 -0
- package/data/links/shell.json +56 -0
- package/data/links/tailwindcss.json +25 -0
- package/data/manifest.json +339 -152
- package/data/onTypeFormatting/angular.json +14 -0
- package/data/onTypeFormatting/nestjs.json +16 -0
- package/data/onTypeFormatting/nextjs.json +17 -0
- package/data/onTypeFormatting/react.json +127 -0
- package/data/onTypeFormatting/shadcn.json +54 -0
- package/data/onTypeFormatting/shell.json +72 -68
- package/data/rangeSemanticTokens/angular.json +140 -0
- package/data/rangeSemanticTokens/nestjs.json +27 -0
- package/data/rangeSemanticTokens/nextjs.json +28 -0
- package/data/rangeSemanticTokens/react.json +216 -0
- package/data/rangeSemanticTokens/shadcn.json +140 -0
- package/data/rangeSemanticTokens/shell.json +247 -69
- package/data/rangeSemanticTokens/tailwindcss.json +99 -8
- package/data/references/angular.json +26 -0
- package/data/references/nestjs.json +24 -0
- package/data/references/nextjs.json +178 -0
- package/data/references/react.json +192 -0
- package/data/references/shadcn.json +101 -0
- package/data/references/shell.json +323 -92
- package/data/references/tailwindcss.json +66 -0
- package/data/rename/angular.json +131 -0
- package/data/rename/nestjs.json +32 -0
- package/data/rename/nextjs.json +31 -0
- package/data/rename/react.json +88 -0
- package/data/rename/shadcn.json +79 -0
- package/data/rename/shell.json +101 -31
- package/data/selectionRange/angular.json +95 -0
- package/data/selectionRange/nestjs.json +21 -0
- package/data/selectionRange/nextjs.json +22 -0
- package/data/selectionRange/react.json +87 -0
- package/data/selectionRange/shadcn.json +89 -0
- package/data/selectionRange/shell.json +65 -35
- package/data/semanticTokens/angular.json +198 -0
- package/data/semanticTokens/nestjs.json +35 -0
- package/data/semanticTokens/nextjs.json +38 -0
- package/data/semanticTokens/react.json +215 -0
- package/data/semanticTokens/shadcn.json +180 -0
- package/data/semanticTokens/shell.json +238 -65
- package/data/signatureHelp/angular.json +182 -0
- package/data/signatureHelp/nestjs.json +128 -0
- package/data/signatureHelp/nextjs.json +127 -0
- package/data/signatureHelp/react.json +281 -0
- package/data/signatureHelp/shadcn.json +237 -0
- package/data/signatureHelp/shell.json +797 -104
- package/data/typeDefinition/angular.json +362 -0
- package/data/typeDefinition/nestjs.json +334 -0
- package/data/typeDefinition/nextjs.json +285 -0
- package/data/typeDefinition/react.json +236 -0
- package/data/typeDefinition/shadcn.json +292 -0
- package/data/typeDefinition/shell.json +104 -40
- package/package.json +1 -1
- package/data/codeActions/bash.json +0 -169
- package/data/codeActions/zsh.json +0 -49
- package/data/codeLens/bash.json +0 -75
- package/data/codeLens/zsh.json +0 -19
- package/data/color/bash.json +0 -100
- package/data/color/zsh.json +0 -80
- package/data/commands/bash.json +0 -102
- package/data/commands/zsh.json +0 -166
- package/data/completion/bash.json +0 -1184
- package/data/completion/zsh.json +0 -973
- package/data/declaration/bash.json +0 -301
- package/data/declaration/zsh.json +0 -205
- package/data/definition/bash.json +0 -565
- package/data/definition/zsh.json +0 -350
- package/data/documentHighlight/bash.json +0 -393
- package/data/documentHighlight/zsh.json +0 -266
- package/data/documentRangeFormatting/bash.json +0 -41
- package/data/documentRangeFormatting/zsh.json +0 -59
- package/data/documentSymbol/bash.json +0 -124
- package/data/documentSymbol/zsh.json +0 -26
- package/data/foldingRange/bash.json +0 -76
- package/data/foldingRange/zsh.json +0 -46
- package/data/formatting/bash.json +0 -88
- package/data/formatting/zsh.json +0 -28
- package/data/hover/bash.json +0 -579
- package/data/hover/zsh.json +0 -96
- package/data/implementation/bash.json +0 -44
- package/data/implementation/zsh.json +0 -41
- package/data/inlayHints/bash.json +0 -207
- package/data/inlayHints/zsh.json +0 -43
- package/data/inlineCompletions/bash.json +0 -155
- package/data/inlineCompletions/zsh.json +0 -17
- package/data/linkedEditingRange/bash.json +0 -25
- package/data/linkedEditingRange/zsh.json +0 -25
- package/data/links/bash.json +0 -56
- package/data/links/zsh.json +0 -15
- package/data/onTypeFormatting/bash.json +0 -68
- package/data/onTypeFormatting/zsh.json +0 -68
- package/data/rangeSemanticTokens/bash.json +0 -90
- package/data/rangeSemanticTokens/zsh.json +0 -76
- package/data/references/bash.json +0 -221
- package/data/references/zsh.json +0 -166
- package/data/rename/bash.json +0 -37
- package/data/rename/zsh.json +0 -31
- package/data/selectionRange/bash.json +0 -35
- package/data/selectionRange/zsh.json +0 -35
- package/data/semanticTokens/bash.json +0 -71
- package/data/semanticTokens/zsh.json +0 -71
- package/data/signatureHelp/bash.json +0 -111
- package/data/signatureHelp/zsh.json +0 -118
- package/data/typeDefinition/bash.json +0 -95
- package/data/typeDefinition/zsh.json +0 -40
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "shadcn",
|
|
3
|
+
"inlineCompletions": [
|
|
4
|
+
{
|
|
5
|
+
"text": "import { Button } from \"@/components/ui/button\"\n\n<Button variant=\"default\" size=\"default\">\n Click me\n</Button>",
|
|
6
|
+
"description": "Button component with variant and size props",
|
|
7
|
+
"triggerPrefix": "shadcn-button"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"text": "import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\n\n<Card>\n <CardHeader>\n <CardTitle>Title</CardTitle>\n <CardDescription>Description</CardDescription>\n </CardHeader>\n <CardContent>\n <p>Content</p>\n </CardContent>\n <CardFooter>\n <p>Footer</p>\n </CardFooter>\n</Card>",
|
|
11
|
+
"description": "Card with all sub-components",
|
|
12
|
+
"triggerPrefix": "shadcn-card"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"text": "import {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\n\n<Dialog>\n <DialogTrigger asChild>\n <Button variant=\"outline\">Open</Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Dialog Title</DialogTitle>\n <DialogDescription>Dialog description text.</DialogDescription>\n </DialogHeader>\n <div className=\"py-4\">\n Content here\n </div>\n <DialogFooter>\n <Button type=\"submit\">Save</Button>\n </DialogFooter>\n </DialogContent>\n</Dialog>",
|
|
16
|
+
"description": "Dialog with header, content, and footer",
|
|
17
|
+
"triggerPrefix": "shadcn-dialog"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"text": "import { zodResolver } from \"@hookform/resolvers/zod\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\n\nconst formSchema = z.object({\n username: z.string().min(2).max(50),\n})\n\nexport function MyForm() {\n const form = useForm<z.infer<typeof formSchema>>({\n resolver: zodResolver(formSchema),\n defaultValues: {\n username: \"\",\n },\n })\n\n function onSubmit(values: z.infer<typeof formSchema>) {\n console.log(values)\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({ field }) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"username\" {...field} />\n </FormControl>\n <FormDescription>Your display name.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n )\n}",
|
|
21
|
+
"description": "Form with react-hook-form, zod validation, and shadcn fields",
|
|
22
|
+
"triggerPrefix": "shadcn-form"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"text": "import {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n ColumnFiltersState,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { useState } from \"react\"\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n onColumnFiltersChange: setColumnFilters,\n getFilteredRowModel: getFilteredRowModel(),\n state: { sorting, columnFilters },\n })\n\n return (\n <div>\n <div className=\"flex items-center py-4\">\n <Input\n placeholder=\"Filter...\"\n value={(table.getColumn(\"name\")?.getFilterValue() as string) ?? \"\"}\n onChange={(e) => table.getColumn(\"name\")?.setFilterValue(e.target.value)}\n className=\"max-w-sm\"\n />\n </div>\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex items-center justify-end space-x-2 py-4\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>Previous</Button>\n <Button variant=\"outline\" size=\"sm\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>Next</Button>\n </div>\n </div>\n )\n}",
|
|
26
|
+
"description": "DataTable with columns, sorting, filtering, and pagination",
|
|
27
|
+
"triggerPrefix": "shadcn-datatable"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"text": "import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\n\n<Select>\n <SelectTrigger className=\"w-[180px]\">\n <SelectValue placeholder=\"Select an option\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"option1\">Option 1</SelectItem>\n <SelectItem value=\"option2\">Option 2</SelectItem>\n <SelectItem value=\"option3\">Option 3</SelectItem>\n </SelectContent>\n</Select>",
|
|
31
|
+
"description": "Select dropdown with trigger and items",
|
|
32
|
+
"triggerPrefix": "shadcn-select"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"text": "import {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Button } from \"@/components/ui/button\"\n\n<DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">Open Menu</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n <DropdownMenuLabel>My Account</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuItem>Profile</DropdownMenuItem>\n <DropdownMenuItem>Settings</DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem>Logout</DropdownMenuItem>\n </DropdownMenuContent>\n</DropdownMenu>",
|
|
36
|
+
"description": "Dropdown menu with label, items, and separators",
|
|
37
|
+
"triggerPrefix": "shadcn-dropdown"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"text": "import {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\"\nimport { useState, useEffect } from \"react\"\n\nconst [open, setOpen] = useState(false)\n\nuseEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n setOpen((open) => !open)\n }\n }\n document.addEventListener(\"keydown\", down)\n return () => document.removeEventListener(\"keydown\", down)\n}, [])\n\n<CommandDialog open={open} onOpenChange={setOpen}>\n <CommandInput placeholder=\"Type a command or search...\" />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup heading=\"Suggestions\">\n <CommandItem>Calendar</CommandItem>\n <CommandItem>Search</CommandItem>\n <CommandItem>Settings</CommandItem>\n </CommandGroup>\n <CommandSeparator />\n <CommandGroup heading=\"Actions\">\n <CommandItem>New File</CommandItem>\n <CommandItem>New Folder</CommandItem>\n </CommandGroup>\n </CommandList>\n</CommandDialog>",
|
|
41
|
+
"description": "Command palette with keyboard shortcut, search, and grouped items",
|
|
42
|
+
"triggerPrefix": "shadcn-command"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"text": "import { useToast } from \"@/components/ui/use-toast\"\n\nconst { toast } = useToast()\n\ntoast({\n title: \"Success\",\n description: \"Your action was completed.\",\n})",
|
|
46
|
+
"description": "Toast notification call with title and description",
|
|
47
|
+
"triggerPrefix": "shadcn-toast"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"text": "import {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\"\n\n<AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant=\"destructive\">Delete</Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction>Continue</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n</AlertDialog>",
|
|
51
|
+
"description": "AlertDialog confirmation with cancel and continue actions",
|
|
52
|
+
"triggerPrefix": "shadcn-alertdialog"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"text": "import {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\n<Sheet>\n <SheetTrigger asChild>\n <Button variant=\"outline\">Open Sidebar</Button>\n </SheetTrigger>\n <SheetContent side=\"left\">\n <SheetHeader>\n <SheetTitle>Navigation</SheetTitle>\n <SheetDescription>Browse sections.</SheetDescription>\n </SheetHeader>\n <nav className=\"flex flex-col space-y-2 mt-4\">\n <a href=\"#\" className=\"text-sm\">Dashboard</a>\n <a href=\"#\" className=\"text-sm\">Settings</a>\n <a href=\"#\" className=\"text-sm\">Profile</a>\n </nav>\n </SheetContent>\n</Sheet>",
|
|
56
|
+
"description": "Sheet sidebar panel with navigation",
|
|
57
|
+
"triggerPrefix": "shadcn-sheet"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"text": "import { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\n\n<Tabs defaultValue=\"tab1\" className=\"w-full\">\n <TabsList>\n <TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n <TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n <TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n </TabsList>\n <TabsContent value=\"tab1\">Content for tab 1</TabsContent>\n <TabsContent value=\"tab2\">Content for tab 2</TabsContent>\n <TabsContent value=\"tab3\">Content for tab 3</TabsContent>\n</Tabs>",
|
|
61
|
+
"description": "Tabs layout with multiple panels",
|
|
62
|
+
"triggerPrefix": "shadcn-tabs"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"text": "import {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\n\n<Accordion type=\"single\" collapsible>\n <AccordionItem value=\"item-1\">\n <AccordionTrigger>Section 1</AccordionTrigger>\n <AccordionContent>Content for section 1.</AccordionContent>\n </AccordionItem>\n <AccordionItem value=\"item-2\">\n <AccordionTrigger>Section 2</AccordionTrigger>\n <AccordionContent>Content for section 2.</AccordionContent>\n </AccordionItem>\n</Accordion>",
|
|
66
|
+
"description": "Accordion with collapsible sections",
|
|
67
|
+
"triggerPrefix": "shadcn-accordion"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"text": "import { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\n\n<div className=\"grid w-full max-w-sm items-center gap-1.5\">\n <Label htmlFor=\"email\">Email</Label>\n <Input type=\"email\" id=\"email\" placeholder=\"Email\" />\n</div>",
|
|
71
|
+
"description": "Input field with label",
|
|
72
|
+
"triggerPrefix": "shadcn-input"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"text": "import { Textarea } from \"@/components/ui/textarea\"\nimport { Label } from \"@/components/ui/label\"\n\n<div className=\"grid w-full gap-1.5\">\n <Label htmlFor=\"message\">Message</Label>\n <Textarea placeholder=\"Type your message here.\" id=\"message\" />\n</div>",
|
|
76
|
+
"description": "Textarea with label",
|
|
77
|
+
"triggerPrefix": "shadcn-textarea"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"text": "import { Badge } from \"@/components/ui/badge\"\n\n<Badge variant=\"default\">Badge</Badge>\n<Badge variant=\"secondary\">Secondary</Badge>\n<Badge variant=\"outline\">Outline</Badge>\n<Badge variant=\"destructive\">Destructive</Badge>",
|
|
81
|
+
"description": "Badge component with variant options",
|
|
82
|
+
"triggerPrefix": "shadcn-badge"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"text": "import {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\n\n<NavigationMenu>\n <NavigationMenuList>\n <NavigationMenuItem>\n <NavigationMenuTrigger>Getting Started</NavigationMenuTrigger>\n <NavigationMenuContent>\n <ul className=\"grid gap-3 p-4 md:w-[400px]\">\n <li><NavigationMenuLink href=\"/docs\">Documentation</NavigationMenuLink></li>\n <li><NavigationMenuLink href=\"/examples\">Examples</NavigationMenuLink></li>\n </ul>\n </NavigationMenuContent>\n </NavigationMenuItem>\n <NavigationMenuItem>\n <NavigationMenuLink className={navigationMenuTriggerStyle()} href=\"/about\">\n About\n </NavigationMenuLink>\n </NavigationMenuItem>\n </NavigationMenuList>\n</NavigationMenu>",
|
|
86
|
+
"description": "Navigation menu with dropdown content",
|
|
87
|
+
"triggerPrefix": "shadcn-navigation"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"text": "import {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n} from \"@/components/ui/pagination\"\n\n<Pagination>\n <PaginationContent>\n <PaginationItem>\n <PaginationPrevious href=\"#\" />\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">1</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\" isActive>2</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationLink href=\"#\">3</PaginationLink>\n </PaginationItem>\n <PaginationItem>\n <PaginationEllipsis />\n </PaginationItem>\n <PaginationItem>\n <PaginationNext href=\"#\" />\n </PaginationItem>\n </PaginationContent>\n</Pagination>",
|
|
91
|
+
"description": "Pagination with page links and navigation",
|
|
92
|
+
"triggerPrefix": "shadcn-pagination"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"text": "import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}",
|
|
96
|
+
"description": "cn() utility function definition using clsx and tailwind-merge",
|
|
97
|
+
"triggerPrefix": "shadcn-cn"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"text": "import { cva, type VariantProps } from \"class-variance-authority\"\n\nconst myVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\"\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n)",
|
|
101
|
+
"description": "cva() variant definition with multiple variant axes",
|
|
102
|
+
"triggerPrefix": "shadcn-cva"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"text": "import { Toaster } from \"@/components/ui/toaster\"\n\nexport default function RootLayout({\n children,\n}: {\n children: React.ReactNode\n}) {\n return (\n <html lang=\"en\">\n <body>\n <main>{children}</main>\n <Toaster />\n </body>\n </html>\n )\n}",
|
|
106
|
+
"description": "Toaster provider setup in root layout",
|
|
107
|
+
"triggerPrefix": "shadcn-toaster"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"text": "import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface MyComponentProps\n extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\"\n}\n\nconst MyComponent = React.forwardRef<HTMLDivElement, MyComponentProps>(\n ({ className, variant = \"default\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n variant === \"outline\" && \"border-2\",\n className\n )}\n {...props}\n />\n )\n }\n)\nMyComponent.displayName = \"MyComponent\"\n\nexport { MyComponent }",
|
|
111
|
+
"description": "Component with forwardRef, cn(), variants, and displayName",
|
|
112
|
+
"triggerPrefix": "shadcn-component"
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
@@ -1,35 +1,185 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "shell",
|
|
3
|
-
"inlineCompletions": [
|
|
4
|
-
{
|
|
5
|
-
"triggerPattern": "^\\\\s*#!\\\\s*$",
|
|
6
|
-
"insertText": "#!/bin/sh\nset -e\n\n${1:# script body}",
|
|
7
|
-
"description": "Shell script shebang",
|
|
8
|
-
"completeBracketPairs": true
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"triggerPattern": "^\\\\s*if\\\\s*$",
|
|
12
|
-
"insertText": "if [ ${1:condition} ]; then\n\t${2:# commands}\nelse\n\t${3:# commands}\nfi",
|
|
13
|
-
"description": "If conditional",
|
|
14
|
-
"completeBracketPairs": true
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"triggerPattern": "^\\\\s*for\\\\s*$",
|
|
18
|
-
"insertText": "for ${1:item} in ${2:list}; do\n\t${3:# commands}\ndone",
|
|
19
|
-
"description": "For loop",
|
|
20
|
-
"completeBracketPairs": true
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"triggerPattern": "^\\\\s*function\\\\s*$",
|
|
24
|
-
"insertText": "${1:function_name}() {\n\t${2:# body}\n}",
|
|
25
|
-
"description": "Function definition",
|
|
26
|
-
"completeBracketPairs": true
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"triggerPattern": "^\\\\s*case\\\\s*$",
|
|
30
|
-
"insertText": "case ${1:\"\\$variable\"} in\n\t${2:pattern1})\n\t\t${3:# commands}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:# commands}\n\t\t;;\n\t*)\n\t\t${6:# default}\n\t\t;;\nesac",
|
|
31
|
-
"description": "Case statement",
|
|
32
|
-
"completeBracketPairs": true
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
{
|
|
2
|
+
"language": "shell",
|
|
3
|
+
"inlineCompletions": [
|
|
4
|
+
{
|
|
5
|
+
"triggerPattern": "^\\\\s*#!\\\\s*$",
|
|
6
|
+
"insertText": "#!/bin/sh\nset -e\n\n${1:# script body}",
|
|
7
|
+
"description": "Shell script shebang",
|
|
8
|
+
"completeBracketPairs": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"triggerPattern": "^\\\\s*if\\\\s*$",
|
|
12
|
+
"insertText": "if [ ${1:condition} ]; then\n\t${2:# commands}\nelse\n\t${3:# commands}\nfi",
|
|
13
|
+
"description": "If conditional",
|
|
14
|
+
"completeBracketPairs": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"triggerPattern": "^\\\\s*for\\\\s*$",
|
|
18
|
+
"insertText": "for ${1:item} in ${2:list}; do\n\t${3:# commands}\ndone",
|
|
19
|
+
"description": "For loop",
|
|
20
|
+
"completeBracketPairs": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"triggerPattern": "^\\\\s*function\\\\s*$",
|
|
24
|
+
"insertText": "${1:function_name}() {\n\t${2:# body}\n}",
|
|
25
|
+
"description": "Function definition",
|
|
26
|
+
"completeBracketPairs": true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"triggerPattern": "^\\\\s*case\\\\s*$",
|
|
30
|
+
"insertText": "case ${1:\"\\$variable\"} in\n\t${2:pattern1})\n\t\t${3:# commands}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:# commands}\n\t\t;;\n\t*)\n\t\t${6:# default}\n\t\t;;\nesac",
|
|
31
|
+
"description": "Case statement",
|
|
32
|
+
"completeBracketPairs": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"triggerPattern": "^\\s*if\\s*$",
|
|
36
|
+
"insertText": "if [[ ${1:condition} ]]; then\n\t${2:command}\nfi",
|
|
37
|
+
"description": "If statement",
|
|
38
|
+
"completeBracketPairs": true
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"triggerPattern": "^\\s*if\\s*\\[\\[.*\\]\\];\\s*then\\s*$",
|
|
42
|
+
"insertText": "\n\t${1:command}\nelse\n\t${2:command}\nfi",
|
|
43
|
+
"description": "If-else body",
|
|
44
|
+
"completeBracketPairs": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"triggerPattern": "^\\s*elif\\s*$",
|
|
48
|
+
"insertText": "elif [[ ${1:condition} ]]; then\n\t${2:command}",
|
|
49
|
+
"description": "Elif clause",
|
|
50
|
+
"completeBracketPairs": true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"triggerPattern": "^\\s*for\\s*$",
|
|
54
|
+
"insertText": "for ${1:item} in ${2:list}; do\n\t${3:command}\ndone",
|
|
55
|
+
"description": "For-in loop",
|
|
56
|
+
"completeBracketPairs": true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"triggerPattern": "^\\s*for\\s*\\(\\(\\s*$",
|
|
60
|
+
"insertText": "for (( ${1:i}=0; ${1:i}<${2:n}; ${1:i}++ )); do\n\t${3:command}\ndone",
|
|
61
|
+
"description": "C-style for loop",
|
|
62
|
+
"completeBracketPairs": true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"triggerPattern": "^\\s*while\\s*$",
|
|
66
|
+
"insertText": "while [[ ${1:condition} ]]; do\n\t${2:command}\ndone",
|
|
67
|
+
"description": "While loop",
|
|
68
|
+
"completeBracketPairs": true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"triggerPattern": "^\\s*while\\s+IFS=\\s*$",
|
|
72
|
+
"insertText": "while IFS= read -r ${1:line}; do\n\t${2:echo \"$line\"}\ndone < \"${3:file}\"",
|
|
73
|
+
"description": "Read file line by line",
|
|
74
|
+
"completeBracketPairs": true
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"triggerPattern": "^\\s*until\\s*$",
|
|
78
|
+
"insertText": "until [[ ${1:condition} ]]; do\n\t${2:command}\ndone",
|
|
79
|
+
"description": "Until loop",
|
|
80
|
+
"completeBracketPairs": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"triggerPattern": "^\\s*case\\s*$",
|
|
84
|
+
"insertText": "case ${1:\"$variable\"} in\n\t${2:pattern1})\n\t\t${3:command}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:command}\n\t\t;;\n\t*)\n\t\t${6:echo \"Unknown option\"}\n\t\t;;\nesac",
|
|
85
|
+
"description": "Case statement",
|
|
86
|
+
"completeBracketPairs": true
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"triggerPattern": "^\\s*select\\s*$",
|
|
90
|
+
"insertText": "select ${1:opt} in ${2:option1 option2 option3}; do\n\tcase \"$${1:opt}\" in\n\t\t${3:option1}) ${4:command} ;;\n\t\t*) echo \"Invalid\" ;;\n\tesac\ndone",
|
|
91
|
+
"description": "Select menu",
|
|
92
|
+
"completeBracketPairs": true
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"triggerPattern": "^\\s*function\\s+\\w+\\s*$",
|
|
96
|
+
"insertText": "() {\n\tlocal ${1:arg}=\"$1\"\n\t${2:command}\n}",
|
|
97
|
+
"description": "Function body",
|
|
98
|
+
"completeBracketPairs": true
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"triggerPattern": "^\\s*\\w+\\(\\)\\s*$",
|
|
102
|
+
"insertText": "{\n\tlocal ${1:arg}=\"$1\"\n\t${2:command}\n}",
|
|
103
|
+
"description": "Function body (parens form)",
|
|
104
|
+
"completeBracketPairs": true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"triggerPattern": "^#!/usr/bin/env\\s+bash\\s*$",
|
|
108
|
+
"insertText": "\nset -euo pipefail\nIFS=$'\\\\n\\\\t'\n\n${1:main() \\{\n\t$2\n\\}}\n\nmain \"$@\"",
|
|
109
|
+
"description": "Strict mode script template",
|
|
110
|
+
"completeBracketPairs": true
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"triggerPattern": "^\\s*trap\\s*$",
|
|
114
|
+
"insertText": "trap '${1:cleanup}' EXIT ERR INT TERM",
|
|
115
|
+
"description": "Trap cleanup handler",
|
|
116
|
+
"completeBracketPairs": false
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"triggerPattern": "^\\s*getopts\\s*$",
|
|
120
|
+
"insertText": "while getopts \":${1:hv}\" opt; do\n\tcase \"$opt\" in\n\t\th) usage; exit 0 ;;\n\t\tv) echo \"$VERSION\"; exit 0 ;;\n\t\t\\?) echo \"Invalid option: -$OPTARG\" >&2; exit 1 ;;\n\t\t:) echo \"Option -$OPTARG requires an argument\" >&2; exit 1 ;;\n\tesac\ndone\nshift $((OPTIND - 1))",
|
|
121
|
+
"description": "Getopts argument parsing loop",
|
|
122
|
+
"completeBracketPairs": true
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"triggerPattern": "^\\s*read\\s+-r\\s*$",
|
|
126
|
+
"insertText": "read -r -p \"${1:Enter value}: \" ${2:variable}",
|
|
127
|
+
"description": "Read with prompt",
|
|
128
|
+
"completeBracketPairs": false
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"triggerPattern": "^\\s*(?:local\\s+)?tmpdir=\\s*$",
|
|
132
|
+
"insertText": "$(mktemp -d)\ntrap 'rm -rf \"$tmpdir\"' EXIT",
|
|
133
|
+
"description": "Create temp directory with cleanup",
|
|
134
|
+
"completeBracketPairs": false
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"triggerPattern": "^\\s*log\\s*$",
|
|
138
|
+
"insertText": "log() {\n\tlocal level=\"$1\"; shift\n\tprintf '[%s] [%s] %s\\n' \"$(date '+%Y-%m-%d %H:%M:%S')\" \"$level\" \"$*\" >&2\n}",
|
|
139
|
+
"description": "Logging function template",
|
|
140
|
+
"completeBracketPairs": true
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"triggerPattern": "^\\s*die\\s*$",
|
|
144
|
+
"insertText": "die() { echo \"ERROR: $*\" >&2; exit 1; }",
|
|
145
|
+
"description": "Die/error function",
|
|
146
|
+
"completeBracketPairs": true
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"triggerPattern": "^\\s*usage\\s*$",
|
|
150
|
+
"insertText": "usage() {\n\tcat <<-EOF\n\tUsage: $(basename \"$0\") [OPTIONS] ${1:ARGS}\n\n\tOptions:\n\t -h, --help Show this help message\n\t -v, --version Show version\n\t ${2:-f, --file Input file}\n\tEOF\n}",
|
|
151
|
+
"description": "Usage/help function template",
|
|
152
|
+
"completeBracketPairs": true
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"triggerPattern": "^\\s*(?:declare\\s+-[aA]|\\w+=\\()\\s*$",
|
|
156
|
+
"insertText": "(\n\t${1:\"element1\"}\n\t${2:\"element2\"}\n\t${3:\"element3\"}\n)",
|
|
157
|
+
"description": "Array initialization",
|
|
158
|
+
"completeBracketPairs": true
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"triggerPattern": "^\\s*(?:if|\\[\\[).*command\\s+-v\\s*$",
|
|
162
|
+
"insertText": "command -v ${1:cmd} &>/dev/null; then\n\t${2:echo \"$1 is available\"}\nelse\n\techo \"Error: ${1:cmd} is required but not installed.\" >&2\n\texit 1\nfi",
|
|
163
|
+
"description": "Check if command exists",
|
|
164
|
+
"completeBracketPairs": true
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"triggerPattern": "^\\s*find\\s*$",
|
|
168
|
+
"insertText": "find ${1:.} -type ${2:f} -name \"${3:*.txt}\" ${4:-exec echo {} \\;}",
|
|
169
|
+
"description": "Find command template",
|
|
170
|
+
"completeBracketPairs": false
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"triggerPattern": "^\\s*(?:cat|echo).*<<\\s*$",
|
|
174
|
+
"insertText": "EOF\n${1:content}\nEOF",
|
|
175
|
+
"description": "Here-document body",
|
|
176
|
+
"completeBracketPairs": false
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"triggerPattern": "^\\s*mapfile\\s*$",
|
|
180
|
+
"insertText": "mapfile -t ${1:lines} < \"${2:file}\"",
|
|
181
|
+
"description": "Read file into array",
|
|
182
|
+
"completeBracketPairs": false
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "angular",
|
|
3
|
+
"linkedEditingPatterns": [
|
|
4
|
+
{
|
|
5
|
+
"name": "htmlTagPair",
|
|
6
|
+
"openPattern": "<([a-zA-Z][a-zA-Z0-9-]*)(?:\\s[^>]*)?>",
|
|
7
|
+
"closePattern": "</([a-zA-Z][a-zA-Z0-9-]*)\\s*>",
|
|
8
|
+
"description": "Link opening and closing HTML element tags in Angular component templates for synchronized renaming"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "templateLiteralTagPair",
|
|
12
|
+
"openPattern": "<([a-zA-Z][a-zA-Z0-9-]*)(?:\\s[^>]*)?>",
|
|
13
|
+
"closePattern": "</([a-zA-Z][a-zA-Z0-9-]*)\\s*>",
|
|
14
|
+
"description": "Link opening and closing tags within inline template literals defined in @Component metadata"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "componentSelectorReference",
|
|
18
|
+
"openPattern": "selector\\s*:\\s*['\"]([a-zA-Z][a-zA-Z0-9-]*)['\"]",
|
|
19
|
+
"closePattern": "</?([a-zA-Z][a-zA-Z0-9-]*)",
|
|
20
|
+
"description": "Link Angular component selector string in @Component metadata with its usage as an HTML tag in parent templates"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "nestjs",
|
|
3
|
+
"linkedEditingRanges": {
|
|
4
|
+
"patterns": [
|
|
5
|
+
{ "description": "Generic type parameter pairs", "openPattern": "<(\\w+)>", "closePattern": "<(\\w+)>", "captureGroup": 1 },
|
|
6
|
+
{ "description": "Template literal variable", "pattern": "\\$\\{(\\w+)\\}", "captureGroup": 1 }
|
|
7
|
+
],
|
|
8
|
+
"wordPattern": "[a-zA-Z_$][a-zA-Z0-9_$]*"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "nextjs",
|
|
3
|
+
"linkedEditingRanges": {
|
|
4
|
+
"patterns": [
|
|
5
|
+
{ "description": "JSX tag pairs", "openPattern": "<([A-Z][a-zA-Z0-9.]*)", "closePattern": "<\\/([A-Z][a-zA-Z0-9.]*)", "captureGroup": 1 },
|
|
6
|
+
{ "description": "HTML tag pairs", "openPattern": "<([a-z][a-z0-9]*)", "closePattern": "<\\/([a-z][a-z0-9]*)", "captureGroup": 1 },
|
|
7
|
+
{ "description": "Template literal variable", "pattern": "\\$\\{(\\w+)\\}", "captureGroup": 1 }
|
|
8
|
+
],
|
|
9
|
+
"wordPattern": "[a-zA-Z_$][a-zA-Z0-9_$.]*"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "react",
|
|
3
|
+
"linkedEditingRanges": {
|
|
4
|
+
"wordPattern": "[a-zA-Z_$][a-zA-Z0-9_$]*(?:\\.[a-zA-Z_$][a-zA-Z0-9_$]*)*",
|
|
5
|
+
"patterns": [
|
|
6
|
+
{
|
|
7
|
+
"description": "JSX custom component tags",
|
|
8
|
+
"openPattern": "<([A-Z][a-zA-Z0-9.]*)(?:\\s[^>]*)?>",
|
|
9
|
+
"closePattern": "<\\/([A-Z][a-zA-Z0-9.]*)\\s*>",
|
|
10
|
+
"captureGroup": 1
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"description": "JSX HTML element tags",
|
|
14
|
+
"openPattern": "<([a-z][a-z0-9]*)(?:\\s[^>]*)?>",
|
|
15
|
+
"closePattern": "<\\/([a-z][a-z0-9]*)\\s*>",
|
|
16
|
+
"captureGroup": 1
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"description": "JSX namespaced component tags",
|
|
20
|
+
"openPattern": "<([A-Z][a-zA-Z0-9]*\\.[A-Z][a-zA-Z0-9]*)(?:\\s[^>]*)?>",
|
|
21
|
+
"closePattern": "<\\/([A-Z][a-zA-Z0-9]*\\.[A-Z][a-zA-Z0-9]*)\\s*>",
|
|
22
|
+
"captureGroup": 1
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"description": "Context Provider tags",
|
|
26
|
+
"openPattern": "<(\\w+Context\\.Provider)(?:\\s[^>]*)?>",
|
|
27
|
+
"closePattern": "<\\/(\\w+Context\\.Provider)\\s*>",
|
|
28
|
+
"captureGroup": 1
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"description": "Context Consumer tags",
|
|
32
|
+
"openPattern": "<(\\w+Context\\.Consumer)(?:\\s[^>]*)?>",
|
|
33
|
+
"closePattern": "<\\/(\\w+Context\\.Consumer)\\s*>",
|
|
34
|
+
"captureGroup": 1
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"description": "React.Fragment tags",
|
|
38
|
+
"openPattern": "<(React\\.Fragment)(?:\\s[^>]*)?>",
|
|
39
|
+
"closePattern": "<\\/(React\\.Fragment)\\s*>",
|
|
40
|
+
"captureGroup": 1
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"description": "Fragment shorthand",
|
|
44
|
+
"openPattern": "(<)>",
|
|
45
|
+
"closePattern": "(<)\\/>",
|
|
46
|
+
"captureGroup": 0,
|
|
47
|
+
"note": "Short fragment syntax <> and </>"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"description": "Suspense tags",
|
|
51
|
+
"openPattern": "<(Suspense)(?:\\s[^>]*)?>",
|
|
52
|
+
"closePattern": "<\\/(Suspense)\\s*>",
|
|
53
|
+
"captureGroup": 1
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"description": "StrictMode tags",
|
|
57
|
+
"openPattern": "<(StrictMode)(?:\\s[^>]*)?>",
|
|
58
|
+
"closePattern": "<\\/(StrictMode)\\s*>",
|
|
59
|
+
"captureGroup": 1
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"description": "Profiler tags",
|
|
63
|
+
"openPattern": "<(Profiler)(?:\\s[^>]*)?>",
|
|
64
|
+
"closePattern": "<\\/(Profiler)\\s*>",
|
|
65
|
+
"captureGroup": 1
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"description": "ErrorBoundary tags",
|
|
69
|
+
"openPattern": "<(ErrorBoundary)(?:\\s[^>]*)?>",
|
|
70
|
+
"closePattern": "<\\/(ErrorBoundary)\\s*>",
|
|
71
|
+
"captureGroup": 1
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "shadcn",
|
|
3
|
+
"linkedEditingPatterns": [
|
|
4
|
+
{
|
|
5
|
+
"name": "jsxOpenCloseTag",
|
|
6
|
+
"openPattern": "<([A-Z][a-zA-Z0-9.]*)(?:\\s[^>]*)?>",
|
|
7
|
+
"closePattern": "</([A-Z][a-zA-Z0-9.]*)>",
|
|
8
|
+
"description": "Link JSX opening and closing component tag names for simultaneous editing"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "htmlTagPairInJsx",
|
|
12
|
+
"openPattern": "<([a-z][a-z0-9]*)(?:\\s[^>]*)?>",
|
|
13
|
+
"closePattern": "</([a-z][a-z0-9]*)>",
|
|
14
|
+
"description": "Link HTML opening and closing tag names within JSX for simultaneous editing"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "templateLiteralTag",
|
|
18
|
+
"openPattern": "([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*`",
|
|
19
|
+
"closePattern": "`",
|
|
20
|
+
"description": "Link tagged template literal tag expression with its usage"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "shell",
|
|
3
|
-
"wordPattern": "[a-zA-Z_][a-zA-Z0-9_]*",
|
|
4
|
-
"linkedEditingPatterns": [
|
|
5
|
-
{
|
|
6
|
-
"type": "tag_pair",
|
|
7
|
-
"openPattern": "\\bif\\b",
|
|
8
|
-
"closePattern": "\\bfi\\b",
|
|
9
|
-
"description": "Shell if/fi block pair"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"type": "tag_pair",
|
|
13
|
-
"openPattern": "\\bcase\\b",
|
|
14
|
-
"closePattern": "\\besac\\b",
|
|
15
|
-
"description": "Shell case/esac block pair"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"type": "tag_pair",
|
|
19
|
-
"openPattern": "\\b(for|while|until)\\b.*\\bdo\\b",
|
|
20
|
-
"closePattern": "\\bdone\\b",
|
|
21
|
-
"description": "Shell loop do/done block pair"
|
|
22
|
-
}
|
|
23
|
-
],
|
|
24
|
-
"supported": true
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"language": "shell",
|
|
3
|
+
"wordPattern": "[a-zA-Z_][a-zA-Z0-9_]*",
|
|
4
|
+
"linkedEditingPatterns": [
|
|
5
|
+
{
|
|
6
|
+
"type": "tag_pair",
|
|
7
|
+
"openPattern": "\\bif\\b",
|
|
8
|
+
"closePattern": "\\bfi\\b",
|
|
9
|
+
"description": "Shell if/fi block pair"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"type": "tag_pair",
|
|
13
|
+
"openPattern": "\\bcase\\b",
|
|
14
|
+
"closePattern": "\\besac\\b",
|
|
15
|
+
"description": "Shell case/esac block pair"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "tag_pair",
|
|
19
|
+
"openPattern": "\\b(for|while|until)\\b.*\\bdo\\b",
|
|
20
|
+
"closePattern": "\\bdone\\b",
|
|
21
|
+
"description": "Shell loop do/done block pair"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"supported": true
|
|
25
|
+
}
|