@enjoys/context-engine 1.2.0 → 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/css.json +111 -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/codeActions/tailwindcss.json +76 -0
- package/data/codeLens/angular.json +22 -0
- package/data/codeLens/css.json +68 -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 +103 -0
- package/data/color/angular.json +21 -0
- package/data/color/css.json +124 -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/color/tailwindcss.json +53 -0
- package/data/commands/angular.json +312 -0
- package/data/commands/css.json +41 -0
- package/data/commands/manifest.json +734 -727
- 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/commands/tailwindcss.json +53 -0
- package/data/completion/angular.json +1490 -0
- package/data/completion/css.json +1176 -0
- package/data/completion/javascript.json +27 -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/redis-cli.json +1 -1
- package/data/completion/shadcn.json +1202 -0
- package/data/completion/shell.json +2446 -510
- package/data/completion/tailwindcss.json +284 -0
- package/data/completion/typescript.json +27 -0
- package/data/declaration/angular.json +46 -0
- package/data/declaration/css.json +59 -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 +137 -0
- package/data/definition/angular.json +670 -0
- package/data/definition/css.json +115 -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/redis-cli.json +1 -1
- package/data/definition/shadcn.json +99 -0
- package/data/definition/shell.json +820 -0
- package/data/definition/tailwindcss.json +115 -0
- package/data/documentHighlight/angular.json +414 -0
- package/data/documentHighlight/css.json +125 -0
- 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 +160 -0
- package/data/documentRangeFormatting/angular.json +45 -0
- package/data/documentRangeFormatting/css.json +101 -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/documentRangeFormatting/tailwindcss.json +55 -0
- package/data/documentSymbol/angular.json +180 -0
- package/data/documentSymbol/css.json +96 -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 +110 -0
- package/data/foldingRange/angular.json +99 -0
- package/data/foldingRange/css.json +66 -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/foldingRange/tailwindcss.json +60 -0
- package/data/formatting/angular.json +21 -0
- package/data/formatting/css.json +73 -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/formatting/tailwindcss.json +48 -0
- package/data/hover/angular.json +455 -0
- package/data/hover/css.json +300 -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/redis-cli.json +1 -1
- package/data/hover/shadcn.json +450 -0
- package/data/hover/shell.json +684 -75
- package/data/hover/tailwindcss.json +968 -0
- package/data/implementation/angular.json +22 -0
- package/data/implementation/css.json +65 -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/implementation/tailwindcss.json +59 -0
- package/data/inlayHints/angular.json +24 -0
- package/data/inlayHints/css.json +87 -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/inlayHints/tailwindcss.json +111 -0
- package/data/inlineCompletions/angular.json +135 -0
- package/data/inlineCompletions/css.json +125 -0
- package/data/inlineCompletions/javascript.json +12 -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/inlineCompletions/tailwindcss.json +411 -0
- package/data/inlineCompletions/typescript.json +12 -0
- package/data/linkedEditingRange/angular.json +23 -0
- package/data/linkedEditingRange/css.json +40 -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/linkedEditingRange/tailwindcss.json +30 -0
- package/data/links/angular.json +95 -0
- package/data/links/css.json +55 -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 +65 -0
- package/data/manifest.json +399 -150
- package/data/onTypeFormatting/angular.json +14 -0
- package/data/onTypeFormatting/css.json +82 -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/onTypeFormatting/tailwindcss.json +63 -0
- package/data/rangeSemanticTokens/angular.json +140 -0
- package/data/rangeSemanticTokens/css.json +125 -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 +186 -0
- package/data/references/angular.json +26 -0
- package/data/references/css.json +65 -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 +125 -0
- package/data/rename/angular.json +131 -0
- package/data/rename/css.json +91 -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/rename/tailwindcss.json +58 -0
- package/data/selectionRange/angular.json +95 -0
- package/data/selectionRange/css.json +55 -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/selectionRange/tailwindcss.json +35 -0
- package/data/semanticTokens/angular.json +198 -0
- package/data/semanticTokens/css.json +107 -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/semanticTokens/tailwindcss.json +161 -0
- package/data/signatureHelp/angular.json +182 -0
- package/data/signatureHelp/css.json +137 -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/signatureHelp/tailwindcss.json +64 -0
- package/data/typeDefinition/angular.json +362 -0
- package/data/typeDefinition/css.json +53 -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/data/typeDefinition/tailwindcss.json +47 -0
- 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
|
@@ -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,411 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "tailwindcss",
|
|
3
|
+
"inlineCompletions": [
|
|
4
|
+
{
|
|
5
|
+
"triggerPattern": "flex\\s+",
|
|
6
|
+
"insertText": "flex items-center justify-center",
|
|
7
|
+
"description": "Common flex centering pattern — centers items both vertically and horizontally.",
|
|
8
|
+
"completeBracketPairs": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"triggerPattern": "flex\\s+items-center\\s+",
|
|
12
|
+
"insertText": "flex items-center justify-between",
|
|
13
|
+
"description": "Flex row with vertically centered items spaced between — common navbar/header layout.",
|
|
14
|
+
"completeBracketPairs": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"triggerPattern": "grid\\s+",
|
|
18
|
+
"insertText": "grid grid-cols-3 gap-4",
|
|
19
|
+
"description": "3-column responsive grid with gap — common card/gallery layout pattern.",
|
|
20
|
+
"completeBracketPairs": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"triggerPattern": "grid\\s+grid-cols-",
|
|
24
|
+
"insertText": "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
|
|
25
|
+
"description": "Responsive grid: 1 column on mobile, 2 on tablet, 3 on desktop.",
|
|
26
|
+
"completeBracketPairs": true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"triggerPattern": "rounded-",
|
|
30
|
+
"insertText": "rounded-lg shadow-md p-6 bg-white",
|
|
31
|
+
"description": "Card component pattern — rounded corners, shadow, padding, white background.",
|
|
32
|
+
"completeBracketPairs": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"triggerPattern": "px-\\d+\\s+py-",
|
|
36
|
+
"insertText": "px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition",
|
|
37
|
+
"description": "Button component pattern — padded, colored, rounded with hover transition.",
|
|
38
|
+
"completeBracketPairs": true
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"triggerPattern": "dark:",
|
|
42
|
+
"insertText": "dark:bg-gray-800 dark:text-white",
|
|
43
|
+
"description": "Common dark mode background and text color pairing.",
|
|
44
|
+
"completeBracketPairs": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"triggerPattern": "hover:",
|
|
48
|
+
"insertText": "hover:bg-blue-600 hover:shadow-lg transition duration-200",
|
|
49
|
+
"description": "Interactive hover state with background change, shadow, and smooth transition.",
|
|
50
|
+
"completeBracketPairs": true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"triggerPattern": "focus:",
|
|
54
|
+
"insertText": "focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",
|
|
55
|
+
"description": "Accessible focus ring pattern — removes outline, adds visible ring indicator.",
|
|
56
|
+
"completeBracketPairs": true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"triggerPattern": "min-h-screen",
|
|
60
|
+
"insertText": "min-h-screen flex flex-col",
|
|
61
|
+
"description": "Full-height page layout pattern with flex column for sticky footer.",
|
|
62
|
+
"completeBracketPairs": true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"triggerPattern": "@tailwind\\s+",
|
|
66
|
+
"insertText": "@tailwind base;\n@tailwind components;\n@tailwind utilities;",
|
|
67
|
+
"description": "Standard Tailwind CSS entry point — includes all three directive layers.",
|
|
68
|
+
"completeBracketPairs": true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"triggerPattern": "@layer\\s+components\\s*\\{",
|
|
72
|
+
"insertText": "@layer components {\n .btn {\n @apply px-4 py-2 rounded-lg font-medium transition;\n }\n}",
|
|
73
|
+
"description": "Component layer with reusable button class using @apply.",
|
|
74
|
+
"completeBracketPairs": true
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"triggerPattern": "container\\s+",
|
|
78
|
+
"insertText": "container mx-auto px-4",
|
|
79
|
+
"description": "Centered container with horizontal padding — common page wrapper pattern.",
|
|
80
|
+
"completeBracketPairs": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"triggerPattern": "bg-gradient",
|
|
84
|
+
"insertText": "bg-gradient-to-r from-blue-500 to-purple-600",
|
|
85
|
+
"description": "Horizontal gradient background from blue to purple.",
|
|
86
|
+
"completeBracketPairs": true
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"triggerPattern": "sr-only",
|
|
90
|
+
"insertText": "sr-only",
|
|
91
|
+
"description": "Screen-reader only — visually hides element while keeping it accessible.",
|
|
92
|
+
"completeBracketPairs": true
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
{
|
|
96
|
+
"triggerPattern": "flex\\s+flex-col\\s+",
|
|
97
|
+
"insertText": "flex flex-col min-h-screen",
|
|
98
|
+
"description": "Full-height flex column layout — common for page shell with sticky header/footer.",
|
|
99
|
+
"completeBracketPairs": true
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"triggerPattern": "flex\\s+items-center\\s+gap-",
|
|
103
|
+
"insertText": "flex items-center gap-4 p-4",
|
|
104
|
+
"description": "Flex row with centered items, gap, and padding — toolbar/action bar pattern.",
|
|
105
|
+
"completeBracketPairs": true
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"triggerPattern": "grid\\s+grid-cols-1\\s+",
|
|
109
|
+
"insertText": "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6",
|
|
110
|
+
"description": "Responsive grid: 1→2→3→4 columns across breakpoints — product/card grid.",
|
|
111
|
+
"completeBracketPairs": true
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"triggerPattern": "grid\\s+grid-cols-12",
|
|
115
|
+
"insertText": "grid grid-cols-12 gap-4",
|
|
116
|
+
"description": "12-column layout grid with gap — traditional columnar layout.",
|
|
117
|
+
"completeBracketPairs": true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"triggerPattern": "absolute\\s+",
|
|
121
|
+
"insertText": "absolute inset-0",
|
|
122
|
+
"description": "Absolute position filling parent — overlay pattern.",
|
|
123
|
+
"completeBracketPairs": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"triggerPattern": "absolute\\s+inset-0\\s+",
|
|
127
|
+
"insertText": "absolute inset-0 flex items-center justify-center bg-black/50",
|
|
128
|
+
"description": "Centered overlay with semi-transparent background — modal backdrop.",
|
|
129
|
+
"completeBracketPairs": true
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"triggerPattern": "fixed\\s+",
|
|
133
|
+
"insertText": "fixed inset-x-0 top-0 z-50",
|
|
134
|
+
"description": "Fixed top bar — sticky header/navbar pattern.",
|
|
135
|
+
"completeBracketPairs": true
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"triggerPattern": "fixed\\s+bottom-",
|
|
139
|
+
"insertText": "fixed bottom-4 right-4 z-50",
|
|
140
|
+
"description": "Fixed bottom-right FAB — floating action button pattern.",
|
|
141
|
+
"completeBracketPairs": true
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"triggerPattern": "sticky\\s+",
|
|
145
|
+
"insertText": "sticky top-0 z-40 bg-white/80 backdrop-blur-sm",
|
|
146
|
+
"description": "Sticky header with glass morphism — frosted glass navbar.",
|
|
147
|
+
"completeBracketPairs": true
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"triggerPattern": "relative\\s+overflow-",
|
|
151
|
+
"insertText": "relative overflow-hidden rounded-lg",
|
|
152
|
+
"description": "Relative container with hidden overflow and rounding — image card pattern.",
|
|
153
|
+
"completeBracketPairs": true
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
{
|
|
157
|
+
"triggerPattern": "max-w-\\w+\\s+mx-",
|
|
158
|
+
"insertText": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
|
159
|
+
"description": "Responsive centered container — standard page width wrapper with responsive padding.",
|
|
160
|
+
"completeBracketPairs": true
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"triggerPattern": "w-full\\s+max-",
|
|
164
|
+
"insertText": "w-full max-w-md mx-auto",
|
|
165
|
+
"description": "Centered card/form wrapper — medium-width centered content.",
|
|
166
|
+
"completeBracketPairs": true
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"triggerPattern": "aspect-",
|
|
170
|
+
"insertText": "aspect-video rounded-lg overflow-hidden",
|
|
171
|
+
"description": "Video container — 16:9 ratio with rounded corners and clipped overflow.",
|
|
172
|
+
"completeBracketPairs": true
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
{
|
|
176
|
+
"triggerPattern": "px-\\d+\\s+py-\\d+\\s+",
|
|
177
|
+
"insertText": "px-6 py-3 bg-blue-600 text-white font-medium rounded-lg shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors",
|
|
178
|
+
"description": "Fully accessible button — padded, colored, rounded with hover, focus ring, and transition.",
|
|
179
|
+
"completeBracketPairs": true
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"triggerPattern": "border\\s+rounded-",
|
|
183
|
+
"insertText": "border rounded-lg p-4 bg-white shadow-sm hover:shadow-md transition-shadow",
|
|
184
|
+
"description": "Interactive card — bordered, rounded, padded with hover shadow lift.",
|
|
185
|
+
"completeBracketPairs": true
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"triggerPattern": "bg-white\\s+rounded-",
|
|
189
|
+
"insertText": "bg-white rounded-xl shadow-lg p-6 space-y-4",
|
|
190
|
+
"description": "Card component — white background, large rounded corners, shadow, spaced content.",
|
|
191
|
+
"completeBracketPairs": true
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"triggerPattern": "bg-white\\s+dark:",
|
|
195
|
+
"insertText": "bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",
|
|
196
|
+
"description": "Dark mode adaptive — light/dark background and text pair.",
|
|
197
|
+
"completeBracketPairs": true
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
{
|
|
201
|
+
"triggerPattern": "hover:scale-",
|
|
202
|
+
"insertText": "hover:scale-105 transition-transform duration-200",
|
|
203
|
+
"description": "Hover zoom effect — subtle scale up with smooth transition.",
|
|
204
|
+
"completeBracketPairs": true
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"triggerPattern": "hover:bg-\\w+\\s+",
|
|
208
|
+
"insertText": "hover:bg-blue-700 active:bg-blue-800 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 transition-colors",
|
|
209
|
+
"description": "Full interactive state stack — hover, active, and focus-visible states with transition.",
|
|
210
|
+
"completeBracketPairs": true
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"triggerPattern": "group\\s+",
|
|
214
|
+
"insertText": "group relative cursor-pointer",
|
|
215
|
+
"description": "Group parent setup — enables group-hover/group-focus on children.",
|
|
216
|
+
"completeBracketPairs": true
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"triggerPattern": "group-hover:",
|
|
220
|
+
"insertText": "group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 opacity-0 translate-y-2",
|
|
221
|
+
"description": "Group hover reveal — element slides up and fades in when parent is hovered.",
|
|
222
|
+
"completeBracketPairs": true
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"triggerPattern": "peer\\s+",
|
|
226
|
+
"insertText": "peer",
|
|
227
|
+
"description": "Peer sibling marker — enables peer-* variants on subsequent siblings.",
|
|
228
|
+
"completeBracketPairs": true
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"triggerPattern": "peer-checked:",
|
|
232
|
+
"insertText": "peer-checked:bg-blue-600 peer-checked:text-white peer-checked:border-blue-600 transition-colors",
|
|
233
|
+
"description": "Peer checked state — styled label/toggle that reacts to checkbox state.",
|
|
234
|
+
"completeBracketPairs": true
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"triggerPattern": "peer-focus:",
|
|
238
|
+
"insertText": "peer-focus:text-blue-600 peer-focus:text-sm peer-focus:-translate-y-5 transition-all",
|
|
239
|
+
"description": "Floating label pattern — label moves up and changes color when input is focused.",
|
|
240
|
+
"completeBracketPairs": true
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"triggerPattern": "disabled:",
|
|
244
|
+
"insertText": "disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none",
|
|
245
|
+
"description": "Disabled state — reduces opacity and disables interaction.",
|
|
246
|
+
"completeBracketPairs": true
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"triggerPattern": "aria-",
|
|
250
|
+
"insertText": "aria-expanded:rotate-180 transition-transform duration-200",
|
|
251
|
+
"description": "ARIA expanded rotation — icon rotates when element is expanded (accordion/dropdown).",
|
|
252
|
+
"completeBracketPairs": true
|
|
253
|
+
},
|
|
254
|
+
|
|
255
|
+
{
|
|
256
|
+
"triggerPattern": "sm:flex\\s+",
|
|
257
|
+
"insertText": "sm:flex sm:items-center sm:justify-between",
|
|
258
|
+
"description": "Responsive flex row from sm — stack on mobile, row with space-between on tablet+.",
|
|
259
|
+
"completeBracketPairs": true
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"triggerPattern": "md:grid-cols-",
|
|
263
|
+
"insertText": "md:grid-cols-2 lg:grid-cols-3",
|
|
264
|
+
"description": "Responsive grid columns — 2 columns on tablet, 3 on desktop.",
|
|
265
|
+
"completeBracketPairs": true
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"triggerPattern": "lg:flex-row\\s+",
|
|
269
|
+
"insertText": "lg:flex-row flex-col",
|
|
270
|
+
"description": "Responsive direction — column on mobile/tablet, row on desktop.",
|
|
271
|
+
"completeBracketPairs": true
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"triggerPattern": "hidden\\s+sm:",
|
|
275
|
+
"insertText": "hidden sm:block",
|
|
276
|
+
"description": "Mobile-hidden — hidden on mobile, visible from sm breakpoint.",
|
|
277
|
+
"completeBracketPairs": true
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"triggerPattern": "sm:hidden",
|
|
281
|
+
"insertText": "sm:hidden",
|
|
282
|
+
"description": "Desktop-hidden — visible on mobile only.",
|
|
283
|
+
"completeBracketPairs": true
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"triggerPattern": "text-sm\\s+sm:",
|
|
287
|
+
"insertText": "text-sm sm:text-base md:text-lg lg:text-xl",
|
|
288
|
+
"description": "Responsive typography — text scales up across breakpoints.",
|
|
289
|
+
"completeBracketPairs": true
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"triggerPattern": "p-4\\s+sm:",
|
|
293
|
+
"insertText": "p-4 sm:p-6 md:p-8 lg:p-12",
|
|
294
|
+
"description": "Responsive padding — padding increases across breakpoints.",
|
|
295
|
+
"completeBracketPairs": true
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"triggerPattern": "gap-4\\s+sm:",
|
|
299
|
+
"insertText": "gap-4 sm:gap-6 md:gap-8",
|
|
300
|
+
"description": "Responsive gap — gap size increases across breakpoints.",
|
|
301
|
+
"completeBracketPairs": true
|
|
302
|
+
},
|
|
303
|
+
|
|
304
|
+
{
|
|
305
|
+
"triggerPattern": "@layer\\s+base\\s*\\{",
|
|
306
|
+
"insertText": "@layer base {\n html {\n @apply scroll-smooth antialiased;\n }\n body {\n @apply bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100;\n }\n}",
|
|
307
|
+
"description": "Base layer with global defaults — smooth scroll, antialiased text, dark mode body.",
|
|
308
|
+
"completeBracketPairs": true
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"triggerPattern": "@layer\\s+utilities\\s*\\{",
|
|
312
|
+
"insertText": "@layer utilities {\n .text-balance {\n text-wrap: balance;\n }\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n .no-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n}",
|
|
313
|
+
"description": "Utility layer with custom utilities — balanced text wrap and hidden scrollbar.",
|
|
314
|
+
"completeBracketPairs": true
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
{
|
|
318
|
+
"triggerPattern": "before:content-",
|
|
319
|
+
"insertText": "before:content-[''] before:absolute before:inset-0",
|
|
320
|
+
"description": "Before pseudo-element overlay — empty content, absolutely positioned to fill parent.",
|
|
321
|
+
"completeBracketPairs": true
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"triggerPattern": "after:content-",
|
|
325
|
+
"insertText": "after:content-[''] after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-full after:bg-blue-500 after:scale-x-0 hover:after:scale-x-100 after:transition-transform",
|
|
326
|
+
"description": "Animated underline — expanding line on hover using ::after pseudo-element.",
|
|
327
|
+
"completeBracketPairs": true
|
|
328
|
+
},
|
|
329
|
+
|
|
330
|
+
{
|
|
331
|
+
"triggerPattern": "motion-safe:",
|
|
332
|
+
"insertText": "motion-safe:animate-bounce motion-reduce:animate-none",
|
|
333
|
+
"description": "Accessible animation — bounces for users who allow motion, static for those who don't.",
|
|
334
|
+
"completeBracketPairs": true
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"triggerPattern": "print:",
|
|
338
|
+
"insertText": "print:hidden",
|
|
339
|
+
"description": "Print-hidden — hides element when printing.",
|
|
340
|
+
"completeBracketPairs": true
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"triggerPattern": "placeholder:text-",
|
|
344
|
+
"insertText": "placeholder:text-gray-400 placeholder:italic",
|
|
345
|
+
"description": "Styled placeholder — gray italic placeholder text.",
|
|
346
|
+
"completeBracketPairs": true
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"triggerPattern": "file:",
|
|
350
|
+
"insertText": "file:mr-4 file:py-2 file:px-4 file:rounded-lg file:border-0 file:bg-blue-50 file:text-blue-700 file:font-medium hover:file:bg-blue-100 file:cursor-pointer",
|
|
351
|
+
"description": "Styled file input button — rounded, colored file selector button with hover.",
|
|
352
|
+
"completeBracketPairs": true
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"triggerPattern": "selection:",
|
|
356
|
+
"insertText": "selection:bg-blue-200 selection:text-blue-900",
|
|
357
|
+
"description": "Custom text selection — blue highlight with dark text.",
|
|
358
|
+
"completeBracketPairs": true
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"triggerPattern": "marker:",
|
|
362
|
+
"insertText": "marker:text-blue-500",
|
|
363
|
+
"description": "Custom list markers — blue bullet points.",
|
|
364
|
+
"completeBracketPairs": true
|
|
365
|
+
},
|
|
366
|
+
|
|
367
|
+
{
|
|
368
|
+
"triggerPattern": "snap-x\\s+",
|
|
369
|
+
"insertText": "snap-x snap-mandatory overflow-x-auto flex gap-4 scroll-smooth",
|
|
370
|
+
"description": "Horizontal scroll snap carousel — flex row with mandatory snap points.",
|
|
371
|
+
"completeBracketPairs": true
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"triggerPattern": "snap-start\\s+",
|
|
375
|
+
"insertText": "snap-start shrink-0 w-80",
|
|
376
|
+
"description": "Carousel item — snaps to start, doesn't shrink, fixed width.",
|
|
377
|
+
"completeBracketPairs": true
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"triggerPattern": "backdrop-blur-",
|
|
381
|
+
"insertText": "backdrop-blur-md bg-white/30 dark:bg-gray-900/30",
|
|
382
|
+
"description": "Glass morphism — frosted glass effect with backdrop blur and semi-transparent background.",
|
|
383
|
+
"completeBracketPairs": true
|
|
384
|
+
},
|
|
385
|
+
|
|
386
|
+
{
|
|
387
|
+
"triggerPattern": "odd:",
|
|
388
|
+
"insertText": "odd:bg-gray-50 even:bg-white",
|
|
389
|
+
"description": "Striped rows — alternating row backgrounds for tables/lists.",
|
|
390
|
+
"completeBracketPairs": true
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"triggerPattern": "first:",
|
|
394
|
+
"insertText": "first:mt-0 last:mb-0",
|
|
395
|
+
"description": "Boundary margin reset — removes top margin from first and bottom margin from last child.",
|
|
396
|
+
"completeBracketPairs": true
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"triggerPattern": "data-\\[",
|
|
400
|
+
"insertText": "data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
401
|
+
"description": "Data state animations — animate in/out based on open/closed data attribute.",
|
|
402
|
+
"completeBracketPairs": true
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"triggerPattern": "has-\\[",
|
|
406
|
+
"insertText": "has-[:checked]:bg-blue-50 has-[:checked]:ring-2 has-[:checked]:ring-blue-500",
|
|
407
|
+
"description": "Parent styling from child state — parent highlights when child checkbox is checked.",
|
|
408
|
+
"completeBracketPairs": true
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
}
|
|
@@ -12,6 +12,18 @@
|
|
|
12
12
|
"insertText": "interface ${1:Name} {\n\t${2:property}: ${3:type};\n}",
|
|
13
13
|
"description": "Interface",
|
|
14
14
|
"completeBracketPairs": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"triggerPattern": "^\\\\s*rfc\\\\s*$",
|
|
18
|
+
"insertText": "type ${1:Props} = { ${2:label}: ${3:string} };\n\nexport function ${4:Component}({ ${2:label} }: ${1:Props}) {\n\treturn (\n\t\t<div className=\"${5}\">${6}</div>\n\t);\n}",
|
|
19
|
+
"description": "React function component (TSX)",
|
|
20
|
+
"completeBracketPairs": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"triggerPattern": "^\\\\s*useState\\\\s*$",
|
|
24
|
+
"insertText": "const [${1:state}, set${2:State}] = useState<${3:Type}>(${4:initial});",
|
|
25
|
+
"description": "Typed useState hook",
|
|
26
|
+
"completeBracketPairs": true
|
|
15
27
|
}
|
|
16
28
|
]
|
|
17
29
|
}
|
|
@@ -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
|
+
}
|