@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.
Files changed (270) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/css.json +111 -0
  3. package/data/codeActions/nestjs.json +124 -0
  4. package/data/codeActions/nextjs.json +198 -0
  5. package/data/codeActions/react.json +154 -0
  6. package/data/codeActions/shadcn.json +112 -0
  7. package/data/codeActions/shell.json +169 -26
  8. package/data/codeActions/tailwindcss.json +76 -0
  9. package/data/codeLens/angular.json +22 -0
  10. package/data/codeLens/css.json +68 -0
  11. package/data/codeLens/nestjs.json +21 -0
  12. package/data/codeLens/nextjs.json +117 -0
  13. package/data/codeLens/react.json +89 -0
  14. package/data/codeLens/shadcn.json +89 -0
  15. package/data/codeLens/shell.json +59 -17
  16. package/data/codeLens/tailwindcss.json +103 -0
  17. package/data/color/angular.json +21 -0
  18. package/data/color/css.json +124 -0
  19. package/data/color/nestjs.json +18 -0
  20. package/data/color/nextjs.json +22 -0
  21. package/data/color/react.json +93 -0
  22. package/data/color/shadcn.json +66 -0
  23. package/data/color/shell.json +106 -80
  24. package/data/color/tailwindcss.json +53 -0
  25. package/data/commands/angular.json +312 -0
  26. package/data/commands/css.json +41 -0
  27. package/data/commands/manifest.json +734 -727
  28. package/data/commands/nestjs.json +273 -0
  29. package/data/commands/nextjs.json +123 -0
  30. package/data/commands/react.json +210 -0
  31. package/data/commands/shadcn.json +410 -0
  32. package/data/commands/shell.json +571 -41
  33. package/data/commands/tailwindcss.json +53 -0
  34. package/data/completion/angular.json +1490 -0
  35. package/data/completion/css.json +1176 -0
  36. package/data/completion/javascript.json +27 -0
  37. package/data/completion/nestjs.json +1454 -0
  38. package/data/completion/nextjs.json +1373 -0
  39. package/data/completion/react.json +1319 -0
  40. package/data/completion/redis-cli.json +1 -1
  41. package/data/completion/shadcn.json +1202 -0
  42. package/data/completion/shell.json +2446 -510
  43. package/data/completion/tailwindcss.json +284 -0
  44. package/data/completion/typescript.json +27 -0
  45. package/data/declaration/angular.json +46 -0
  46. package/data/declaration/css.json +59 -0
  47. package/data/declaration/nestjs.json +47 -0
  48. package/data/declaration/nextjs.json +274 -0
  49. package/data/declaration/react.json +199 -0
  50. package/data/declaration/shadcn.json +211 -0
  51. package/data/declaration/shell.json +343 -24
  52. package/data/declaration/tailwindcss.json +137 -0
  53. package/data/definition/angular.json +670 -0
  54. package/data/definition/css.json +115 -0
  55. package/data/definition/nestjs.json +684 -0
  56. package/data/definition/nextjs.json +439 -0
  57. package/data/definition/react.json +397 -0
  58. package/data/definition/redis-cli.json +1 -1
  59. package/data/definition/shadcn.json +99 -0
  60. package/data/definition/shell.json +820 -0
  61. package/data/definition/tailwindcss.json +115 -0
  62. package/data/documentHighlight/angular.json +414 -0
  63. package/data/documentHighlight/css.json +125 -0
  64. package/data/documentHighlight/nestjs.json +115 -0
  65. package/data/documentHighlight/nextjs.json +212 -0
  66. package/data/documentHighlight/react.json +119 -0
  67. package/data/documentHighlight/shadcn.json +168 -0
  68. package/data/documentHighlight/shell.json +664 -334
  69. package/data/documentHighlight/tailwindcss.json +160 -0
  70. package/data/documentRangeFormatting/angular.json +45 -0
  71. package/data/documentRangeFormatting/css.json +101 -0
  72. package/data/documentRangeFormatting/nestjs.json +17 -0
  73. package/data/documentRangeFormatting/nextjs.json +17 -0
  74. package/data/documentRangeFormatting/react.json +78 -0
  75. package/data/documentRangeFormatting/shadcn.json +45 -0
  76. package/data/documentRangeFormatting/shell.json +120 -53
  77. package/data/documentRangeFormatting/tailwindcss.json +55 -0
  78. package/data/documentSymbol/angular.json +180 -0
  79. package/data/documentSymbol/css.json +96 -0
  80. package/data/documentSymbol/nestjs.json +152 -0
  81. package/data/documentSymbol/nextjs.json +159 -0
  82. package/data/documentSymbol/react.json +145 -0
  83. package/data/documentSymbol/shadcn.json +131 -0
  84. package/data/documentSymbol/shell.json +166 -26
  85. package/data/documentSymbol/tailwindcss.json +110 -0
  86. package/data/foldingRange/angular.json +99 -0
  87. package/data/foldingRange/css.json +66 -0
  88. package/data/foldingRange/nestjs.json +26 -0
  89. package/data/foldingRange/nextjs.json +26 -0
  90. package/data/foldingRange/react.json +120 -0
  91. package/data/foldingRange/shadcn.json +93 -0
  92. package/data/foldingRange/shell.json +106 -46
  93. package/data/foldingRange/tailwindcss.json +60 -0
  94. package/data/formatting/angular.json +21 -0
  95. package/data/formatting/css.json +73 -0
  96. package/data/formatting/nestjs.json +23 -0
  97. package/data/formatting/nextjs.json +23 -0
  98. package/data/formatting/react.json +71 -0
  99. package/data/formatting/shadcn.json +61 -0
  100. package/data/formatting/shell.json +103 -19
  101. package/data/formatting/tailwindcss.json +48 -0
  102. package/data/hover/angular.json +455 -0
  103. package/data/hover/css.json +300 -0
  104. package/data/hover/nestjs.json +296 -0
  105. package/data/hover/nextjs.json +305 -0
  106. package/data/hover/react.json +173 -0
  107. package/data/hover/redis-cli.json +1 -1
  108. package/data/hover/shadcn.json +450 -0
  109. package/data/hover/shell.json +684 -75
  110. package/data/hover/tailwindcss.json +968 -0
  111. package/data/implementation/angular.json +22 -0
  112. package/data/implementation/css.json +65 -0
  113. package/data/implementation/nestjs.json +24 -0
  114. package/data/implementation/nextjs.json +137 -0
  115. package/data/implementation/react.json +125 -0
  116. package/data/implementation/shadcn.json +89 -0
  117. package/data/implementation/shell.json +59 -3
  118. package/data/implementation/tailwindcss.json +59 -0
  119. package/data/inlayHints/angular.json +24 -0
  120. package/data/inlayHints/css.json +87 -0
  121. package/data/inlayHints/nestjs.json +24 -0
  122. package/data/inlayHints/nextjs.json +143 -0
  123. package/data/inlayHints/react.json +177 -0
  124. package/data/inlayHints/shadcn.json +109 -0
  125. package/data/inlayHints/shell.json +223 -35
  126. package/data/inlayHints/tailwindcss.json +111 -0
  127. package/data/inlineCompletions/angular.json +135 -0
  128. package/data/inlineCompletions/css.json +125 -0
  129. package/data/inlineCompletions/javascript.json +12 -0
  130. package/data/inlineCompletions/nestjs.json +25 -0
  131. package/data/inlineCompletions/nextjs.json +179 -0
  132. package/data/inlineCompletions/react.json +203 -0
  133. package/data/inlineCompletions/shadcn.json +115 -0
  134. package/data/inlineCompletions/shell.json +185 -35
  135. package/data/inlineCompletions/tailwindcss.json +411 -0
  136. package/data/inlineCompletions/typescript.json +12 -0
  137. package/data/linkedEditingRange/angular.json +23 -0
  138. package/data/linkedEditingRange/css.json +40 -0
  139. package/data/linkedEditingRange/nestjs.json +10 -0
  140. package/data/linkedEditingRange/nextjs.json +11 -0
  141. package/data/linkedEditingRange/react.json +75 -0
  142. package/data/linkedEditingRange/shadcn.json +23 -0
  143. package/data/linkedEditingRange/shell.json +25 -25
  144. package/data/linkedEditingRange/tailwindcss.json +30 -0
  145. package/data/links/angular.json +95 -0
  146. package/data/links/css.json +55 -0
  147. package/data/links/nestjs.json +130 -0
  148. package/data/links/nextjs.json +91 -0
  149. package/data/links/react.json +75 -0
  150. package/data/links/shadcn.json +98 -0
  151. package/data/links/shell.json +56 -0
  152. package/data/links/tailwindcss.json +65 -0
  153. package/data/manifest.json +399 -150
  154. package/data/onTypeFormatting/angular.json +14 -0
  155. package/data/onTypeFormatting/css.json +82 -0
  156. package/data/onTypeFormatting/nestjs.json +16 -0
  157. package/data/onTypeFormatting/nextjs.json +17 -0
  158. package/data/onTypeFormatting/react.json +127 -0
  159. package/data/onTypeFormatting/shadcn.json +54 -0
  160. package/data/onTypeFormatting/shell.json +72 -68
  161. package/data/onTypeFormatting/tailwindcss.json +63 -0
  162. package/data/rangeSemanticTokens/angular.json +140 -0
  163. package/data/rangeSemanticTokens/css.json +125 -0
  164. package/data/rangeSemanticTokens/nestjs.json +27 -0
  165. package/data/rangeSemanticTokens/nextjs.json +28 -0
  166. package/data/rangeSemanticTokens/react.json +216 -0
  167. package/data/rangeSemanticTokens/shadcn.json +140 -0
  168. package/data/rangeSemanticTokens/shell.json +247 -69
  169. package/data/rangeSemanticTokens/tailwindcss.json +186 -0
  170. package/data/references/angular.json +26 -0
  171. package/data/references/css.json +65 -0
  172. package/data/references/nestjs.json +24 -0
  173. package/data/references/nextjs.json +178 -0
  174. package/data/references/react.json +192 -0
  175. package/data/references/shadcn.json +101 -0
  176. package/data/references/shell.json +323 -92
  177. package/data/references/tailwindcss.json +125 -0
  178. package/data/rename/angular.json +131 -0
  179. package/data/rename/css.json +91 -0
  180. package/data/rename/nestjs.json +32 -0
  181. package/data/rename/nextjs.json +31 -0
  182. package/data/rename/react.json +88 -0
  183. package/data/rename/shadcn.json +79 -0
  184. package/data/rename/shell.json +101 -31
  185. package/data/rename/tailwindcss.json +58 -0
  186. package/data/selectionRange/angular.json +95 -0
  187. package/data/selectionRange/css.json +55 -0
  188. package/data/selectionRange/nestjs.json +21 -0
  189. package/data/selectionRange/nextjs.json +22 -0
  190. package/data/selectionRange/react.json +87 -0
  191. package/data/selectionRange/shadcn.json +89 -0
  192. package/data/selectionRange/shell.json +65 -35
  193. package/data/selectionRange/tailwindcss.json +35 -0
  194. package/data/semanticTokens/angular.json +198 -0
  195. package/data/semanticTokens/css.json +107 -0
  196. package/data/semanticTokens/nestjs.json +35 -0
  197. package/data/semanticTokens/nextjs.json +38 -0
  198. package/data/semanticTokens/react.json +215 -0
  199. package/data/semanticTokens/shadcn.json +180 -0
  200. package/data/semanticTokens/shell.json +238 -65
  201. package/data/semanticTokens/tailwindcss.json +161 -0
  202. package/data/signatureHelp/angular.json +182 -0
  203. package/data/signatureHelp/css.json +137 -0
  204. package/data/signatureHelp/nestjs.json +128 -0
  205. package/data/signatureHelp/nextjs.json +127 -0
  206. package/data/signatureHelp/react.json +281 -0
  207. package/data/signatureHelp/shadcn.json +237 -0
  208. package/data/signatureHelp/shell.json +797 -104
  209. package/data/signatureHelp/tailwindcss.json +64 -0
  210. package/data/typeDefinition/angular.json +362 -0
  211. package/data/typeDefinition/css.json +53 -0
  212. package/data/typeDefinition/nestjs.json +334 -0
  213. package/data/typeDefinition/nextjs.json +285 -0
  214. package/data/typeDefinition/react.json +236 -0
  215. package/data/typeDefinition/shadcn.json +292 -0
  216. package/data/typeDefinition/shell.json +104 -40
  217. package/data/typeDefinition/tailwindcss.json +47 -0
  218. package/package.json +1 -1
  219. package/data/codeActions/bash.json +0 -169
  220. package/data/codeActions/zsh.json +0 -49
  221. package/data/codeLens/bash.json +0 -75
  222. package/data/codeLens/zsh.json +0 -19
  223. package/data/color/bash.json +0 -100
  224. package/data/color/zsh.json +0 -80
  225. package/data/commands/bash.json +0 -102
  226. package/data/commands/zsh.json +0 -166
  227. package/data/completion/bash.json +0 -1184
  228. package/data/completion/zsh.json +0 -973
  229. package/data/declaration/bash.json +0 -301
  230. package/data/declaration/zsh.json +0 -205
  231. package/data/definition/bash.json +0 -565
  232. package/data/definition/zsh.json +0 -350
  233. package/data/documentHighlight/bash.json +0 -393
  234. package/data/documentHighlight/zsh.json +0 -266
  235. package/data/documentRangeFormatting/bash.json +0 -41
  236. package/data/documentRangeFormatting/zsh.json +0 -59
  237. package/data/documentSymbol/bash.json +0 -124
  238. package/data/documentSymbol/zsh.json +0 -26
  239. package/data/foldingRange/bash.json +0 -76
  240. package/data/foldingRange/zsh.json +0 -46
  241. package/data/formatting/bash.json +0 -88
  242. package/data/formatting/zsh.json +0 -28
  243. package/data/hover/bash.json +0 -579
  244. package/data/hover/zsh.json +0 -96
  245. package/data/implementation/bash.json +0 -44
  246. package/data/implementation/zsh.json +0 -41
  247. package/data/inlayHints/bash.json +0 -207
  248. package/data/inlayHints/zsh.json +0 -43
  249. package/data/inlineCompletions/bash.json +0 -155
  250. package/data/inlineCompletions/zsh.json +0 -17
  251. package/data/linkedEditingRange/bash.json +0 -25
  252. package/data/linkedEditingRange/zsh.json +0 -25
  253. package/data/links/bash.json +0 -56
  254. package/data/links/zsh.json +0 -15
  255. package/data/onTypeFormatting/bash.json +0 -68
  256. package/data/onTypeFormatting/zsh.json +0 -68
  257. package/data/rangeSemanticTokens/bash.json +0 -90
  258. package/data/rangeSemanticTokens/zsh.json +0 -76
  259. package/data/references/bash.json +0 -221
  260. package/data/references/zsh.json +0 -166
  261. package/data/rename/bash.json +0 -37
  262. package/data/rename/zsh.json +0 -31
  263. package/data/selectionRange/bash.json +0 -35
  264. package/data/selectionRange/zsh.json +0 -35
  265. package/data/semanticTokens/bash.json +0 -71
  266. package/data/semanticTokens/zsh.json +0 -71
  267. package/data/signatureHelp/bash.json +0 -111
  268. package/data/signatureHelp/zsh.json +0 -118
  269. package/data/typeDefinition/bash.json +0 -95
  270. package/data/typeDefinition/zsh.json +0 -40
@@ -0,0 +1,284 @@
1
+ {
2
+ "language": "tailwindcss",
3
+ "completions": [
4
+ { "label": "flex", "kind": 14, "detail": "display: flex", "documentation": { "value": "Sets `display: flex` on the element, enabling flexbox layout." }, "insertText": "flex", "insertTextRules": 0, "sortText": "0001" },
5
+ { "label": "grid", "kind": 14, "detail": "display: grid", "documentation": { "value": "Sets `display: grid` on the element, enabling CSS Grid layout." }, "insertText": "grid", "insertTextRules": 0, "sortText": "0002" },
6
+ { "label": "container", "kind": 14, "detail": "max-width responsive container", "documentation": { "value": "Sets `width: 100%` and responsive `max-width` at each breakpoint." }, "insertText": "container", "insertTextRules": 0, "sortText": "0003" },
7
+ { "label": "block", "kind": 14, "detail": "display: block", "documentation": { "value": "Sets `display: block` on the element." }, "insertText": "block", "insertTextRules": 0, "sortText": "0004" },
8
+ { "label": "inline", "kind": 14, "detail": "display: inline", "documentation": { "value": "Sets `display: inline` on the element." }, "insertText": "inline", "insertTextRules": 0, "sortText": "0005" },
9
+ { "label": "hidden", "kind": 14, "detail": "display: none", "documentation": { "value": "Sets `display: none` on the element, hiding it from the layout." }, "insertText": "hidden", "insertTextRules": 0, "sortText": "0006" },
10
+ { "label": "columns-${1:n}", "kind": 15, "detail": "columns: {n}", "documentation": { "value": "Sets the number of columns for multi-column layout. E.g. `columns-2`, `columns-3`." }, "insertText": "columns-${1:2}", "insertTextRules": 4, "sortText": "0007" },
11
+ { "label": "aspect-${1:ratio}", "kind": 15, "detail": "aspect-ratio: {ratio}", "documentation": { "value": "Sets the aspect ratio of an element. E.g. `aspect-square`, `aspect-video`, `aspect-auto`." }, "insertText": "aspect-${1|auto,square,video|}", "insertTextRules": 4, "sortText": "0008" },
12
+ { "label": "p-${1:size}", "kind": 15, "detail": "padding: {size}", "documentation": { "value": "Sets padding on all sides. E.g. `p-0`, `p-1`, `p-2`, `p-4`, `p-8`." }, "insertText": "p-${1:4}", "insertTextRules": 4, "sortText": "0010" },
13
+ { "label": "m-${1:size}", "kind": 15, "detail": "margin: {size}", "documentation": { "value": "Sets margin on all sides. E.g. `m-0`, `m-1`, `m-2`, `m-4`, `m-auto`." }, "insertText": "m-${1:4}", "insertTextRules": 4, "sortText": "0011" },
14
+ { "label": "px-${1:size}", "kind": 15, "detail": "padding-left/right: {size}", "documentation": { "value": "Sets horizontal padding. E.g. `px-2`, `px-4`, `px-6`." }, "insertText": "px-${1:4}", "insertTextRules": 4, "sortText": "0012" },
15
+ { "label": "py-${1:size}", "kind": 15, "detail": "padding-top/bottom: {size}", "documentation": { "value": "Sets vertical padding. E.g. `py-2`, `py-4`, `py-6`." }, "insertText": "py-${1:4}", "insertTextRules": 4, "sortText": "0013" },
16
+ { "label": "gap-${1:size}", "kind": 15, "detail": "gap: {size}", "documentation": { "value": "Sets the gap between flex/grid items. E.g. `gap-1`, `gap-2`, `gap-4`." }, "insertText": "gap-${1:4}", "insertTextRules": 4, "sortText": "0014" },
17
+ { "label": "space-x-${1:size}", "kind": 15, "detail": "horizontal space between children", "documentation": { "value": "Adds horizontal margin between child elements using `> * + *` selector." }, "insertText": "space-x-${1:4}", "insertTextRules": 4, "sortText": "0015" },
18
+ { "label": "w-${1:size}", "kind": 15, "detail": "width: {size}", "documentation": { "value": "Sets element width. E.g. `w-full`, `w-1/2`, `w-screen`, `w-64`." }, "insertText": "w-${1|full,auto,screen,1/2,1/3,1/4,64|}", "insertTextRules": 4, "sortText": "0016" },
19
+ { "label": "h-${1:size}", "kind": 15, "detail": "height: {size}", "documentation": { "value": "Sets element height. E.g. `h-full`, `h-screen`, `h-64`, `h-auto`." }, "insertText": "h-${1|full,auto,screen,64|}", "insertTextRules": 4, "sortText": "0017" },
20
+ { "label": "min-w-${1:size}", "kind": 15, "detail": "min-width: {size}", "documentation": { "value": "Sets minimum width. E.g. `min-w-0`, `min-w-full`, `min-w-min`, `min-w-max`." }, "insertText": "min-w-${1|0,full,min,max,fit|}", "insertTextRules": 4, "sortText": "0018" },
21
+ { "label": "max-w-${1:size}", "kind": 15, "detail": "max-width: {size}", "documentation": { "value": "Sets maximum width. E.g. `max-w-sm`, `max-w-md`, `max-w-lg`, `max-w-xl`, `max-w-screen-xl`." }, "insertText": "max-w-${1|xs,sm,md,lg,xl,2xl,full,screen-sm,screen-md,screen-lg|}", "insertTextRules": 4, "sortText": "0019" },
22
+ { "label": "size-${1:size}", "kind": 15, "detail": "width & height: {size}", "documentation": { "value": "Sets both width and height to the same value. E.g. `size-4`, `size-8`, `size-full`." }, "insertText": "size-${1:4}", "insertTextRules": 4, "sortText": "0020" },
23
+ { "label": "text-${1:size}", "kind": 15, "detail": "font-size: {size}", "documentation": { "value": "Sets font size. E.g. `text-xs`, `text-sm`, `text-base`, `text-lg`, `text-xl`, `text-2xl`." }, "insertText": "text-${1|xs,sm,base,lg,xl,2xl,3xl,4xl,5xl|}", "insertTextRules": 4, "sortText": "0021" },
24
+ { "label": "font-${1:weight}", "kind": 15, "detail": "font-weight: {weight}", "documentation": { "value": "Sets font weight. E.g. `font-thin`, `font-normal`, `font-medium`, `font-semibold`, `font-bold`." }, "insertText": "font-${1|thin,extralight,light,normal,medium,semibold,bold,extrabold,black|}", "insertTextRules": 4, "sortText": "0022" },
25
+ { "label": "leading-${1:size}", "kind": 15, "detail": "line-height: {size}", "documentation": { "value": "Sets line height. E.g. `leading-none`, `leading-tight`, `leading-normal`, `leading-relaxed`." }, "insertText": "leading-${1|none,tight,snug,normal,relaxed,loose|}", "insertTextRules": 4, "sortText": "0023" },
26
+ { "label": "tracking-${1:size}", "kind": 15, "detail": "letter-spacing: {size}", "documentation": { "value": "Sets letter spacing. E.g. `tracking-tighter`, `tracking-tight`, `tracking-normal`, `tracking-wide`." }, "insertText": "tracking-${1|tighter,tight,normal,wide,wider,widest|}", "insertTextRules": 4, "sortText": "0024" },
27
+ { "label": "bg-${1:color}", "kind": 15, "detail": "background-color: {color}", "documentation": { "value": "Sets background color. E.g. `bg-white`, `bg-black`, `bg-blue-500`, `bg-transparent`." }, "insertText": "bg-${1:blue-500}", "insertTextRules": 4, "sortText": "0025" },
28
+ { "label": "bg-gradient-to-${1:dir}", "kind": 15, "detail": "background-image: linear-gradient", "documentation": { "value": "Sets gradient direction. Use with `from-{color}` and `to-{color}`. E.g. `bg-gradient-to-r`, `bg-gradient-to-br`." }, "insertText": "bg-gradient-to-${1|t,tr,r,br,b,bl,l,tl|}", "insertTextRules": 4, "sortText": "0026" },
29
+ { "label": "from-${1:color}", "kind": 15, "detail": "gradient start color", "documentation": { "value": "Sets the starting color of a gradient. E.g. `from-blue-500`, `from-purple-400`." }, "insertText": "from-${1:blue-500}", "insertTextRules": 4, "sortText": "0027" },
30
+ { "label": "to-${1:color}", "kind": 15, "detail": "gradient end color", "documentation": { "value": "Sets the ending color of a gradient. E.g. `to-green-500`, `to-pink-400`." }, "insertText": "to-${1:green-500}", "insertTextRules": 4, "sortText": "0028" },
31
+ { "label": "border", "kind": 14, "detail": "border-width: 1px", "documentation": { "value": "Sets `border-width: 1px` on all sides." }, "insertText": "border", "insertTextRules": 0, "sortText": "0029" },
32
+ { "label": "border-${1:size}", "kind": 15, "detail": "border-width: {size}", "documentation": { "value": "Sets border width. E.g. `border-0`, `border-2`, `border-4`, `border-8`." }, "insertText": "border-${1|0,2,4,8|}", "insertTextRules": 4, "sortText": "0030" },
33
+ { "label": "rounded-${1:size}", "kind": 15, "detail": "border-radius: {size}", "documentation": { "value": "Sets border radius. E.g. `rounded-none`, `rounded-sm`, `rounded`, `rounded-md`, `rounded-lg`, `rounded-xl`, `rounded-full`." }, "insertText": "rounded-${1|none,sm,md,lg,xl,2xl,3xl,full|}", "insertTextRules": 4, "sortText": "0031" },
34
+ { "label": "ring-${1:size}", "kind": 15, "detail": "box-shadow ring: {size}", "documentation": { "value": "Creates a ring (outline) using box-shadow. E.g. `ring-0`, `ring-1`, `ring-2`, `ring-4`." }, "insertText": "ring-${1|0,1,2,4,8|}", "insertTextRules": 4, "sortText": "0032" },
35
+ { "label": "divide-${1:dir}", "kind": 15, "detail": "border between children", "documentation": { "value": "Adds borders between children. E.g. `divide-x`, `divide-y`, `divide-x-2`." }, "insertText": "divide-${1|x,y|}", "insertTextRules": 4, "sortText": "0033" },
36
+ { "label": "shadow-${1:size}", "kind": 15, "detail": "box-shadow: {size}", "documentation": { "value": "Sets box shadow. E.g. `shadow-sm`, `shadow`, `shadow-md`, `shadow-lg`, `shadow-xl`, `shadow-2xl`, `shadow-none`." }, "insertText": "shadow-${1|sm,md,lg,xl,2xl,inner,none|}", "insertTextRules": 4, "sortText": "0034" },
37
+ { "label": "opacity-${1:value}", "kind": 15, "detail": "opacity: {value}", "documentation": { "value": "Sets opacity. E.g. `opacity-0`, `opacity-25`, `opacity-50`, `opacity-75`, `opacity-100`." }, "insertText": "opacity-${1|0,5,10,20,25,30,40,50,60,70,75,80,90,95,100|}", "insertTextRules": 4, "sortText": "0035" },
38
+ { "label": "blur-${1:size}", "kind": 15, "detail": "filter: blur({size})", "documentation": { "value": "Applies blur filter. E.g. `blur-none`, `blur-sm`, `blur`, `blur-md`, `blur-lg`." }, "insertText": "blur-${1|none,sm,md,lg,xl,2xl,3xl|}", "insertTextRules": 4, "sortText": "0036" },
39
+ { "label": "backdrop-blur-${1:size}", "kind": 15, "detail": "backdrop-filter: blur({size})", "documentation": { "value": "Applies backdrop blur. E.g. `backdrop-blur-sm`, `backdrop-blur`, `backdrop-blur-md`." }, "insertText": "backdrop-blur-${1|none,sm,md,lg,xl,2xl,3xl|}", "insertTextRules": 4, "sortText": "0037" },
40
+ { "label": "transition", "kind": 14, "detail": "transition-property: multiple", "documentation": { "value": "Sets `transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter`." }, "insertText": "transition", "insertTextRules": 0, "sortText": "0038" },
41
+ { "label": "duration-${1:ms}", "kind": 15, "detail": "transition-duration: {ms}ms", "documentation": { "value": "Sets transition duration. E.g. `duration-75`, `duration-100`, `duration-150`, `duration-200`, `duration-300`." }, "insertText": "duration-${1|75,100,150,200,300,500,700,1000|}", "insertTextRules": 4, "sortText": "0039" },
42
+ { "label": "ease-${1:type}", "kind": 15, "detail": "transition-timing-function", "documentation": { "value": "Sets easing function. E.g. `ease-linear`, `ease-in`, `ease-out`, `ease-in-out`." }, "insertText": "ease-${1|linear,in,out,in-out|}", "insertTextRules": 4, "sortText": "0040" },
43
+ { "label": "animate-${1:name}", "kind": 15, "detail": "animation: {name}", "documentation": { "value": "Applies animation. E.g. `animate-none`, `animate-spin`, `animate-ping`, `animate-pulse`, `animate-bounce`." }, "insertText": "animate-${1|none,spin,ping,pulse,bounce|}", "insertTextRules": 4, "sortText": "0041" },
44
+ { "label": "sm:", "kind": 14, "detail": "Responsive: ≥640px", "documentation": { "value": "Applies styles at `min-width: 640px` and above. Usage: `sm:flex`, `sm:text-lg`." }, "insertText": "sm:", "insertTextRules": 0, "sortText": "0050" },
45
+ { "label": "md:", "kind": 14, "detail": "Responsive: ≥768px", "documentation": { "value": "Applies styles at `min-width: 768px` and above. Usage: `md:grid`, `md:p-8`." }, "insertText": "md:", "insertTextRules": 0, "sortText": "0051" },
46
+ { "label": "lg:", "kind": 14, "detail": "Responsive: ≥1024px", "documentation": { "value": "Applies styles at `min-width: 1024px` and above. Usage: `lg:flex-row`, `lg:text-xl`." }, "insertText": "lg:", "insertTextRules": 0, "sortText": "0052" },
47
+ { "label": "xl:", "kind": 14, "detail": "Responsive: ≥1280px", "documentation": { "value": "Applies styles at `min-width: 1280px` and above. Usage: `xl:max-w-screen-xl`." }, "insertText": "xl:", "insertTextRules": 0, "sortText": "0053" },
48
+ { "label": "2xl:", "kind": 14, "detail": "Responsive: ≥1536px", "documentation": { "value": "Applies styles at `min-width: 1536px` and above. Usage: `2xl:container`." }, "insertText": "2xl:", "insertTextRules": 0, "sortText": "0054" },
49
+ { "label": "hover:", "kind": 14, "detail": "State: :hover", "documentation": { "value": "Applies styles on hover. Usage: `hover:bg-blue-600`, `hover:underline`." }, "insertText": "hover:", "insertTextRules": 0, "sortText": "0060" },
50
+ { "label": "focus:", "kind": 14, "detail": "State: :focus", "documentation": { "value": "Applies styles on focus. Usage: `focus:ring-2`, `focus:outline-none`." }, "insertText": "focus:", "insertTextRules": 0, "sortText": "0061" },
51
+ { "label": "active:", "kind": 14, "detail": "State: :active", "documentation": { "value": "Applies styles on active/pressed state. Usage: `active:bg-blue-700`." }, "insertText": "active:", "insertTextRules": 0, "sortText": "0062" },
52
+ { "label": "dark:", "kind": 14, "detail": "Dark mode variant", "documentation": { "value": "Applies styles in dark mode. Usage: `dark:bg-gray-800`, `dark:text-white`." }, "insertText": "dark:", "insertTextRules": 0, "sortText": "0063" },
53
+ { "label": "group-hover:", "kind": 14, "detail": "State: group :hover child", "documentation": { "value": "Applies styles when parent `.group` is hovered. Usage: `group-hover:text-blue-500`." }, "insertText": "group-hover:", "insertTextRules": 0, "sortText": "0064" },
54
+ { "label": "peer-focus:", "kind": 14, "detail": "State: peer :focus sibling", "documentation": { "value": "Applies styles when sibling `.peer` is focused. Usage: `peer-focus:text-green-500`." }, "insertText": "peer-focus:", "insertTextRules": 0, "sortText": "0065" },
55
+ { "label": "@tailwind base", "kind": 15, "detail": "Tailwind base directive", "documentation": { "value": "Injects Tailwind's base styles (Preflight) into your CSS." }, "insertText": "@tailwind base;", "insertTextRules": 4, "sortText": "0070" },
56
+ { "label": "@tailwind components", "kind": 15, "detail": "Tailwind components directive", "documentation": { "value": "Injects Tailwind's component classes into your CSS." }, "insertText": "@tailwind components;", "insertTextRules": 4, "sortText": "0071" },
57
+ { "label": "@tailwind utilities", "kind": 15, "detail": "Tailwind utilities directive", "documentation": { "value": "Injects Tailwind's utility classes into your CSS." }, "insertText": "@tailwind utilities;", "insertTextRules": 4, "sortText": "0072" },
58
+ { "label": "@apply", "kind": 15, "detail": "Apply utility classes inline", "documentation": { "value": "Applies existing Tailwind utility classes in custom CSS. E.g. `@apply flex items-center p-4;`" }, "insertText": "@apply ${1:flex items-center};", "insertTextRules": 4, "sortText": "0073" },
59
+ { "label": "@layer", "kind": 15, "detail": "Tailwind layer directive", "documentation": { "value": "Adds custom styles to a Tailwind layer: `base`, `components`, or `utilities`." }, "insertText": "@layer ${1|base,components,utilities|} {\n $0\n}", "insertTextRules": 4, "sortText": "0074" },
60
+ { "label": "@config", "kind": 15, "detail": "Tailwind config directive", "documentation": { "value": "Specifies the Tailwind config file to use for this CSS file. E.g. `@config './tailwind.config.js';`" }, "insertText": "@config '${1:./tailwind.config.js}';", "insertTextRules": 4, "sortText": "0075" },
61
+ { "label": "items-center", "kind": 14, "detail": "align-items: center", "documentation": { "value": "Sets `align-items: center` to vertically center flex/grid children." }, "insertText": "items-center", "insertTextRules": 0, "sortText": "0080" },
62
+ { "label": "justify-center", "kind": 14, "detail": "justify-content: center", "documentation": { "value": "Sets `justify-content: center` to horizontally center flex/grid children." }, "insertText": "justify-center", "insertTextRules": 0, "sortText": "0081" },
63
+ { "label": "text-${1:color}", "kind": 15, "detail": "color: {color}", "documentation": { "value": "Sets text color. E.g. `text-white`, `text-gray-700`, `text-blue-500`." }, "insertText": "text-${1:gray-700}", "insertTextRules": 4, "sortText": "0082" },
64
+ { "label": "-m-${1:size}", "kind": 15, "detail": "negative margin", "documentation": { "value": "Sets negative margin. E.g. `-m-1`, `-m-2`, `-m-4`." }, "insertText": "-m-${1:4}", "insertTextRules": 4, "sortText": "0083" },
65
+ { "label": "!important modifier", "kind": 15, "detail": "! prefix for important", "documentation": { "value": "Prefix any utility with `!` to apply `!important`. E.g. `!p-4`, `!text-red-500`." }, "insertText": "!${1:p-4}", "insertTextRules": 4, "sortText": "0084" },
66
+
67
+ { "label": "relative", "kind": 14, "detail": "position: relative", "documentation": { "value": "Sets `position: relative` on the element." }, "insertText": "relative", "insertTextRules": 0, "sortText": "0100" },
68
+ { "label": "absolute", "kind": 14, "detail": "position: absolute", "documentation": { "value": "Sets `position: absolute` on the element." }, "insertText": "absolute", "insertTextRules": 0, "sortText": "0101" },
69
+ { "label": "fixed", "kind": 14, "detail": "position: fixed", "documentation": { "value": "Sets `position: fixed` on the element." }, "insertText": "fixed", "insertTextRules": 0, "sortText": "0102" },
70
+ { "label": "sticky", "kind": 14, "detail": "position: sticky", "documentation": { "value": "Sets `position: sticky` on the element." }, "insertText": "sticky", "insertTextRules": 0, "sortText": "0103" },
71
+ { "label": "static", "kind": 14, "detail": "position: static", "documentation": { "value": "Sets `position: static` on the element (default)." }, "insertText": "static", "insertTextRules": 0, "sortText": "0104" },
72
+ { "label": "inset-${1:value}", "kind": 15, "detail": "top/right/bottom/left: {value}", "documentation": { "value": "Sets all inset properties. E.g. `inset-0`, `inset-auto`, `inset-x-0`, `inset-y-0`." }, "insertText": "inset-${1|0,auto,x-0,y-0,x-auto,y-auto|}", "insertTextRules": 4, "sortText": "0105" },
73
+ { "label": "top-${1:value}", "kind": 15, "detail": "top: {value}", "documentation": { "value": "Sets top position. E.g. `top-0`, `top-1`, `top-auto`, `top-1/2`, `top-full`." }, "insertText": "top-${1|0,1,2,4,auto,1/2,full|}", "insertTextRules": 4, "sortText": "0106" },
74
+ { "label": "right-${1:value}", "kind": 15, "detail": "right: {value}", "documentation": { "value": "Sets right position. E.g. `right-0`, `right-auto`, `right-full`." }, "insertText": "right-${1|0,1,2,4,auto,1/2,full|}", "insertTextRules": 4, "sortText": "0107" },
75
+ { "label": "bottom-${1:value}", "kind": 15, "detail": "bottom: {value}", "documentation": { "value": "Sets bottom position. E.g. `bottom-0`, `bottom-auto`, `bottom-full`." }, "insertText": "bottom-${1|0,1,2,4,auto,1/2,full|}", "insertTextRules": 4, "sortText": "0108" },
76
+ { "label": "left-${1:value}", "kind": 15, "detail": "left: {value}", "documentation": { "value": "Sets left position. E.g. `left-0`, `left-auto`, `left-full`." }, "insertText": "left-${1|0,1,2,4,auto,1/2,full|}", "insertTextRules": 4, "sortText": "0109" },
77
+ { "label": "z-${1:value}", "kind": 15, "detail": "z-index: {value}", "documentation": { "value": "Sets z-index. E.g. `z-0`, `z-10`, `z-20`, `z-30`, `z-40`, `z-50`, `z-auto`." }, "insertText": "z-${1|0,10,20,30,40,50,auto|}", "insertTextRules": 4, "sortText": "0110" },
78
+
79
+ { "label": "overflow-${1:value}", "kind": 15, "detail": "overflow: {value}", "documentation": { "value": "Sets overflow behavior. E.g. `overflow-auto`, `overflow-hidden`, `overflow-visible`, `overflow-scroll`." }, "insertText": "overflow-${1|auto,hidden,visible,scroll,x-auto,y-auto,x-hidden,y-hidden,x-scroll,y-scroll|}", "insertTextRules": 4, "sortText": "0115" },
80
+ { "label": "overscroll-${1:value}", "kind": 15, "detail": "overscroll-behavior: {value}", "documentation": { "value": "Sets overscroll behavior. E.g. `overscroll-auto`, `overscroll-contain`, `overscroll-none`." }, "insertText": "overscroll-${1|auto,contain,none,x-auto,y-auto,x-contain,y-contain,x-none,y-none|}", "insertTextRules": 4, "sortText": "0116" },
81
+
82
+ { "label": "flex-row", "kind": 14, "detail": "flex-direction: row", "documentation": { "value": "Sets flex direction to row (horizontal, default)." }, "insertText": "flex-row", "insertTextRules": 0, "sortText": "0120" },
83
+ { "label": "flex-col", "kind": 14, "detail": "flex-direction: column", "documentation": { "value": "Sets flex direction to column (vertical)." }, "insertText": "flex-col", "insertTextRules": 0, "sortText": "0121" },
84
+ { "label": "flex-row-reverse", "kind": 14, "detail": "flex-direction: row-reverse", "documentation": { "value": "Sets flex direction to reversed row." }, "insertText": "flex-row-reverse", "insertTextRules": 0, "sortText": "0122" },
85
+ { "label": "flex-col-reverse", "kind": 14, "detail": "flex-direction: column-reverse", "documentation": { "value": "Sets flex direction to reversed column." }, "insertText": "flex-col-reverse", "insertTextRules": 0, "sortText": "0123" },
86
+ { "label": "flex-wrap", "kind": 14, "detail": "flex-wrap: wrap", "documentation": { "value": "Allows flex items to wrap to new lines." }, "insertText": "flex-wrap", "insertTextRules": 0, "sortText": "0124" },
87
+ { "label": "flex-nowrap", "kind": 14, "detail": "flex-wrap: nowrap", "documentation": { "value": "Prevents flex items from wrapping." }, "insertText": "flex-nowrap", "insertTextRules": 0, "sortText": "0125" },
88
+ { "label": "flex-wrap-reverse", "kind": 14, "detail": "flex-wrap: wrap-reverse", "documentation": { "value": "Flex items wrap in reverse order." }, "insertText": "flex-wrap-reverse", "insertTextRules": 0, "sortText": "0126" },
89
+ { "label": "flex-1", "kind": 14, "detail": "flex: 1 1 0%", "documentation": { "value": "Sets `flex: 1 1 0%` — item grows and shrinks, ignoring initial size." }, "insertText": "flex-1", "insertTextRules": 0, "sortText": "0127" },
90
+ { "label": "flex-auto", "kind": 14, "detail": "flex: 1 1 auto", "documentation": { "value": "Sets `flex: 1 1 auto` — item grows and shrinks considering initial size." }, "insertText": "flex-auto", "insertTextRules": 0, "sortText": "0128" },
91
+ { "label": "flex-initial", "kind": 14, "detail": "flex: 0 1 auto", "documentation": { "value": "Sets `flex: 0 1 auto` — item can shrink but won't grow." }, "insertText": "flex-initial", "insertTextRules": 0, "sortText": "0129" },
92
+ { "label": "flex-none", "kind": 14, "detail": "flex: none", "documentation": { "value": "Prevents the item from growing or shrinking." }, "insertText": "flex-none", "insertTextRules": 0, "sortText": "0130" },
93
+ { "label": "grow", "kind": 14, "detail": "flex-grow: 1", "documentation": { "value": "Allows a flex item to grow to fill available space." }, "insertText": "grow", "insertTextRules": 0, "sortText": "0131" },
94
+ { "label": "grow-0", "kind": 14, "detail": "flex-grow: 0", "documentation": { "value": "Prevents a flex item from growing." }, "insertText": "grow-0", "insertTextRules": 0, "sortText": "0132" },
95
+ { "label": "shrink", "kind": 14, "detail": "flex-shrink: 1", "documentation": { "value": "Allows a flex item to shrink if needed." }, "insertText": "shrink", "insertTextRules": 0, "sortText": "0133" },
96
+ { "label": "shrink-0", "kind": 14, "detail": "flex-shrink: 0", "documentation": { "value": "Prevents a flex item from shrinking." }, "insertText": "shrink-0", "insertTextRules": 0, "sortText": "0134" },
97
+ { "label": "order-${1:n}", "kind": 15, "detail": "order: {n}", "documentation": { "value": "Sets the order of a flex/grid item. E.g. `order-1`, `order-first`, `order-last`, `order-none`." }, "insertText": "order-${1|1,2,3,4,5,6,7,8,9,10,11,12,first,last,none|}", "insertTextRules": 4, "sortText": "0135" },
98
+
99
+ { "label": "items-${1:value}", "kind": 15, "detail": "align-items: {value}", "documentation": { "value": "Sets align-items. E.g. `items-start`, `items-end`, `items-center`, `items-baseline`, `items-stretch`." }, "insertText": "items-${1|start,end,center,baseline,stretch|}", "insertTextRules": 4, "sortText": "0140" },
100
+ { "label": "justify-${1:value}", "kind": 15, "detail": "justify-content: {value}", "documentation": { "value": "Sets justify-content. E.g. `justify-start`, `justify-end`, `justify-center`, `justify-between`, `justify-around`, `justify-evenly`." }, "insertText": "justify-${1|start,end,center,between,around,evenly|}", "insertTextRules": 4, "sortText": "0141" },
101
+ { "label": "justify-items-${1:value}", "kind": 15, "detail": "justify-items: {value}", "documentation": { "value": "Sets justify-items for grid. E.g. `justify-items-start`, `justify-items-center`, `justify-items-stretch`." }, "insertText": "justify-items-${1|start,end,center,stretch|}", "insertTextRules": 4, "sortText": "0142" },
102
+ { "label": "justify-self-${1:value}", "kind": 15, "detail": "justify-self: {value}", "documentation": { "value": "Sets justify-self for a grid item. E.g. `justify-self-auto`, `justify-self-start`, `justify-self-center`." }, "insertText": "justify-self-${1|auto,start,end,center,stretch|}", "insertTextRules": 4, "sortText": "0143" },
103
+ { "label": "self-${1:value}", "kind": 15, "detail": "align-self: {value}", "documentation": { "value": "Sets align-self. E.g. `self-auto`, `self-start`, `self-end`, `self-center`, `self-stretch`." }, "insertText": "self-${1|auto,start,end,center,stretch,baseline|}", "insertTextRules": 4, "sortText": "0144" },
104
+ { "label": "content-${1:value}", "kind": 15, "detail": "align-content: {value}", "documentation": { "value": "Sets align-content. E.g. `content-center`, `content-start`, `content-end`, `content-between`." }, "insertText": "content-${1|normal,center,start,end,between,around,evenly,baseline,stretch|}", "insertTextRules": 4, "sortText": "0145" },
105
+ { "label": "place-content-${1:value}", "kind": 15, "detail": "place-content: {value}", "documentation": { "value": "Sets place-content. E.g. `place-content-center`, `place-content-between`." }, "insertText": "place-content-${1|center,start,end,between,around,evenly,baseline,stretch|}", "insertTextRules": 4, "sortText": "0146" },
106
+ { "label": "place-items-${1:value}", "kind": 15, "detail": "place-items: {value}", "documentation": { "value": "Sets place-items. E.g. `place-items-center`, `place-items-start`." }, "insertText": "place-items-${1|start,end,center,baseline,stretch|}", "insertTextRules": 4, "sortText": "0147" },
107
+ { "label": "place-self-${1:value}", "kind": 15, "detail": "place-self: {value}", "documentation": { "value": "Sets place-self. E.g. `place-self-auto`, `place-self-center`." }, "insertText": "place-self-${1|auto,start,end,center,stretch|}", "insertTextRules": 4, "sortText": "0148" },
108
+
109
+ { "label": "grid-cols-${1:n}", "kind": 15, "detail": "grid-template-columns: repeat({n})", "documentation": { "value": "Sets number of grid columns. E.g. `grid-cols-1` through `grid-cols-12`, `grid-cols-none`, `grid-cols-subgrid`." }, "insertText": "grid-cols-${1|1,2,3,4,5,6,7,8,9,10,11,12,none,subgrid|}", "insertTextRules": 4, "sortText": "0150" },
110
+ { "label": "grid-rows-${1:n}", "kind": 15, "detail": "grid-template-rows: repeat({n})", "documentation": { "value": "Sets number of grid rows. E.g. `grid-rows-1` through `grid-rows-6`, `grid-rows-none`, `grid-rows-subgrid`." }, "insertText": "grid-rows-${1|1,2,3,4,5,6,none,subgrid|}", "insertTextRules": 4, "sortText": "0151" },
111
+ { "label": "col-span-${1:n}", "kind": 15, "detail": "grid-column: span {n}", "documentation": { "value": "Sets how many columns a grid item spans. E.g. `col-span-1` through `col-span-12`, `col-span-full`." }, "insertText": "col-span-${1|1,2,3,4,5,6,7,8,9,10,11,12,full|}", "insertTextRules": 4, "sortText": "0152" },
112
+ { "label": "col-start-${1:n}", "kind": 15, "detail": "grid-column-start: {n}", "documentation": { "value": "Sets the starting grid column line. E.g. `col-start-1` through `col-start-13`, `col-start-auto`." }, "insertText": "col-start-${1|1,2,3,4,5,6,7,8,9,10,11,12,13,auto|}", "insertTextRules": 4, "sortText": "0153" },
113
+ { "label": "col-end-${1:n}", "kind": 15, "detail": "grid-column-end: {n}", "documentation": { "value": "Sets the ending grid column line. E.g. `col-end-1` through `col-end-13`, `col-end-auto`." }, "insertText": "col-end-${1|1,2,3,4,5,6,7,8,9,10,11,12,13,auto|}", "insertTextRules": 4, "sortText": "0154" },
114
+ { "label": "row-span-${1:n}", "kind": 15, "detail": "grid-row: span {n}", "documentation": { "value": "Sets how many rows a grid item spans. E.g. `row-span-1` through `row-span-6`, `row-span-full`." }, "insertText": "row-span-${1|1,2,3,4,5,6,full|}", "insertTextRules": 4, "sortText": "0155" },
115
+ { "label": "row-start-${1:n}", "kind": 15, "detail": "grid-row-start: {n}", "documentation": { "value": "Sets the starting grid row line." }, "insertText": "row-start-${1|1,2,3,4,5,6,7,auto|}", "insertTextRules": 4, "sortText": "0156" },
116
+ { "label": "row-end-${1:n}", "kind": 15, "detail": "grid-row-end: {n}", "documentation": { "value": "Sets the ending grid row line." }, "insertText": "row-end-${1|1,2,3,4,5,6,7,auto|}", "insertTextRules": 4, "sortText": "0157" },
117
+ { "label": "auto-cols-${1:value}", "kind": 15, "detail": "grid-auto-columns: {value}", "documentation": { "value": "Sets implicit grid column size. E.g. `auto-cols-auto`, `auto-cols-min`, `auto-cols-max`, `auto-cols-fr`." }, "insertText": "auto-cols-${1|auto,min,max,fr|}", "insertTextRules": 4, "sortText": "0158" },
118
+ { "label": "auto-rows-${1:value}", "kind": 15, "detail": "grid-auto-rows: {value}", "documentation": { "value": "Sets implicit grid row size. E.g. `auto-rows-auto`, `auto-rows-min`, `auto-rows-max`, `auto-rows-fr`." }, "insertText": "auto-rows-${1|auto,min,max,fr|}", "insertTextRules": 4, "sortText": "0159" },
119
+ { "label": "grid-flow-${1:value}", "kind": 15, "detail": "grid-auto-flow: {value}", "documentation": { "value": "Sets grid auto-flow. E.g. `grid-flow-row`, `grid-flow-col`, `grid-flow-dense`, `grid-flow-row-dense`, `grid-flow-col-dense`." }, "insertText": "grid-flow-${1|row,col,dense,row-dense,col-dense|}", "insertTextRules": 4, "sortText": "0160" },
120
+ { "label": "gap-x-${1:size}", "kind": 15, "detail": "column-gap: {size}", "documentation": { "value": "Sets horizontal gap between grid/flex items. E.g. `gap-x-2`, `gap-x-4`, `gap-x-6`." }, "insertText": "gap-x-${1:4}", "insertTextRules": 4, "sortText": "0161" },
121
+ { "label": "gap-y-${1:size}", "kind": 15, "detail": "row-gap: {size}", "documentation": { "value": "Sets vertical gap between grid/flex items. E.g. `gap-y-2`, `gap-y-4`, `gap-y-6`." }, "insertText": "gap-y-${1:4}", "insertTextRules": 4, "sortText": "0162" },
122
+
123
+ { "label": "uppercase", "kind": 14, "detail": "text-transform: uppercase", "documentation": { "value": "Sets text to uppercase." }, "insertText": "uppercase", "insertTextRules": 0, "sortText": "0170" },
124
+ { "label": "lowercase", "kind": 14, "detail": "text-transform: lowercase", "documentation": { "value": "Sets text to lowercase." }, "insertText": "lowercase", "insertTextRules": 0, "sortText": "0171" },
125
+ { "label": "capitalize", "kind": 14, "detail": "text-transform: capitalize", "documentation": { "value": "Capitalizes the first letter of each word." }, "insertText": "capitalize", "insertTextRules": 0, "sortText": "0172" },
126
+ { "label": "normal-case", "kind": 14, "detail": "text-transform: none", "documentation": { "value": "Resets text transform to none." }, "insertText": "normal-case", "insertTextRules": 0, "sortText": "0173" },
127
+ { "label": "italic", "kind": 14, "detail": "font-style: italic", "documentation": { "value": "Sets font style to italic." }, "insertText": "italic", "insertTextRules": 0, "sortText": "0174" },
128
+ { "label": "not-italic", "kind": 14, "detail": "font-style: normal", "documentation": { "value": "Resets font style to normal." }, "insertText": "not-italic", "insertTextRules": 0, "sortText": "0175" },
129
+ { "label": "underline", "kind": 14, "detail": "text-decoration: underline", "documentation": { "value": "Adds underline text decoration." }, "insertText": "underline", "insertTextRules": 0, "sortText": "0176" },
130
+ { "label": "line-through", "kind": 14, "detail": "text-decoration: line-through", "documentation": { "value": "Adds strikethrough text decoration." }, "insertText": "line-through", "insertTextRules": 0, "sortText": "0177" },
131
+ { "label": "no-underline", "kind": 14, "detail": "text-decoration: none", "documentation": { "value": "Removes text decoration." }, "insertText": "no-underline", "insertTextRules": 0, "sortText": "0178" },
132
+ { "label": "truncate", "kind": 14, "detail": "overflow: hidden + text-overflow: ellipsis", "documentation": { "value": "Truncates overflowing text with an ellipsis. Sets `overflow: hidden`, `text-overflow: ellipsis`, `white-space: nowrap`." }, "insertText": "truncate", "insertTextRules": 0, "sortText": "0179" },
133
+ { "label": "text-ellipsis", "kind": 14, "detail": "text-overflow: ellipsis", "documentation": { "value": "Sets `text-overflow: ellipsis`." }, "insertText": "text-ellipsis", "insertTextRules": 0, "sortText": "0180" },
134
+ { "label": "text-clip", "kind": 14, "detail": "text-overflow: clip", "documentation": { "value": "Sets `text-overflow: clip` — text is clipped without ellipsis." }, "insertText": "text-clip", "insertTextRules": 0, "sortText": "0181" },
135
+ { "label": "whitespace-${1:value}", "kind": 15, "detail": "white-space: {value}", "documentation": { "value": "Sets white-space. E.g. `whitespace-normal`, `whitespace-nowrap`, `whitespace-pre`, `whitespace-pre-line`, `whitespace-pre-wrap`." }, "insertText": "whitespace-${1|normal,nowrap,pre,pre-line,pre-wrap,break-spaces|}", "insertTextRules": 4, "sortText": "0182" },
136
+ { "label": "break-${1:value}", "kind": 15, "detail": "word-break/overflow-wrap: {value}", "documentation": { "value": "Sets word break behavior. E.g. `break-normal`, `break-words`, `break-all`, `break-keep`." }, "insertText": "break-${1|normal,words,all,keep|}", "insertTextRules": 4, "sortText": "0183" },
137
+ { "label": "line-clamp-${1:n}", "kind": 15, "detail": "truncate to {n} lines", "documentation": { "value": "Truncates text to a specific number of lines with ellipsis. E.g. `line-clamp-1`, `line-clamp-2`, `line-clamp-3`." }, "insertText": "line-clamp-${1|1,2,3,4,5,6,none|}", "insertTextRules": 4, "sortText": "0184" },
138
+ { "label": "text-${1:align}", "kind": 15, "detail": "text-align: {align}", "documentation": { "value": "Sets text alignment. E.g. `text-left`, `text-center`, `text-right`, `text-justify`, `text-start`, `text-end`." }, "insertText": "text-${1|left,center,right,justify,start,end|}", "insertTextRules": 4, "sortText": "0185" },
139
+ { "label": "align-${1:value}", "kind": 15, "detail": "vertical-align: {value}", "documentation": { "value": "Sets vertical alignment. E.g. `align-baseline`, `align-top`, `align-middle`, `align-bottom`." }, "insertText": "align-${1|baseline,top,middle,bottom,text-top,text-bottom,sub,super|}", "insertTextRules": 4, "sortText": "0186" },
140
+ { "label": "font-${1:family}", "kind": 15, "detail": "font-family: {family}", "documentation": { "value": "Sets font family. E.g. `font-sans`, `font-serif`, `font-mono`." }, "insertText": "font-${1|sans,serif,mono|}", "insertTextRules": 4, "sortText": "0187" },
141
+ { "label": "list-${1:type}", "kind": 15, "detail": "list-style-type: {type}", "documentation": { "value": "Sets list style. E.g. `list-none`, `list-disc`, `list-decimal`." }, "insertText": "list-${1|none,disc,decimal|}", "insertTextRules": 4, "sortText": "0188" },
142
+ { "label": "list-inside", "kind": 14, "detail": "list-style-position: inside", "documentation": { "value": "Places list markers inside the content flow." }, "insertText": "list-inside", "insertTextRules": 0, "sortText": "0189" },
143
+ { "label": "list-outside", "kind": 14, "detail": "list-style-position: outside", "documentation": { "value": "Places list markers outside the content flow (default)." }, "insertText": "list-outside", "insertTextRules": 0, "sortText": "0190" },
144
+
145
+ { "label": "grayscale", "kind": 14, "detail": "filter: grayscale(100%)", "documentation": { "value": "Applies full grayscale filter." }, "insertText": "grayscale", "insertTextRules": 0, "sortText": "0200" },
146
+ { "label": "grayscale-0", "kind": 14, "detail": "filter: grayscale(0)", "documentation": { "value": "Removes grayscale filter." }, "insertText": "grayscale-0", "insertTextRules": 0, "sortText": "0201" },
147
+ { "label": "invert", "kind": 14, "detail": "filter: invert(100%)", "documentation": { "value": "Inverts the element's colors." }, "insertText": "invert", "insertTextRules": 0, "sortText": "0202" },
148
+ { "label": "sepia", "kind": 14, "detail": "filter: sepia(100%)", "documentation": { "value": "Applies sepia tone filter." }, "insertText": "sepia", "insertTextRules": 0, "sortText": "0203" },
149
+ { "label": "saturate-${1:value}", "kind": 15, "detail": "filter: saturate({value})", "documentation": { "value": "Sets saturation filter. E.g. `saturate-0`, `saturate-50`, `saturate-100`, `saturate-150`, `saturate-200`." }, "insertText": "saturate-${1|0,50,100,150,200|}", "insertTextRules": 4, "sortText": "0204" },
150
+ { "label": "brightness-${1:value}", "kind": 15, "detail": "filter: brightness({value})", "documentation": { "value": "Sets brightness filter. E.g. `brightness-0`, `brightness-50`, `brightness-75`, `brightness-100`, `brightness-125`, `brightness-150`, `brightness-200`." }, "insertText": "brightness-${1|0,50,75,90,95,100,105,110,125,150,200|}", "insertTextRules": 4, "sortText": "0205" },
151
+ { "label": "contrast-${1:value}", "kind": 15, "detail": "filter: contrast({value})", "documentation": { "value": "Sets contrast filter. E.g. `contrast-0`, `contrast-50`, `contrast-100`, `contrast-125`, `contrast-200`." }, "insertText": "contrast-${1|0,50,75,100,125,150,200|}", "insertTextRules": 4, "sortText": "0206" },
152
+ { "label": "hue-rotate-${1:deg}", "kind": 15, "detail": "filter: hue-rotate({deg}deg)", "documentation": { "value": "Rotates the hue. E.g. `hue-rotate-15`, `hue-rotate-30`, `hue-rotate-60`, `hue-rotate-90`, `hue-rotate-180`." }, "insertText": "hue-rotate-${1|0,15,30,60,90,180|}", "insertTextRules": 4, "sortText": "0207" },
153
+ { "label": "drop-shadow-${1:size}", "kind": 15, "detail": "filter: drop-shadow()", "documentation": { "value": "Applies drop shadow filter. E.g. `drop-shadow-sm`, `drop-shadow`, `drop-shadow-md`, `drop-shadow-lg`, `drop-shadow-xl`, `drop-shadow-none`." }, "insertText": "drop-shadow-${1|sm,md,lg,xl,2xl,none|}", "insertTextRules": 4, "sortText": "0208" },
154
+
155
+ { "label": "backdrop-brightness-${1:value}", "kind": 15, "detail": "backdrop-filter: brightness()", "documentation": { "value": "Sets backdrop brightness. E.g. `backdrop-brightness-50`, `backdrop-brightness-100`, `backdrop-brightness-150`." }, "insertText": "backdrop-brightness-${1|0,50,75,90,95,100,105,110,125,150,200|}", "insertTextRules": 4, "sortText": "0210" },
156
+ { "label": "backdrop-contrast-${1:value}", "kind": 15, "detail": "backdrop-filter: contrast()", "documentation": { "value": "Sets backdrop contrast. E.g. `backdrop-contrast-50`, `backdrop-contrast-100`." }, "insertText": "backdrop-contrast-${1|0,50,75,100,125,150,200|}", "insertTextRules": 4, "sortText": "0211" },
157
+ { "label": "backdrop-grayscale", "kind": 14, "detail": "backdrop-filter: grayscale(100%)", "documentation": { "value": "Applies grayscale to the backdrop." }, "insertText": "backdrop-grayscale", "insertTextRules": 0, "sortText": "0212" },
158
+ { "label": "backdrop-invert", "kind": 14, "detail": "backdrop-filter: invert(100%)", "documentation": { "value": "Inverts colors of the backdrop." }, "insertText": "backdrop-invert", "insertTextRules": 0, "sortText": "0213" },
159
+ { "label": "backdrop-saturate-${1:value}", "kind": 15, "detail": "backdrop-filter: saturate()", "documentation": { "value": "Sets backdrop saturation." }, "insertText": "backdrop-saturate-${1|0,50,100,150,200|}", "insertTextRules": 4, "sortText": "0214" },
160
+ { "label": "backdrop-sepia", "kind": 14, "detail": "backdrop-filter: sepia(100%)", "documentation": { "value": "Applies sepia tone to the backdrop." }, "insertText": "backdrop-sepia", "insertTextRules": 0, "sortText": "0215" },
161
+ { "label": "backdrop-opacity-${1:value}", "kind": 15, "detail": "backdrop-filter: opacity()", "documentation": { "value": "Sets backdrop opacity. E.g. `backdrop-opacity-0`, `backdrop-opacity-50`, `backdrop-opacity-100`." }, "insertText": "backdrop-opacity-${1|0,5,10,20,25,30,40,50,60,70,75,80,90,95,100|}", "insertTextRules": 4, "sortText": "0216" },
162
+
163
+ { "label": "ring-${1:color}", "kind": 15, "detail": "ring-color: {color}", "documentation": { "value": "Sets the ring color. E.g. `ring-blue-500`, `ring-red-400`, `ring-transparent`." }, "insertText": "ring-${1:blue-500}", "insertTextRules": 4, "sortText": "0220" },
164
+ { "label": "ring-offset-${1:size}", "kind": 15, "detail": "ring-offset-width: {size}", "documentation": { "value": "Sets the ring offset width. E.g. `ring-offset-0`, `ring-offset-1`, `ring-offset-2`, `ring-offset-4`, `ring-offset-8`." }, "insertText": "ring-offset-${1|0,1,2,4,8|}", "insertTextRules": 4, "sortText": "0221" },
165
+ { "label": "ring-offset-${1:color}", "kind": 15, "detail": "ring-offset-color: {color}", "documentation": { "value": "Sets the ring offset color. E.g. `ring-offset-white`, `ring-offset-gray-100`." }, "insertText": "ring-offset-${1:white}", "insertTextRules": 4, "sortText": "0222" },
166
+ { "label": "ring-inset", "kind": 14, "detail": "box-shadow: inset ring", "documentation": { "value": "Makes the ring render as an inset shadow." }, "insertText": "ring-inset", "insertTextRules": 0, "sortText": "0223" },
167
+ { "label": "outline-${1:value}", "kind": 15, "detail": "outline: {value}", "documentation": { "value": "Sets outline style. E.g. `outline-none`, `outline`, `outline-dashed`, `outline-dotted`, `outline-double`." }, "insertText": "outline-${1|none,,dashed,dotted,double|}", "insertTextRules": 4, "sortText": "0224" },
168
+ { "label": "outline-${1:size}", "kind": 15, "detail": "outline-width: {size}", "documentation": { "value": "Sets outline width. E.g. `outline-0`, `outline-1`, `outline-2`, `outline-4`, `outline-8`." }, "insertText": "outline-${1|0,1,2,4,8|}", "insertTextRules": 4, "sortText": "0225" },
169
+ { "label": "outline-offset-${1:size}", "kind": 15, "detail": "outline-offset: {size}", "documentation": { "value": "Sets outline offset. E.g. `outline-offset-0`, `outline-offset-1`, `outline-offset-2`, `outline-offset-4`." }, "insertText": "outline-offset-${1|0,1,2,4,8|}", "insertTextRules": 4, "sortText": "0226" },
170
+
171
+ { "label": "divide-x-${1:size}", "kind": 15, "detail": "border-left-width between children", "documentation": { "value": "Adds vertical dividers between children. E.g. `divide-x`, `divide-x-2`, `divide-x-4`." }, "insertText": "divide-x-${1|0,2,4,8,reverse|}", "insertTextRules": 4, "sortText": "0230" },
172
+ { "label": "divide-y-${1:size}", "kind": 15, "detail": "border-top-width between children", "documentation": { "value": "Adds horizontal dividers between children. E.g. `divide-y`, `divide-y-2`, `divide-y-4`." }, "insertText": "divide-y-${1|0,2,4,8,reverse|}", "insertTextRules": 4, "sortText": "0231" },
173
+ { "label": "divide-${1:color}", "kind": 15, "detail": "divide-color: {color}", "documentation": { "value": "Sets the color of divide borders. E.g. `divide-gray-200`, `divide-slate-300`." }, "insertText": "divide-${1:gray-200}", "insertTextRules": 4, "sortText": "0232" },
174
+ { "label": "divide-${1:style}", "kind": 15, "detail": "divide-style: {style}", "documentation": { "value": "Sets divide border style. E.g. `divide-solid`, `divide-dashed`, `divide-dotted`, `divide-none`." }, "insertText": "divide-${1|solid,dashed,dotted,double,none|}", "insertTextRules": 4, "sortText": "0233" },
175
+ { "label": "space-y-${1:size}", "kind": 15, "detail": "vertical space between children", "documentation": { "value": "Adds vertical margin between child elements using `> * + *` selector." }, "insertText": "space-y-${1:4}", "insertTextRules": 4, "sortText": "0234" },
176
+
177
+ { "label": "scale-${1:value}", "kind": 15, "detail": "transform: scale({value})", "documentation": { "value": "Sets scale. E.g. `scale-0`, `scale-50`, `scale-75`, `scale-90`, `scale-95`, `scale-100`, `scale-105`, `scale-110`, `scale-125`, `scale-150`." }, "insertText": "scale-${1|0,50,75,90,95,100,105,110,125,150|}", "insertTextRules": 4, "sortText": "0240" },
178
+ { "label": "rotate-${1:deg}", "kind": 15, "detail": "transform: rotate({deg}deg)", "documentation": { "value": "Sets rotation. E.g. `rotate-0`, `rotate-1`, `rotate-2`, `rotate-3`, `rotate-6`, `rotate-12`, `rotate-45`, `rotate-90`, `rotate-180`." }, "insertText": "rotate-${1|0,1,2,3,6,12,45,90,180|}", "insertTextRules": 4, "sortText": "0241" },
179
+ { "label": "translate-x-${1:value}", "kind": 15, "detail": "transform: translateX()", "documentation": { "value": "Sets horizontal translation. E.g. `translate-x-0`, `translate-x-1`, `translate-x-4`, `translate-x-1/2`, `translate-x-full`." }, "insertText": "translate-x-${1|0,1,2,4,8,1/2,full|}", "insertTextRules": 4, "sortText": "0242" },
180
+ { "label": "translate-y-${1:value}", "kind": 15, "detail": "transform: translateY()", "documentation": { "value": "Sets vertical translation. E.g. `translate-y-0`, `translate-y-1`, `translate-y-4`, `translate-y-1/2`, `translate-y-full`." }, "insertText": "translate-y-${1|0,1,2,4,8,1/2,full|}", "insertTextRules": 4, "sortText": "0243" },
181
+ { "label": "skew-x-${1:deg}", "kind": 15, "detail": "transform: skewX({deg}deg)", "documentation": { "value": "Sets horizontal skew. E.g. `skew-x-0`, `skew-x-1`, `skew-x-2`, `skew-x-3`, `skew-x-6`, `skew-x-12`." }, "insertText": "skew-x-${1|0,1,2,3,6,12|}", "insertTextRules": 4, "sortText": "0244" },
182
+ { "label": "skew-y-${1:deg}", "kind": 15, "detail": "transform: skewY({deg}deg)", "documentation": { "value": "Sets vertical skew." }, "insertText": "skew-y-${1|0,1,2,3,6,12|}", "insertTextRules": 4, "sortText": "0245" },
183
+ { "label": "origin-${1:value}", "kind": 15, "detail": "transform-origin: {value}", "documentation": { "value": "Sets transform origin. E.g. `origin-center`, `origin-top`, `origin-top-right`, `origin-right`, `origin-bottom`." }, "insertText": "origin-${1|center,top,top-right,right,bottom-right,bottom,bottom-left,left,top-left|}", "insertTextRules": 4, "sortText": "0246" },
184
+
185
+ { "label": "cursor-${1:value}", "kind": 15, "detail": "cursor: {value}", "documentation": { "value": "Sets cursor style. E.g. `cursor-auto`, `cursor-default`, `cursor-pointer`, `cursor-wait`, `cursor-text`, `cursor-move`, `cursor-not-allowed`." }, "insertText": "cursor-${1|auto,default,pointer,wait,text,move,help,not-allowed,none,context-menu,progress,cell,crosshair,vertical-text,alias,copy,no-drop,grab,grabbing|}", "insertTextRules": 4, "sortText": "0250" },
186
+ { "label": "select-${1:value}", "kind": 15, "detail": "user-select: {value}", "documentation": { "value": "Sets user select. E.g. `select-none`, `select-text`, `select-all`, `select-auto`." }, "insertText": "select-${1|none,text,all,auto|}", "insertTextRules": 4, "sortText": "0251" },
187
+ { "label": "pointer-events-${1:value}", "kind": 15, "detail": "pointer-events: {value}", "documentation": { "value": "Sets pointer events. E.g. `pointer-events-none`, `pointer-events-auto`." }, "insertText": "pointer-events-${1|none,auto|}", "insertTextRules": 4, "sortText": "0252" },
188
+ { "label": "resize-${1:value}", "kind": 15, "detail": "resize: {value}", "documentation": { "value": "Sets resize behavior. E.g. `resize-none`, `resize`, `resize-y`, `resize-x`." }, "insertText": "resize-${1|none,,y,x|}", "insertTextRules": 4, "sortText": "0253" },
189
+ { "label": "scroll-${1:value}", "kind": 15, "detail": "scroll-behavior: {value}", "documentation": { "value": "Sets scroll behavior. E.g. `scroll-auto`, `scroll-smooth`." }, "insertText": "scroll-${1|auto,smooth|}", "insertTextRules": 4, "sortText": "0254" },
190
+ { "label": "snap-${1:value}", "kind": 15, "detail": "scroll-snap: {value}", "documentation": { "value": "Sets scroll snap. E.g. `snap-start`, `snap-end`, `snap-center`, `snap-align-none`, `snap-normal`, `snap-always`." }, "insertText": "snap-${1|start,end,center,align-none,normal,always,none,x,y,both,mandatory,proximity|}", "insertTextRules": 4, "sortText": "0255" },
191
+ { "label": "touch-${1:value}", "kind": 15, "detail": "touch-action: {value}", "documentation": { "value": "Sets touch action. E.g. `touch-auto`, `touch-none`, `touch-pan-x`, `touch-pan-y`, `touch-manipulation`." }, "insertText": "touch-${1|auto,none,pan-x,pan-left,pan-right,pan-y,pan-up,pan-down,pinch-zoom,manipulation|}", "insertTextRules": 4, "sortText": "0256" },
192
+ { "label": "will-change-${1:value}", "kind": 15, "detail": "will-change: {value}", "documentation": { "value": "Hints to the browser which properties will change. E.g. `will-change-auto`, `will-change-scroll`, `will-change-contents`, `will-change-transform`." }, "insertText": "will-change-${1|auto,scroll,contents,transform|}", "insertTextRules": 4, "sortText": "0257" },
193
+ { "label": "appearance-${1:value}", "kind": 15, "detail": "appearance: {value}", "documentation": { "value": "Sets appearance. E.g. `appearance-none`, `appearance-auto`." }, "insertText": "appearance-${1|none,auto|}", "insertTextRules": 4, "sortText": "0258" },
194
+ { "label": "accent-${1:color}", "kind": 15, "detail": "accent-color: {color}", "documentation": { "value": "Sets the accent color for form controls. E.g. `accent-blue-500`, `accent-auto`." }, "insertText": "accent-${1:auto}", "insertTextRules": 4, "sortText": "0259" },
195
+ { "label": "caret-${1:color}", "kind": 15, "detail": "caret-color: {color}", "documentation": { "value": "Sets the text cursor color. E.g. `caret-blue-500`, `caret-transparent`." }, "insertText": "caret-${1:blue-500}", "insertTextRules": 4, "sortText": "0260" },
196
+
197
+ { "label": "sr-only", "kind": 14, "detail": "screen reader only", "documentation": { "value": "Visually hides element but keeps it accessible to screen readers." }, "insertText": "sr-only", "insertTextRules": 0, "sortText": "0270" },
198
+ { "label": "not-sr-only", "kind": 14, "detail": "undo sr-only", "documentation": { "value": "Undoes the `sr-only` styles, making the element visible again." }, "insertText": "not-sr-only", "insertTextRules": 0, "sortText": "0271" },
199
+ { "label": "isolate", "kind": 14, "detail": "isolation: isolate", "documentation": { "value": "Creates a new stacking context for the element." }, "insertText": "isolate", "insertTextRules": 0, "sortText": "0272" },
200
+ { "label": "isolation-auto", "kind": 14, "detail": "isolation: auto", "documentation": { "value": "Resets isolation to auto." }, "insertText": "isolation-auto", "insertTextRules": 0, "sortText": "0273" },
201
+ { "label": "object-${1:value}", "kind": 15, "detail": "object-fit: {value}", "documentation": { "value": "Sets object-fit. E.g. `object-contain`, `object-cover`, `object-fill`, `object-none`, `object-scale-down`." }, "insertText": "object-${1|contain,cover,fill,none,scale-down|}", "insertTextRules": 4, "sortText": "0274" },
202
+ { "label": "object-${1:position}", "kind": 15, "detail": "object-position: {position}", "documentation": { "value": "Sets object-position. E.g. `object-bottom`, `object-center`, `object-left`, `object-right`, `object-top`." }, "insertText": "object-${1|bottom,center,left,left-bottom,left-top,right,right-bottom,right-top,top|}", "insertTextRules": 4, "sortText": "0275" },
203
+
204
+ { "label": "min-h-${1:size}", "kind": 15, "detail": "min-height: {size}", "documentation": { "value": "Sets minimum height. E.g. `min-h-0`, `min-h-full`, `min-h-screen`, `min-h-min`, `min-h-max`, `min-h-fit`." }, "insertText": "min-h-${1|0,full,screen,min,max,fit,svh,lvh,dvh|}", "insertTextRules": 4, "sortText": "0280" },
205
+ { "label": "max-h-${1:size}", "kind": 15, "detail": "max-height: {size}", "documentation": { "value": "Sets maximum height. E.g. `max-h-0`, `max-h-full`, `max-h-screen`, `max-h-min`, `max-h-max`, `max-h-fit`." }, "insertText": "max-h-${1|0,full,screen,min,max,fit,svh,lvh,dvh|}", "insertTextRules": 4, "sortText": "0281" },
206
+ { "label": "mx-${1:size}", "kind": 15, "detail": "margin-left/right: {size}", "documentation": { "value": "Sets horizontal margin. E.g. `mx-0`, `mx-2`, `mx-4`, `mx-auto`." }, "insertText": "mx-${1|0,1,2,4,8,auto|}", "insertTextRules": 4, "sortText": "0282" },
207
+ { "label": "my-${1:size}", "kind": 15, "detail": "margin-top/bottom: {size}", "documentation": { "value": "Sets vertical margin. E.g. `my-0`, `my-2`, `my-4`, `my-auto`." }, "insertText": "my-${1|0,1,2,4,8,auto|}", "insertTextRules": 4, "sortText": "0283" },
208
+
209
+ { "label": "border-${1:color}", "kind": 15, "detail": "border-color: {color}", "documentation": { "value": "Sets border color. E.g. `border-gray-300`, `border-blue-500`, `border-transparent`." }, "insertText": "border-${1:gray-300}", "insertTextRules": 4, "sortText": "0290" },
210
+ { "label": "border-${1:style}", "kind": 15, "detail": "border-style: {style}", "documentation": { "value": "Sets border style. E.g. `border-solid`, `border-dashed`, `border-dotted`, `border-double`, `border-none`." }, "insertText": "border-${1|solid,dashed,dotted,double,hidden,none|}", "insertTextRules": 4, "sortText": "0291" },
211
+ { "label": "border-t-${1:size}", "kind": 15, "detail": "border-top-width: {size}", "documentation": { "value": "Sets top border width. E.g. `border-t`, `border-t-0`, `border-t-2`, `border-t-4`." }, "insertText": "border-t-${1|0,2,4,8|}", "insertTextRules": 4, "sortText": "0292" },
212
+ { "label": "border-r-${1:size}", "kind": 15, "detail": "border-right-width: {size}", "documentation": { "value": "Sets right border width." }, "insertText": "border-r-${1|0,2,4,8|}", "insertTextRules": 4, "sortText": "0293" },
213
+ { "label": "border-b-${1:size}", "kind": 15, "detail": "border-bottom-width: {size}", "documentation": { "value": "Sets bottom border width." }, "insertText": "border-b-${1|0,2,4,8|}", "insertTextRules": 4, "sortText": "0294" },
214
+ { "label": "border-l-${1:size}", "kind": 15, "detail": "border-left-width: {size}", "documentation": { "value": "Sets left border width." }, "insertText": "border-l-${1|0,2,4,8|}", "insertTextRules": 4, "sortText": "0295" },
215
+ { "label": "border-collapse", "kind": 14, "detail": "border-collapse: collapse", "documentation": { "value": "Sets `border-collapse: collapse` for tables." }, "insertText": "border-collapse", "insertTextRules": 0, "sortText": "0296" },
216
+ { "label": "border-separate", "kind": 14, "detail": "border-collapse: separate", "documentation": { "value": "Sets `border-collapse: separate` for tables." }, "insertText": "border-separate", "insertTextRules": 0, "sortText": "0297" },
217
+
218
+ { "label": "via-${1:color}", "kind": 15, "detail": "gradient middle color", "documentation": { "value": "Sets the middle color of a gradient. Use with `from-{color}` and `to-{color}`. E.g. `via-purple-500`." }, "insertText": "via-${1:purple-500}", "insertTextRules": 4, "sortText": "0300" },
219
+ { "label": "bg-${1:position}", "kind": 15, "detail": "background-position: {position}", "documentation": { "value": "Sets background position. E.g. `bg-center`, `bg-top`, `bg-bottom`, `bg-left`, `bg-right`." }, "insertText": "bg-${1|bottom,center,left,left-bottom,left-top,right,right-bottom,right-top,top|}", "insertTextRules": 4, "sortText": "0301" },
220
+ { "label": "bg-${1:size}", "kind": 15, "detail": "background-size: {size}", "documentation": { "value": "Sets background size. E.g. `bg-auto`, `bg-cover`, `bg-contain`." }, "insertText": "bg-${1|auto,cover,contain|}", "insertTextRules": 4, "sortText": "0302" },
221
+ { "label": "bg-${1:repeat}", "kind": 15, "detail": "background-repeat: {repeat}", "documentation": { "value": "Sets background repeat. E.g. `bg-repeat`, `bg-no-repeat`, `bg-repeat-x`, `bg-repeat-y`, `bg-repeat-round`, `bg-repeat-space`." }, "insertText": "bg-${1|repeat,no-repeat,repeat-x,repeat-y,repeat-round,repeat-space|}", "insertTextRules": 4, "sortText": "0303" },
222
+ { "label": "bg-clip-${1:value}", "kind": 15, "detail": "background-clip: {value}", "documentation": { "value": "Sets background clip. E.g. `bg-clip-border`, `bg-clip-padding`, `bg-clip-content`, `bg-clip-text`." }, "insertText": "bg-clip-${1|border,padding,content,text|}", "insertTextRules": 4, "sortText": "0304" },
223
+ { "label": "bg-origin-${1:value}", "kind": 15, "detail": "background-origin: {value}", "documentation": { "value": "Sets background origin. E.g. `bg-origin-border`, `bg-origin-padding`, `bg-origin-content`." }, "insertText": "bg-origin-${1|border,padding,content|}", "insertTextRules": 4, "sortText": "0305" },
224
+ { "label": "bg-blend-${1:mode}", "kind": 15, "detail": "background-blend-mode: {mode}", "documentation": { "value": "Sets background blend mode. E.g. `bg-blend-normal`, `bg-blend-multiply`, `bg-blend-screen`, `bg-blend-overlay`." }, "insertText": "bg-blend-${1|normal,multiply,screen,overlay,darken,lighten,color-dodge,color-burn,hard-light,soft-light,difference,exclusion,hue,saturation,color,luminosity|}", "insertTextRules": 4, "sortText": "0306" },
225
+ { "label": "mix-blend-${1:mode}", "kind": 15, "detail": "mix-blend-mode: {mode}", "documentation": { "value": "Sets element blend mode. E.g. `mix-blend-normal`, `mix-blend-multiply`, `mix-blend-screen`, `mix-blend-overlay`." }, "insertText": "mix-blend-${1|normal,multiply,screen,overlay,darken,lighten,color-dodge,color-burn,hard-light,soft-light,difference,exclusion,hue,saturation,color,luminosity,plus-lighter|}", "insertTextRules": 4, "sortText": "0307" },
226
+
227
+ { "label": "transition-${1:property}", "kind": 15, "detail": "transition-property: {property}", "documentation": { "value": "Sets transition property. E.g. `transition-none`, `transition-all`, `transition-colors`, `transition-opacity`, `transition-shadow`, `transition-transform`." }, "insertText": "transition-${1|none,all,colors,opacity,shadow,transform|}", "insertTextRules": 4, "sortText": "0310" },
228
+ { "label": "delay-${1:ms}", "kind": 15, "detail": "transition-delay: {ms}ms", "documentation": { "value": "Sets transition delay. E.g. `delay-75`, `delay-100`, `delay-150`, `delay-200`, `delay-300`, `delay-500`." }, "insertText": "delay-${1|0,75,100,150,200,300,500,700,1000|}", "insertTextRules": 4, "sortText": "0311" },
229
+
230
+ { "label": "focus-visible:", "kind": 14, "detail": "State: :focus-visible", "documentation": { "value": "Applies styles on keyboard focus (not mouse). Usage: `focus-visible:ring-2`." }, "insertText": "focus-visible:", "insertTextRules": 0, "sortText": "0320" },
231
+ { "label": "focus-within:", "kind": 14, "detail": "State: :focus-within", "documentation": { "value": "Applies styles when element or descendant has focus. Usage: `focus-within:ring-2`." }, "insertText": "focus-within:", "insertTextRules": 0, "sortText": "0321" },
232
+ { "label": "disabled:", "kind": 14, "detail": "State: :disabled", "documentation": { "value": "Applies styles when element is disabled. Usage: `disabled:opacity-50`." }, "insertText": "disabled:", "insertTextRules": 0, "sortText": "0322" },
233
+ { "label": "visited:", "kind": 14, "detail": "State: :visited", "documentation": { "value": "Applies styles to visited links. Usage: `visited:text-purple-600`." }, "insertText": "visited:", "insertTextRules": 0, "sortText": "0323" },
234
+ { "label": "first:", "kind": 14, "detail": "State: :first-child", "documentation": { "value": "Applies styles to the first child element. Usage: `first:mt-0`." }, "insertText": "first:", "insertTextRules": 0, "sortText": "0324" },
235
+ { "label": "last:", "kind": 14, "detail": "State: :last-child", "documentation": { "value": "Applies styles to the last child element. Usage: `last:mb-0`." }, "insertText": "last:", "insertTextRules": 0, "sortText": "0325" },
236
+ { "label": "odd:", "kind": 14, "detail": "State: :nth-child(odd)", "documentation": { "value": "Applies styles to odd children. Usage: `odd:bg-gray-50`." }, "insertText": "odd:", "insertTextRules": 0, "sortText": "0326" },
237
+ { "label": "even:", "kind": 14, "detail": "State: :nth-child(even)", "documentation": { "value": "Applies styles to even children. Usage: `even:bg-gray-100`." }, "insertText": "even:", "insertTextRules": 0, "sortText": "0327" },
238
+ { "label": "group-focus:", "kind": 14, "detail": "State: group :focus child", "documentation": { "value": "Applies styles when parent `.group` is focused. Usage: `group-focus:text-blue-500`." }, "insertText": "group-focus:", "insertTextRules": 0, "sortText": "0328" },
239
+ { "label": "peer-checked:", "kind": 14, "detail": "State: peer :checked sibling", "documentation": { "value": "Applies styles when sibling `.peer` checkbox is checked. Usage: `peer-checked:bg-blue-500`." }, "insertText": "peer-checked:", "insertTextRules": 0, "sortText": "0329" },
240
+ { "label": "peer-hover:", "kind": 14, "detail": "State: peer :hover sibling", "documentation": { "value": "Applies styles when sibling `.peer` is hovered. Usage: `peer-hover:text-blue-500`." }, "insertText": "peer-hover:", "insertTextRules": 0, "sortText": "0330" },
241
+ { "label": "placeholder:", "kind": 14, "detail": "State: ::placeholder", "documentation": { "value": "Styles the placeholder text. Usage: `placeholder:text-gray-400`." }, "insertText": "placeholder:", "insertTextRules": 0, "sortText": "0331" },
242
+ { "label": "before:", "kind": 14, "detail": "State: ::before", "documentation": { "value": "Styles the ::before pseudo-element. Usage: `before:content-[''] before:block`." }, "insertText": "before:", "insertTextRules": 0, "sortText": "0332" },
243
+ { "label": "after:", "kind": 14, "detail": "State: ::after", "documentation": { "value": "Styles the ::after pseudo-element. Usage: `after:content-[''] after:block`." }, "insertText": "after:", "insertTextRules": 0, "sortText": "0333" },
244
+ { "label": "file:", "kind": 14, "detail": "State: ::file-selector-button", "documentation": { "value": "Styles file input buttons. Usage: `file:bg-blue-500 file:text-white`." }, "insertText": "file:", "insertTextRules": 0, "sortText": "0334" },
245
+ { "label": "marker:", "kind": 14, "detail": "State: ::marker", "documentation": { "value": "Styles list markers. Usage: `marker:text-blue-500`." }, "insertText": "marker:", "insertTextRules": 0, "sortText": "0335" },
246
+ { "label": "selection:", "kind": 14, "detail": "State: ::selection", "documentation": { "value": "Styles selected text. Usage: `selection:bg-blue-200`." }, "insertText": "selection:", "insertTextRules": 0, "sortText": "0336" },
247
+ { "label": "first-line:", "kind": 14, "detail": "State: ::first-line", "documentation": { "value": "Styles the first line of text. Usage: `first-line:uppercase`." }, "insertText": "first-line:", "insertTextRules": 0, "sortText": "0337" },
248
+ { "label": "first-letter:", "kind": 14, "detail": "State: ::first-letter", "documentation": { "value": "Styles the first letter. Usage: `first-letter:text-2xl first-letter:font-bold`." }, "insertText": "first-letter:", "insertTextRules": 0, "sortText": "0338" },
249
+ { "label": "aria-${1:attr}:", "kind": 15, "detail": "ARIA attribute variant", "documentation": { "value": "Applies styles based on ARIA attributes. E.g. `aria-checked:bg-blue-500`, `aria-disabled:opacity-50`, `aria-expanded:rotate-180`, `aria-selected:bg-blue-100`." }, "insertText": "aria-${1|checked,disabled,expanded,hidden,pressed,readonly,required,selected|}:", "insertTextRules": 4, "sortText": "0340" },
250
+ { "label": "data-${1:attr}:", "kind": 15, "detail": "Data attribute variant", "documentation": { "value": "Applies styles based on data attributes. E.g. `data-[state=open]:rotate-180`, `data-[active]:bg-blue-500`." }, "insertText": "data-[${1:state=open}]:", "insertTextRules": 4, "sortText": "0341" },
251
+ { "label": "supports-${1:value}:", "kind": 15, "detail": "@supports variant", "documentation": { "value": "Applies styles when CSS feature is supported. E.g. `supports-[display:grid]:grid`." }, "insertText": "supports-[${1:display:grid}]:", "insertTextRules": 4, "sortText": "0342" },
252
+ { "label": "motion-safe:", "kind": 14, "detail": "@media (prefers-reduced-motion: no-preference)", "documentation": { "value": "Applies styles when user has no motion preference. Usage: `motion-safe:animate-bounce`." }, "insertText": "motion-safe:", "insertTextRules": 0, "sortText": "0343" },
253
+ { "label": "motion-reduce:", "kind": 14, "detail": "@media (prefers-reduced-motion: reduce)", "documentation": { "value": "Applies styles when user prefers reduced motion. Usage: `motion-reduce:animate-none`." }, "insertText": "motion-reduce:", "insertTextRules": 0, "sortText": "0344" },
254
+ { "label": "print:", "kind": 14, "detail": "@media print", "documentation": { "value": "Applies styles for print. Usage: `print:hidden`." }, "insertText": "print:", "insertTextRules": 0, "sortText": "0345" },
255
+ { "label": "rtl:", "kind": 14, "detail": "[dir='rtl'] variant", "documentation": { "value": "Applies styles in RTL direction. Usage: `rtl:space-x-reverse`." }, "insertText": "rtl:", "insertTextRules": 0, "sortText": "0346" },
256
+ { "label": "ltr:", "kind": 14, "detail": "[dir='ltr'] variant", "documentation": { "value": "Applies styles in LTR direction. Usage: `ltr:ml-4`." }, "insertText": "ltr:", "insertTextRules": 0, "sortText": "0347" },
257
+ { "label": "portrait:", "kind": 14, "detail": "@media (orientation: portrait)", "documentation": { "value": "Applies styles in portrait orientation." }, "insertText": "portrait:", "insertTextRules": 0, "sortText": "0348" },
258
+ { "label": "landscape:", "kind": 14, "detail": "@media (orientation: landscape)", "documentation": { "value": "Applies styles in landscape orientation." }, "insertText": "landscape:", "insertTextRules": 0, "sortText": "0349" },
259
+ { "label": "has-${1:selector}:", "kind": 15, "detail": ":has() variant", "documentation": { "value": "Applies styles based on descendant matching. E.g. `has-[:checked]:bg-blue-500`." }, "insertText": "has-[${1::checked}]:", "insertTextRules": 4, "sortText": "0350" },
260
+ { "label": "group-${1:state}:", "kind": 15, "detail": "Group state variant", "documentation": { "value": "Applies styles based on parent group state. E.g. `group-hover:`, `group-focus:`, `group-active:`." }, "insertText": "group-${1|hover,focus,active,focus-within,focus-visible|}:", "insertTextRules": 4, "sortText": "0351" },
261
+ { "label": "peer-${1:state}:", "kind": 15, "detail": "Peer state variant", "documentation": { "value": "Applies styles based on sibling peer state. E.g. `peer-hover:`, `peer-focus:`, `peer-checked:`." }, "insertText": "peer-${1|hover,focus,checked,disabled,invalid,placeholder-shown,focus-visible|}:", "insertTextRules": 4, "sortText": "0352" },
262
+
263
+ { "label": "min-${1:breakpoint}:", "kind": 15, "detail": "Custom min-width breakpoint", "documentation": { "value": "Container query or custom min-width variant. E.g. `min-[320px]:flex`." }, "insertText": "min-[${1:320px}]:", "insertTextRules": 4, "sortText": "0360" },
264
+ { "label": "max-${1:breakpoint}:", "kind": 15, "detail": "Max-width breakpoint variant", "documentation": { "value": "Applies styles below a breakpoint. E.g. `max-sm:hidden`, `max-md:flex-col`." }, "insertText": "max-${1|sm,md,lg,xl,2xl|}:", "insertTextRules": 4, "sortText": "0361" },
265
+ { "label": "@container", "kind": 15, "detail": "Container query", "documentation": { "value": "Defines a containment context or queries container size. E.g. `@container (min-width: 400px) { ... }`." }, "insertText": "@container ${1|(min-width: 400px)|} {\n $0\n}", "insertTextRules": 4, "sortText": "0362" },
266
+
267
+ { "label": "theme()", "kind": 15, "detail": "Tailwind theme() function", "documentation": { "value": "References values from your Tailwind config in CSS. E.g. `theme('colors.blue.500')`, `theme('spacing.4')`." }, "insertText": "theme('${1:colors.blue.500}')", "insertTextRules": 4, "sortText": "0370" },
268
+ { "label": "screen()", "kind": 15, "detail": "Tailwind screen() function", "documentation": { "value": "References breakpoint values in @media queries. E.g. `@media screen(md) { ... }`." }, "insertText": "screen(${1:md})", "insertTextRules": 4, "sortText": "0371" },
269
+ { "label": "@variants", "kind": 15, "detail": "Custom variants directive", "documentation": { "value": "Generates variants for custom utilities. E.g. `@variants hover, focus { ... }`." }, "insertText": "@variants ${1:hover, focus} {\n $0\n}", "insertTextRules": 4, "sortText": "0372" },
270
+ { "label": "@responsive", "kind": 15, "detail": "Responsive variants directive", "documentation": { "value": "Generates responsive variants for custom utilities." }, "insertText": "@responsive {\n $0\n}", "insertTextRules": 4, "sortText": "0373" },
271
+ { "label": "content-${1:value}", "kind": 15, "detail": "content: {value}", "documentation": { "value": "Sets the content property for before/after pseudo-elements. E.g. `content-none`, `content-['text']`." }, "insertText": "content-${1|none,['']|}", "insertTextRules": 4, "sortText": "0374" },
272
+
273
+ { "label": "table", "kind": 14, "detail": "display: table", "documentation": { "value": "Sets `display: table`." }, "insertText": "table", "insertTextRules": 0, "sortText": "0380" },
274
+ { "label": "inline-block", "kind": 14, "detail": "display: inline-block", "documentation": { "value": "Sets `display: inline-block`." }, "insertText": "inline-block", "insertTextRules": 0, "sortText": "0381" },
275
+ { "label": "inline-flex", "kind": 14, "detail": "display: inline-flex", "documentation": { "value": "Sets `display: inline-flex`." }, "insertText": "inline-flex", "insertTextRules": 0, "sortText": "0382" },
276
+ { "label": "inline-grid", "kind": 14, "detail": "display: inline-grid", "documentation": { "value": "Sets `display: inline-grid`." }, "insertText": "inline-grid", "insertTextRules": 0, "sortText": "0383" },
277
+ { "label": "flow-root", "kind": 14, "detail": "display: flow-root", "documentation": { "value": "Sets `display: flow-root` — creates a new block formatting context." }, "insertText": "flow-root", "insertTextRules": 0, "sortText": "0384" },
278
+ { "label": "contents", "kind": 14, "detail": "display: contents", "documentation": { "value": "Sets `display: contents` — element's children act as direct children of parent." }, "insertText": "contents", "insertTextRules": 0, "sortText": "0385" },
279
+
280
+ { "label": "aspect-video", "kind": 14, "detail": "aspect-ratio: 16 / 9", "documentation": { "value": "Sets `aspect-ratio: 16 / 9` for video content." }, "insertText": "aspect-video", "insertTextRules": 0, "sortText": "0390" },
281
+ { "label": "aspect-square", "kind": 14, "detail": "aspect-ratio: 1 / 1", "documentation": { "value": "Sets `aspect-ratio: 1 / 1` for square elements." }, "insertText": "aspect-square", "insertTextRules": 0, "sortText": "0391" },
282
+ { "label": "aspect-auto", "kind": 14, "detail": "aspect-ratio: auto", "documentation": { "value": "Sets `aspect-ratio: auto`." }, "insertText": "aspect-auto", "insertTextRules": 0, "sortText": "0392" }
283
+ ]
284
+ }
@@ -333,6 +333,33 @@
333
333
  "insertText": "using ${1:resource} = ${2:expression};",
334
334
  "insertTextRules": 4,
335
335
  "sortText": "00_using"
336
+ },
337
+ {
338
+ "label": { "label": "tsx component", "detail": " with props", "description": "TSX" },
339
+ "kind": 15,
340
+ "detail": "React component with typed props",
341
+ "documentation": { "value": "Create a typed React component (TSX).\n\n```tsx\ntype Props = { label: string };\n\nexport function Button({ label }: Props) {\n return (\n <button className=\"btn\">{label}</button>\n );\n}\n```" },
342
+ "insertText": "type ${1:Props} = {\n\t${2:label}: ${3:string};\n};\n\nexport function ${4:Component}({ ${2:label} }: ${1:Props}) {\n\treturn (\n\t\t<div className=\"${5}\">\n\t\t\t${6}\n\t\t</div>\n\t);\n}\n",
343
+ "insertTextRules": 4,
344
+ "sortText": "00_tsx_component"
345
+ },
346
+ {
347
+ "label": { "label": "jsx element", "detail": " snippet", "description": "TSX" },
348
+ "kind": 15,
349
+ "detail": "JSX element",
350
+ "documentation": { "value": "Insert a JSX element.\n\n```tsx\n<section className=\"container\">Content</section>\n```" },
351
+ "insertText": "<${1:div} className=\"${2}\">${3}</${1:div}>",
352
+ "insertTextRules": 4,
353
+ "sortText": "00_jsx_element"
354
+ },
355
+ {
356
+ "label": { "label": "useState", "detail": " hook", "description": "React" },
357
+ "kind": 15,
358
+ "detail": "Typed React useState hook",
359
+ "documentation": { "value": "Declare component state with a type parameter.\n\n```tsx\nconst [count, setCount] = useState<number>(0);\n```" },
360
+ "insertText": "const [${1:state}, set${2:State}] = useState<${3:Type}>(${4:initial});",
361
+ "insertTextRules": 4,
362
+ "sortText": "00_react_useState"
336
363
  }
337
364
  ]
338
365
  }
@@ -0,0 +1,46 @@
1
+ {
2
+ "language": "angular",
3
+ "declarations": {
4
+ "Component": { "signature": "@Component(metadata: ComponentMetadata)", "description": "Decorator that marks a class as an Angular component and provides configuration metadata", "type": "decorator", "module": "@angular/core" },
5
+ "Injectable": { "signature": "@Injectable(options?: { providedIn: Type<any> | 'root' | 'platform' | 'any' })", "description": "Decorator that marks a class as available to be provided and injected as a dependency", "type": "decorator", "module": "@angular/core" },
6
+ "NgModule": { "signature": "@NgModule(metadata: NgModuleMetadata)", "description": "Decorator that marks a class as an Angular module and provides configuration metadata", "type": "decorator", "module": "@angular/core" },
7
+ "Directive": { "signature": "@Directive(metadata: DirectiveMetadata)", "description": "Decorator that marks a class as an Angular directive", "type": "decorator", "module": "@angular/core" },
8
+ "Pipe": { "signature": "@Pipe(metadata: { name: string; standalone?: boolean; pure?: boolean })", "description": "Decorator that marks a class as an Angular pipe for template transformations", "type": "decorator", "module": "@angular/core" },
9
+ "signal": { "signature": "signal<T>(initialValue: T, options?: SignalOptions<T>): WritableSignal<T>", "description": "Creates a writable signal with an initial value", "type": "function", "module": "@angular/core" },
10
+ "computed": { "signature": "computed<T>(computation: () => T, options?: SignalOptions<T>): Signal<T>", "description": "Creates a computed signal that derives its value from other signals", "type": "function", "module": "@angular/core" },
11
+ "effect": { "signature": "effect(effectFn: () => void, options?: EffectOptions): EffectRef", "description": "Creates a reactive effect that runs when its signal dependencies change", "type": "function", "module": "@angular/core" },
12
+ "input": { "signature": "input<T>(initialValue?: T, options?: InputOptions): InputSignal<T>", "description": "Signal-based input declaration for components and directives", "type": "function", "module": "@angular/core" },
13
+ "output": { "signature": "output<T>(options?: OutputOptions): OutputEmitterRef<T>", "description": "Signal-based output declaration for components and directives", "type": "function", "module": "@angular/core" },
14
+ "inject": { "signature": "inject<T>(token: ProviderToken<T>, options?: InjectOptions): T", "description": "Injects a dependency token in an injection context", "type": "function", "module": "@angular/core" },
15
+ "viewChild": { "signature": "viewChild<T>(locator: string | ProviderToken<T>): Signal<T | undefined>", "description": "Signal-based view child query", "type": "function", "module": "@angular/core" },
16
+ "viewChildren": { "signature": "viewChildren<T>(locator: string | ProviderToken<T>): Signal<readonly T[]>", "description": "Signal-based view children query", "type": "function", "module": "@angular/core" },
17
+ "contentChild": { "signature": "contentChild<T>(locator: string | ProviderToken<T>): Signal<T | undefined>", "description": "Signal-based content child query", "type": "function", "module": "@angular/core" },
18
+ "contentChildren": { "signature": "contentChildren<T>(locator: string | ProviderToken<T>): Signal<readonly T[]>", "description": "Signal-based content children query", "type": "function", "module": "@angular/core" },
19
+ "FormControl": { "signature": "new FormControl<T>(value?: T, opts?: FormControlOptions)", "description": "Tracks the value and validation state of an individual form control", "type": "class", "module": "@angular/forms" },
20
+ "FormGroup": { "signature": "new FormGroup<T>(controls: T, opts?: AbstractControlOptions)", "description": "Tracks the value and validity of a group of FormControl instances", "type": "class", "module": "@angular/forms" },
21
+ "FormArray": { "signature": "new FormArray<T>(controls: T[], opts?: AbstractControlOptions)", "description": "Tracks the value and validity of an array of FormControl instances", "type": "class", "module": "@angular/forms" },
22
+ "FormBuilder": { "signature": "class FormBuilder", "description": "Service for creating form control instances with reduced boilerplate", "type": "class", "module": "@angular/forms" },
23
+ "Router": { "signature": "class Router", "description": "Service for navigating between views and manipulating URLs", "type": "class", "module": "@angular/router" },
24
+ "ActivatedRoute": { "signature": "class ActivatedRoute", "description": "Provides access to information about a route associated with a component", "type": "class", "module": "@angular/router" },
25
+ "HttpClient": { "signature": "class HttpClient", "description": "Service for making HTTP requests", "type": "class", "module": "@angular/common/http" },
26
+ "EventEmitter": { "signature": "new EventEmitter<T>(isAsync?: boolean)", "description": "Use in components with @Output to emit custom events", "type": "class", "module": "@angular/core" },
27
+ "TemplateRef": { "signature": "class TemplateRef<C>", "description": "Represents an embedded template for instantiating embedded views", "type": "class", "module": "@angular/core" },
28
+ "ElementRef": { "signature": "class ElementRef<T = any>", "description": "Wrapper around a native element inside a View", "type": "class", "module": "@angular/core" },
29
+ "DestroyRef": { "signature": "class DestroyRef", "description": "Lets you register callbacks to run when a destruction scope is destroyed", "type": "class", "module": "@angular/core" }
30
+ },
31
+ "declarationPatterns": [
32
+ { "name": "ClassDeclaration", "pattern": "(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "description": "Class declaration" },
33
+ { "name": "FunctionDeclaration", "pattern": "(?:export\\s+)?function\\s+(\\w+)", "captureGroup": 1, "description": "Named function declaration" },
34
+ { "name": "ConstDeclaration", "pattern": "(?:export\\s+)?const\\s+(\\w+)\\s*[:=]", "captureGroup": 1, "description": "Constant variable declaration" },
35
+ { "name": "LetDeclaration", "pattern": "(?:export\\s+)?let\\s+(\\w+)\\s*[:=]", "captureGroup": 1, "description": "Let variable declaration" },
36
+ { "name": "TypeAlias", "pattern": "(?:export\\s+)?type\\s+(\\w+)\\s*=", "captureGroup": 1, "description": "TypeScript type alias declaration" },
37
+ { "name": "InterfaceDeclaration", "pattern": "(?:export\\s+)?interface\\s+(\\w+)", "captureGroup": 1, "description": "TypeScript interface declaration" },
38
+ { "name": "EnumDeclaration", "pattern": "(?:export\\s+)?enum\\s+(\\w+)", "captureGroup": 1, "description": "TypeScript enum declaration" },
39
+ { "name": "DecoratorDeclaration", "pattern": "@(Component|Injectable|NgModule|Directive|Pipe|Input|Output)\\s*\\(", "captureGroup": 1, "description": "Angular decorator usage" },
40
+ { "name": "SignalDeclaration", "pattern": "(\\w+)\\s*=\\s*signal\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "description": "Angular signal property declaration" },
41
+ { "name": "ComputedDeclaration", "pattern": "(\\w+)\\s*=\\s*computed\\s*\\(", "captureGroup": 1, "description": "Angular computed signal property declaration" },
42
+ { "name": "InputSignalDeclaration", "pattern": "(\\w+)\\s*=\\s*input(?:\\.required)?\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "description": "Angular signal-based input property declaration" },
43
+ { "name": "OutputSignalDeclaration", "pattern": "(\\w+)\\s*=\\s*output\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "description": "Angular signal-based output property declaration" },
44
+ { "name": "ArrowFunctionDeclaration", "pattern": "(?:export\\s+)?const\\s+(\\w+)\\s*=\\s*(?:\\([^)]*\\)|\\w+)\\s*=>", "captureGroup": 1, "description": "Arrow function assigned to a const" }
45
+ ]
46
+ }