@enjoys/context-engine 1.3.1 → 1.4.2

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 (593) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/nestjs.json +124 -0
  3. package/data/codeActions/nextjs.json +198 -0
  4. package/data/codeActions/react.json +154 -0
  5. package/data/codeActions/shadcn.json +112 -0
  6. package/data/codeActions/shell.json +169 -26
  7. package/data/codeLens/angular.json +22 -0
  8. package/data/codeLens/awk.json +1 -1
  9. package/data/codeLens/azcli.json +10 -10
  10. package/data/codeLens/c.json +1 -1
  11. package/data/codeLens/caddy.json +1 -1
  12. package/data/codeLens/crontab.json +1 -1
  13. package/data/codeLens/doctest.json +10 -10
  14. package/data/codeLens/hcl.json +1 -1
  15. package/data/codeLens/html.json +1 -1
  16. package/data/codeLens/lua.json +1 -1
  17. package/data/codeLens/nestjs.json +21 -0
  18. package/data/codeLens/nextjs.json +117 -0
  19. package/data/codeLens/nginx.json +1 -1
  20. package/data/codeLens/pla.json +10 -10
  21. package/data/codeLens/react.json +89 -0
  22. package/data/codeLens/shadcn.json +89 -0
  23. package/data/codeLens/shell.json +59 -17
  24. package/data/codeLens/tailwindcss.json +56 -0
  25. package/data/codeLens/xml.json +1 -1
  26. package/data/color/angular.json +21 -0
  27. package/data/color/nestjs.json +18 -0
  28. package/data/color/nextjs.json +22 -0
  29. package/data/color/react.json +93 -0
  30. package/data/color/shadcn.json +66 -0
  31. package/data/color/shell.json +106 -80
  32. package/data/commands/angular.json +670 -0
  33. package/data/commands/c.json +30 -30
  34. package/data/commands/cpp.json +30 -30
  35. package/data/commands/crontab.json +25 -30
  36. package/data/commands/cypher.json +26 -30
  37. package/data/commands/dockerfile.json +26 -2
  38. package/data/commands/doctest.json +23 -24
  39. package/data/commands/dotenv.json +24 -11
  40. package/data/commands/ecl.json +26 -30
  41. package/data/commands/flow9.json +24 -24
  42. package/data/commands/freemarker2.json +24 -18
  43. package/data/commands/graphql.json +25 -11
  44. package/data/commands/html.json +25 -11
  45. package/data/commands/ini.json +26 -12
  46. package/data/commands/javascript.json +29 -30
  47. package/data/commands/less.json +25 -29
  48. package/data/commands/lexon.json +23 -11
  49. package/data/commands/liquid.json +26 -11
  50. package/data/commands/m3.json +26 -12
  51. package/data/commands/manifest.json +35 -726
  52. package/data/commands/markdown.json +26 -12
  53. package/data/commands/mdx.json +23 -10
  54. package/data/commands/mips.json +26 -18
  55. package/data/commands/msdax.json +23 -11
  56. package/data/commands/nestjs.json +516 -0
  57. package/data/commands/nextjs.json +250 -0
  58. package/data/commands/objective-c.json +26 -24
  59. package/data/commands/pascal.json +27 -24
  60. package/data/commands/pascaligo.json +26 -24
  61. package/data/commands/perl.json +30 -30
  62. package/data/commands/pla.json +23 -11
  63. package/data/commands/postiats.json +26 -24
  64. package/data/commands/powerquery.json +23 -11
  65. package/data/commands/powershell.json +28 -30
  66. package/data/commands/protobuf.json +27 -30
  67. package/data/commands/qsharp.json +26 -30
  68. package/data/commands/razor.json +25 -29
  69. package/data/commands/react.json +244 -0
  70. package/data/commands/redshift.json +27 -18
  71. package/data/commands/restructuredtext.json +29 -30
  72. package/data/commands/sb.json +23 -11
  73. package/data/commands/scheme.json +25 -18
  74. package/data/commands/scss.json +26 -29
  75. package/data/commands/shadcn.json +564 -0
  76. package/data/commands/shell.json +571 -41
  77. package/data/commands/sol.json +27 -30
  78. package/data/commands/sparql.json +25 -11
  79. package/data/commands/sql.json +16 -2
  80. package/data/commands/ssh_config.json +31 -30
  81. package/data/commands/st.json +23 -11
  82. package/data/commands/systemverilog.json +26 -24
  83. package/data/commands/tailwindcss.json +60 -53
  84. package/data/commands/tcl.json +23 -18
  85. package/data/commands/toml.json +25 -11
  86. package/data/commands/twig.json +23 -10
  87. package/data/commands/vb.json +27 -24
  88. package/data/commands/wgsl.json +24 -11
  89. package/data/commands/yaml.json +29 -30
  90. package/data/completion/angular.json +1490 -0
  91. package/data/completion/awk.json +906 -202
  92. package/data/completion/azcli.json +886 -237
  93. package/data/completion/bicep.json +862 -367
  94. package/data/completion/crontab.json +906 -202
  95. package/data/completion/css.json +793 -0
  96. package/data/completion/dotenv.json +895 -169
  97. package/data/completion/graphql.json +895 -180
  98. package/data/completion/hcl.json +906 -191
  99. package/data/completion/ini.json +906 -136
  100. package/data/completion/json.json +895 -169
  101. package/data/completion/lexon.json +856 -295
  102. package/data/completion/makefile.json +906 -202
  103. package/data/completion/markdown.json +906 -224
  104. package/data/completion/mdx.json +895 -87
  105. package/data/completion/mips.json +872 -377
  106. package/data/completion/nestjs.json +1454 -0
  107. package/data/completion/nextjs.json +1373 -0
  108. package/data/completion/perl.json +961 -202
  109. package/data/completion/pla.json +895 -154
  110. package/data/completion/powershell.json +906 -224
  111. package/data/completion/protobuf.json +884 -180
  112. package/data/completion/react.json +1319 -0
  113. package/data/completion/shadcn.json +1202 -0
  114. package/data/completion/shell.json +2446 -510
  115. package/data/completion/ssh_config.json +906 -158
  116. package/data/completion/xml.json +906 -158
  117. package/data/declaration/angular.json +46 -0
  118. package/data/declaration/nestjs.json +47 -0
  119. package/data/declaration/nextjs.json +274 -0
  120. package/data/declaration/react.json +199 -0
  121. package/data/declaration/shadcn.json +211 -0
  122. package/data/declaration/shell.json +343 -24
  123. package/data/declaration/tailwindcss.json +72 -0
  124. package/data/definition/abap.json +127 -1
  125. package/data/definition/angular.json +670 -0
  126. package/data/definition/apex.json +97 -1
  127. package/data/definition/coffee.json +51 -1
  128. package/data/definition/dart.json +105 -1
  129. package/data/definition/elixir.json +115 -1
  130. package/data/definition/flow9.json +208 -1
  131. package/data/definition/freemarker2.json +283 -1
  132. package/data/definition/html.json +853 -558
  133. package/data/definition/java.json +1127 -183
  134. package/data/definition/kotlin.json +72 -1
  135. package/data/definition/nestjs.json +684 -0
  136. package/data/definition/nextjs.json +439 -0
  137. package/data/definition/r.json +692 -83
  138. package/data/definition/react.json +397 -0
  139. package/data/definition/ruby.json +789 -669
  140. package/data/definition/rust.json +852 -206
  141. package/data/definition/sb.json +339 -1
  142. package/data/definition/shadcn.json +99 -0
  143. package/data/definition/shell.json +820 -0
  144. package/data/definition/st.json +367 -1
  145. package/data/documentHighlight/angular.json +414 -0
  146. package/data/documentHighlight/css.json +77 -2
  147. package/data/documentHighlight/nestjs.json +115 -0
  148. package/data/documentHighlight/nextjs.json +212 -0
  149. package/data/documentHighlight/react.json +119 -0
  150. package/data/documentHighlight/shadcn.json +168 -0
  151. package/data/documentHighlight/shell.json +664 -334
  152. package/data/documentHighlight/tailwindcss.json +105 -10
  153. package/data/documentRangeFormatting/angular.json +45 -0
  154. package/data/documentRangeFormatting/nestjs.json +57 -0
  155. package/data/documentRangeFormatting/nextjs.json +57 -0
  156. package/data/documentRangeFormatting/react.json +82 -0
  157. package/data/documentRangeFormatting/shadcn.json +45 -0
  158. package/data/documentRangeFormatting/shell.json +120 -53
  159. package/data/documentSymbol/abap.json +54 -12
  160. package/data/documentSymbol/angular.json +180 -0
  161. package/data/documentSymbol/apex.json +40 -10
  162. package/data/documentSymbol/awk.json +15 -1
  163. package/data/documentSymbol/bicep.json +39 -39
  164. package/data/documentSymbol/c.json +1 -1
  165. package/data/documentSymbol/clojure.json +46 -46
  166. package/data/documentSymbol/css.json +96 -96
  167. package/data/documentSymbol/dart.json +109 -19
  168. package/data/documentSymbol/dockerfile.json +1 -1
  169. package/data/documentSymbol/elixir.json +39 -39
  170. package/data/documentSymbol/go.json +1 -1
  171. package/data/documentSymbol/graphql.json +1 -1
  172. package/data/documentSymbol/hcl.json +1 -1
  173. package/data/documentSymbol/html.json +29 -1
  174. package/data/documentSymbol/java.json +1 -1
  175. package/data/documentSymbol/javascript.json +1 -1
  176. package/data/documentSymbol/julia.json +46 -46
  177. package/data/documentSymbol/kotlin.json +74 -14
  178. package/data/documentSymbol/less.json +25 -25
  179. package/data/documentSymbol/lua.json +22 -1
  180. package/data/documentSymbol/makefile.json +15 -1
  181. package/data/documentSymbol/markdown.json +36 -1
  182. package/data/documentSymbol/mysql.json +32 -32
  183. package/data/documentSymbol/nestjs.json +152 -0
  184. package/data/documentSymbol/nextjs.json +159 -0
  185. package/data/documentSymbol/nginx.json +1 -1
  186. package/data/documentSymbol/pascal.json +46 -46
  187. package/data/documentSymbol/perl.json +1 -1
  188. package/data/documentSymbol/pgsql.json +39 -39
  189. package/data/documentSymbol/php.json +1 -1
  190. package/data/documentSymbol/powershell.json +1 -1
  191. package/data/documentSymbol/protobuf.json +1 -1
  192. package/data/documentSymbol/python.json +1 -1
  193. package/data/documentSymbol/r.json +67 -67
  194. package/data/documentSymbol/react.json +145 -0
  195. package/data/documentSymbol/redshift.json +60 -18
  196. package/data/documentSymbol/ruby.json +1 -1
  197. package/data/documentSymbol/rust.json +1 -1
  198. package/data/documentSymbol/scala.json +116 -20
  199. package/data/documentSymbol/scheme.json +25 -25
  200. package/data/documentSymbol/scss.json +39 -39
  201. package/data/documentSymbol/shadcn.json +131 -0
  202. package/data/documentSymbol/shell.json +165 -25
  203. package/data/documentSymbol/sql.json +1 -1
  204. package/data/documentSymbol/swift.json +88 -16
  205. package/data/documentSymbol/tailwindcss.json +49 -0
  206. package/data/documentSymbol/typescript.json +1 -1
  207. package/data/documentSymbol/vb.json +53 -53
  208. package/data/documentSymbol/yaml.json +1 -1
  209. package/data/foldingRange/angular.json +100 -0
  210. package/data/foldingRange/nestjs.json +94 -0
  211. package/data/foldingRange/nextjs.json +94 -0
  212. package/data/foldingRange/react.json +118 -0
  213. package/data/foldingRange/shadcn.json +94 -0
  214. package/data/foldingRange/shell.json +106 -46
  215. package/data/formatting/abap.json +19 -11
  216. package/data/formatting/angular.json +63 -0
  217. package/data/formatting/apex.json +19 -11
  218. package/data/formatting/awk.json +1 -1
  219. package/data/formatting/azcli.json +18 -18
  220. package/data/formatting/bicep.json +18 -18
  221. package/data/formatting/c.json +1 -1
  222. package/data/formatting/caddy.json +1 -1
  223. package/data/formatting/cameligo.json +18 -18
  224. package/data/formatting/clojure.json +18 -18
  225. package/data/formatting/coffee.json +18 -18
  226. package/data/formatting/cpp.json +1 -1
  227. package/data/formatting/crontab.json +1 -1
  228. package/data/formatting/csharp.json +1 -1
  229. package/data/formatting/css.json +73 -73
  230. package/data/formatting/cypher.json +18 -18
  231. package/data/formatting/dart.json +43 -15
  232. package/data/formatting/docker-compose.json +24 -24
  233. package/data/formatting/dockerfile.json +1 -1
  234. package/data/formatting/doctest.json +18 -18
  235. package/data/formatting/dotenv.json +1 -1
  236. package/data/formatting/ecl.json +18 -18
  237. package/data/formatting/elixir.json +43 -18
  238. package/data/formatting/flow9.json +18 -18
  239. package/data/formatting/freemarker2.json +18 -18
  240. package/data/formatting/go.json +1 -1
  241. package/data/formatting/graphql.json +1 -1
  242. package/data/formatting/hcl.json +26 -1
  243. package/data/formatting/html.json +26 -1
  244. package/data/formatting/ini.json +1 -1
  245. package/data/formatting/java.json +1 -1
  246. package/data/formatting/javascript.json +1 -1
  247. package/data/formatting/julia.json +18 -18
  248. package/data/formatting/kotlin.json +33 -13
  249. package/data/formatting/less.json +48 -18
  250. package/data/formatting/lexon.json +18 -18
  251. package/data/formatting/liquid.json +18 -18
  252. package/data/formatting/lua.json +1 -1
  253. package/data/formatting/m3.json +18 -18
  254. package/data/formatting/makefile.json +1 -1
  255. package/data/formatting/markdown.json +26 -1
  256. package/data/formatting/mdx.json +18 -18
  257. package/data/formatting/mips.json +18 -18
  258. package/data/formatting/msdax.json +18 -18
  259. package/data/formatting/mysql.json +43 -18
  260. package/data/formatting/nestjs.json +23 -0
  261. package/data/formatting/nextjs.json +23 -0
  262. package/data/formatting/nginx.json +1 -1
  263. package/data/formatting/objective-c.json +18 -18
  264. package/data/formatting/pascal.json +18 -18
  265. package/data/formatting/pascaligo.json +18 -18
  266. package/data/formatting/perl.json +1 -1
  267. package/data/formatting/pgsql.json +43 -18
  268. package/data/formatting/php.json +1 -1
  269. package/data/formatting/pla.json +18 -18
  270. package/data/formatting/postiats.json +18 -18
  271. package/data/formatting/powerquery.json +18 -18
  272. package/data/formatting/powershell.json +1 -1
  273. package/data/formatting/protobuf.json +1 -1
  274. package/data/formatting/python.json +1 -1
  275. package/data/formatting/qsharp.json +18 -18
  276. package/data/formatting/r.json +32 -32
  277. package/data/formatting/razor.json +18 -18
  278. package/data/formatting/react.json +71 -0
  279. package/data/formatting/redis-cli.json +1 -1
  280. package/data/formatting/redis.json +18 -18
  281. package/data/formatting/redshift.json +43 -18
  282. package/data/formatting/restructuredtext.json +18 -18
  283. package/data/formatting/ruby.json +1 -1
  284. package/data/formatting/rust.json +1 -1
  285. package/data/formatting/sb.json +18 -18
  286. package/data/formatting/scala.json +48 -16
  287. package/data/formatting/scheme.json +18 -18
  288. package/data/formatting/scss.json +48 -18
  289. package/data/formatting/shadcn.json +63 -0
  290. package/data/formatting/shell.json +102 -18
  291. package/data/formatting/sol.json +18 -18
  292. package/data/formatting/sparql.json +18 -18
  293. package/data/formatting/sql.json +1 -1
  294. package/data/formatting/ssh_config.json +1 -1
  295. package/data/formatting/st.json +18 -18
  296. package/data/formatting/swift.json +58 -18
  297. package/data/formatting/systemd.json +1 -1
  298. package/data/formatting/systemverilog.json +18 -18
  299. package/data/formatting/tcl.json +18 -18
  300. package/data/formatting/toml.json +1 -1
  301. package/data/formatting/twig.json +18 -18
  302. package/data/formatting/typescript.json +1 -1
  303. package/data/formatting/vb.json +18 -18
  304. package/data/formatting/wgsl.json +18 -18
  305. package/data/formatting/xml.json +26 -1
  306. package/data/formatting/yaml.json +1 -1
  307. package/data/hover/angular.json +455 -0
  308. package/data/hover/apex.json +281 -6
  309. package/data/hover/awk.json +251 -6
  310. package/data/hover/crontab.json +251 -6
  311. package/data/hover/css.json +232 -0
  312. package/data/hover/dotenv.json +242 -4
  313. package/data/hover/graphql.json +251 -6
  314. package/data/hover/lexon.json +250 -5
  315. package/data/hover/markdown.json +226 -9
  316. package/data/hover/mdx.json +250 -5
  317. package/data/hover/nestjs.json +296 -0
  318. package/data/hover/nextjs.json +305 -0
  319. package/data/hover/perl.json +251 -6
  320. package/data/hover/pla.json +264 -5
  321. package/data/hover/powershell.json +252 -7
  322. package/data/hover/protobuf.json +251 -6
  323. package/data/hover/react.json +173 -0
  324. package/data/hover/redis.json +355 -40
  325. package/data/hover/shadcn.json +450 -0
  326. package/data/hover/shell.json +684 -75
  327. package/data/hover/ssh_config.json +251 -6
  328. package/data/hover/xml.json +231 -7
  329. package/data/implementation/angular.json +22 -0
  330. package/data/implementation/nestjs.json +24 -0
  331. package/data/implementation/nextjs.json +137 -0
  332. package/data/implementation/react.json +125 -0
  333. package/data/implementation/shadcn.json +89 -0
  334. package/data/implementation/shell.json +59 -3
  335. package/data/inlayHints/angular.json +24 -0
  336. package/data/inlayHints/nestjs.json +24 -0
  337. package/data/inlayHints/nextjs.json +143 -0
  338. package/data/inlayHints/react.json +177 -0
  339. package/data/inlayHints/shadcn.json +109 -0
  340. package/data/inlayHints/shell.json +223 -35
  341. package/data/inlineCompletions/angular.json +135 -0
  342. package/data/inlineCompletions/c.json +49 -1
  343. package/data/inlineCompletions/cpp.json +61 -1
  344. package/data/inlineCompletions/csharp.json +73 -1
  345. package/data/inlineCompletions/css.json +125 -125
  346. package/data/inlineCompletions/dart.json +136 -26
  347. package/data/inlineCompletions/elixir.json +34 -34
  348. package/data/inlineCompletions/go.json +67 -1
  349. package/data/inlineCompletions/html.json +1 -1
  350. package/data/inlineCompletions/java.json +67 -1
  351. package/data/inlineCompletions/javascript.json +97 -1
  352. package/data/inlineCompletions/kotlin.json +88 -18
  353. package/data/inlineCompletions/less.json +76 -28
  354. package/data/inlineCompletions/lua.json +37 -1
  355. package/data/inlineCompletions/mysql.json +34 -34
  356. package/data/inlineCompletions/nestjs.json +25 -0
  357. package/data/inlineCompletions/nextjs.json +179 -0
  358. package/data/inlineCompletions/pgsql.json +34 -34
  359. package/data/inlineCompletions/php.json +43 -1
  360. package/data/inlineCompletions/python.json +73 -1
  361. package/data/inlineCompletions/react.json +203 -0
  362. package/data/inlineCompletions/ruby.json +49 -1
  363. package/data/inlineCompletions/rust.json +61 -1
  364. package/data/inlineCompletions/scala.json +130 -25
  365. package/data/inlineCompletions/scss.json +34 -34
  366. package/data/inlineCompletions/shadcn.json +115 -0
  367. package/data/inlineCompletions/shell.json +184 -34
  368. package/data/inlineCompletions/sql.json +43 -1
  369. package/data/inlineCompletions/swift.json +112 -22
  370. package/data/inlineCompletions/typescript.json +97 -1
  371. package/data/linkedEditingRange/angular.json +23 -0
  372. package/data/linkedEditingRange/azcli.json +6 -6
  373. package/data/linkedEditingRange/crontab.json +6 -6
  374. package/data/linkedEditingRange/docker-compose.json +6 -6
  375. package/data/linkedEditingRange/doctest.json +6 -6
  376. package/data/linkedEditingRange/dotenv.json +13 -6
  377. package/data/linkedEditingRange/ini.json +13 -6
  378. package/data/linkedEditingRange/json.json +13 -6
  379. package/data/linkedEditingRange/lexon.json +6 -6
  380. package/data/linkedEditingRange/mips.json +6 -6
  381. package/data/linkedEditingRange/msdax.json +6 -6
  382. package/data/linkedEditingRange/nestjs.json +18 -0
  383. package/data/linkedEditingRange/nextjs.json +24 -0
  384. package/data/linkedEditingRange/pla.json +6 -6
  385. package/data/linkedEditingRange/react.json +74 -0
  386. package/data/linkedEditingRange/redis-cli.json +6 -6
  387. package/data/linkedEditingRange/redis.json +6 -6
  388. package/data/linkedEditingRange/shadcn.json +23 -0
  389. package/data/linkedEditingRange/shell.json +25 -25
  390. package/data/linkedEditingRange/ssh_config.json +6 -6
  391. package/data/linkedEditingRange/systemd.json +6 -6
  392. package/data/linkedEditingRange/toml.json +13 -6
  393. package/data/linkedEditingRange/wgsl.json +6 -6
  394. package/data/linkedEditingRange/xml.json +13 -13
  395. package/data/linkedEditingRange/yaml.json +13 -6
  396. package/data/links/angular.json +95 -0
  397. package/data/links/nestjs.json +130 -0
  398. package/data/links/nextjs.json +91 -0
  399. package/data/links/react.json +75 -0
  400. package/data/links/shadcn.json +98 -0
  401. package/data/links/shell.json +56 -0
  402. package/data/links/tailwindcss.json +25 -0
  403. package/data/manifest.json +339 -152
  404. package/data/onTypeFormatting/angular.json +63 -0
  405. package/data/onTypeFormatting/nestjs.json +64 -0
  406. package/data/onTypeFormatting/nextjs.json +72 -0
  407. package/data/onTypeFormatting/react.json +148 -0
  408. package/data/onTypeFormatting/shadcn.json +63 -0
  409. package/data/onTypeFormatting/shell.json +72 -68
  410. package/data/rangeSemanticTokens/angular.json +196 -0
  411. package/data/rangeSemanticTokens/nestjs.json +195 -0
  412. package/data/rangeSemanticTokens/nextjs.json +199 -0
  413. package/data/rangeSemanticTokens/react.json +77 -0
  414. package/data/rangeSemanticTokens/shadcn.json +203 -0
  415. package/data/rangeSemanticTokens/shell.json +247 -69
  416. package/data/rangeSemanticTokens/tailwindcss.json +99 -8
  417. package/data/references/angular.json +26 -0
  418. package/data/references/nestjs.json +24 -0
  419. package/data/references/nextjs.json +178 -0
  420. package/data/references/react.json +192 -0
  421. package/data/references/shadcn.json +101 -0
  422. package/data/references/shell.json +323 -92
  423. package/data/references/tailwindcss.json +66 -0
  424. package/data/rename/angular.json +121 -0
  425. package/data/rename/nestjs.json +122 -0
  426. package/data/rename/nextjs.json +116 -0
  427. package/data/rename/react.json +133 -0
  428. package/data/rename/shadcn.json +73 -0
  429. package/data/rename/shell.json +101 -31
  430. package/data/selectionRange/abap.json +58 -34
  431. package/data/selectionRange/angular.json +126 -0
  432. package/data/selectionRange/apex.json +58 -34
  433. package/data/selectionRange/awk.json +56 -34
  434. package/data/selectionRange/azcli.json +43 -24
  435. package/data/selectionRange/bicep.json +56 -34
  436. package/data/selectionRange/c.json +62 -39
  437. package/data/selectionRange/caddy.json +53 -34
  438. package/data/selectionRange/cameligo.json +56 -34
  439. package/data/selectionRange/clojure.json +57 -34
  440. package/data/selectionRange/coffee.json +59 -34
  441. package/data/selectionRange/cpp.json +73 -44
  442. package/data/selectionRange/crontab.json +39 -29
  443. package/data/selectionRange/csharp.json +69 -39
  444. package/data/selectionRange/css.json +95 -55
  445. package/data/selectionRange/cypher.json +57 -34
  446. package/data/selectionRange/dart.json +65 -34
  447. package/data/selectionRange/docker-compose.json +54 -34
  448. package/data/selectionRange/dockerfile.json +56 -34
  449. package/data/selectionRange/doctest.json +47 -24
  450. package/data/selectionRange/dotenv.json +33 -24
  451. package/data/selectionRange/ecl.json +58 -34
  452. package/data/selectionRange/elixir.json +63 -34
  453. package/data/selectionRange/flow9.json +57 -34
  454. package/data/selectionRange/freemarker2.json +58 -34
  455. package/data/selectionRange/go.json +64 -39
  456. package/data/selectionRange/graphql.json +58 -34
  457. package/data/selectionRange/hcl.json +56 -34
  458. package/data/selectionRange/html.json +63 -34
  459. package/data/selectionRange/ini.json +38 -24
  460. package/data/selectionRange/java.json +68 -39
  461. package/data/selectionRange/javascript.json +65 -39
  462. package/data/selectionRange/julia.json +65 -39
  463. package/data/selectionRange/kotlin.json +68 -39
  464. package/data/selectionRange/less.json +58 -34
  465. package/data/selectionRange/lexon.json +38 -24
  466. package/data/selectionRange/liquid.json +58 -34
  467. package/data/selectionRange/lua.json +59 -34
  468. package/data/selectionRange/m3.json +57 -34
  469. package/data/selectionRange/makefile.json +53 -34
  470. package/data/selectionRange/markdown.json +57 -34
  471. package/data/selectionRange/mdx.json +63 -34
  472. package/data/selectionRange/mips.json +43 -29
  473. package/data/selectionRange/msdax.json +52 -34
  474. package/data/selectionRange/mysql.json +51 -34
  475. package/data/selectionRange/nestjs.json +35 -0
  476. package/data/selectionRange/nextjs.json +35 -0
  477. package/data/selectionRange/nginx.json +53 -34
  478. package/data/selectionRange/objective-c.json +64 -39
  479. package/data/selectionRange/pascal.json +53 -34
  480. package/data/selectionRange/pascaligo.json +57 -34
  481. package/data/selectionRange/perl.json +59 -34
  482. package/data/selectionRange/pgsql.json +50 -34
  483. package/data/selectionRange/php.json +65 -39
  484. package/data/selectionRange/pla.json +52 -29
  485. package/data/selectionRange/postiats.json +61 -34
  486. package/data/selectionRange/powerquery.json +56 -34
  487. package/data/selectionRange/powershell.json +65 -39
  488. package/data/selectionRange/protobuf.json +58 -34
  489. package/data/selectionRange/python.json +66 -39
  490. package/data/selectionRange/qsharp.json +62 -39
  491. package/data/selectionRange/r.json +57 -34
  492. package/data/selectionRange/razor.json +63 -34
  493. package/data/selectionRange/react.json +103 -0
  494. package/data/selectionRange/redis-cli.json +38 -24
  495. package/data/selectionRange/redis.json +38 -24
  496. package/data/selectionRange/redshift.json +49 -34
  497. package/data/selectionRange/restructuredtext.json +58 -34
  498. package/data/selectionRange/ruby.json +65 -39
  499. package/data/selectionRange/rust.json +73 -44
  500. package/data/selectionRange/sb.json +43 -29
  501. package/data/selectionRange/scala.json +65 -39
  502. package/data/selectionRange/scheme.json +52 -34
  503. package/data/selectionRange/scss.json +58 -34
  504. package/data/selectionRange/shadcn.json +120 -0
  505. package/data/selectionRange/shell.json +64 -34
  506. package/data/selectionRange/sol.json +63 -39
  507. package/data/selectionRange/sparql.json +58 -34
  508. package/data/selectionRange/sql.json +50 -34
  509. package/data/selectionRange/ssh_config.json +37 -29
  510. package/data/selectionRange/st.json +49 -29
  511. package/data/selectionRange/swift.json +73 -44
  512. package/data/selectionRange/systemd.json +47 -34
  513. package/data/selectionRange/systemverilog.json +62 -39
  514. package/data/selectionRange/tailwindcss.json +49 -34
  515. package/data/selectionRange/tcl.json +57 -34
  516. package/data/selectionRange/toml.json +49 -29
  517. package/data/selectionRange/twig.json +58 -34
  518. package/data/selectionRange/typescript.json +75 -44
  519. package/data/selectionRange/vb.json +59 -39
  520. package/data/selectionRange/wgsl.json +61 -34
  521. package/data/selectionRange/xml.json +51 -34
  522. package/data/selectionRange/yaml.json +54 -34
  523. package/data/semanticTokens/angular.json +269 -0
  524. package/data/semanticTokens/nestjs.json +245 -0
  525. package/data/semanticTokens/nextjs.json +265 -0
  526. package/data/semanticTokens/react.json +230 -0
  527. package/data/semanticTokens/shadcn.json +235 -0
  528. package/data/semanticTokens/shell.json +238 -65
  529. package/data/signatureHelp/angular.json +182 -0
  530. package/data/signatureHelp/nestjs.json +201 -0
  531. package/data/signatureHelp/nextjs.json +185 -0
  532. package/data/signatureHelp/react.json +285 -0
  533. package/data/signatureHelp/shadcn.json +237 -0
  534. package/data/signatureHelp/shell.json +797 -104
  535. package/data/typeDefinition/angular.json +362 -0
  536. package/data/typeDefinition/nestjs.json +334 -0
  537. package/data/typeDefinition/nextjs.json +285 -0
  538. package/data/typeDefinition/react.json +236 -0
  539. package/data/typeDefinition/shadcn.json +292 -0
  540. package/data/typeDefinition/shell.json +104 -40
  541. package/package.json +1 -1
  542. package/data/codeActions/bash.json +0 -169
  543. package/data/codeActions/zsh.json +0 -49
  544. package/data/codeLens/bash.json +0 -75
  545. package/data/codeLens/zsh.json +0 -19
  546. package/data/color/bash.json +0 -100
  547. package/data/color/zsh.json +0 -80
  548. package/data/commands/bash.json +0 -102
  549. package/data/commands/zsh.json +0 -166
  550. package/data/completion/bash.json +0 -1184
  551. package/data/completion/zsh.json +0 -973
  552. package/data/declaration/bash.json +0 -301
  553. package/data/declaration/zsh.json +0 -205
  554. package/data/definition/bash.json +0 -565
  555. package/data/definition/zsh.json +0 -350
  556. package/data/documentHighlight/bash.json +0 -393
  557. package/data/documentHighlight/zsh.json +0 -266
  558. package/data/documentRangeFormatting/bash.json +0 -41
  559. package/data/documentRangeFormatting/zsh.json +0 -59
  560. package/data/documentSymbol/bash.json +0 -124
  561. package/data/documentSymbol/zsh.json +0 -26
  562. package/data/foldingRange/bash.json +0 -76
  563. package/data/foldingRange/zsh.json +0 -46
  564. package/data/formatting/bash.json +0 -88
  565. package/data/formatting/zsh.json +0 -28
  566. package/data/hover/bash.json +0 -579
  567. package/data/hover/zsh.json +0 -96
  568. package/data/implementation/bash.json +0 -44
  569. package/data/implementation/zsh.json +0 -41
  570. package/data/inlayHints/bash.json +0 -207
  571. package/data/inlayHints/zsh.json +0 -43
  572. package/data/inlineCompletions/bash.json +0 -155
  573. package/data/inlineCompletions/zsh.json +0 -17
  574. package/data/linkedEditingRange/bash.json +0 -25
  575. package/data/linkedEditingRange/zsh.json +0 -25
  576. package/data/links/bash.json +0 -56
  577. package/data/links/zsh.json +0 -15
  578. package/data/onTypeFormatting/bash.json +0 -68
  579. package/data/onTypeFormatting/zsh.json +0 -68
  580. package/data/rangeSemanticTokens/bash.json +0 -90
  581. package/data/rangeSemanticTokens/zsh.json +0 -76
  582. package/data/references/bash.json +0 -221
  583. package/data/references/zsh.json +0 -166
  584. package/data/rename/bash.json +0 -37
  585. package/data/rename/zsh.json +0 -31
  586. package/data/selectionRange/bash.json +0 -35
  587. package/data/selectionRange/zsh.json +0 -35
  588. package/data/semanticTokens/bash.json +0 -71
  589. package/data/semanticTokens/zsh.json +0 -71
  590. package/data/signatureHelp/bash.json +0 -111
  591. package/data/signatureHelp/zsh.json +0 -118
  592. package/data/typeDefinition/bash.json +0 -95
  593. package/data/typeDefinition/zsh.json +0 -40
@@ -4,42 +4,287 @@
4
4
  "format": {
5
5
  "contents": [
6
6
  {
7
- "value": "```\n# .---------------- minute (0-59)\n# | .------------- hour (0-23)\n# | | .---------- day of month (1-31)\n# | | | .------- month (1-12 or jan-dec)\n# | | | | .---- day of week (0-7 or sun-sat)\n# | | | | |\n * * * * * command\n```\n**Cron expression** has 5 time fields followed by the command. Fields support `*`, ranges (`1-5`), lists (`1,3,5`), and steps (`*/5`)."
7
+ "value": "```cron\n# .---- minute (0-59)\n# | .---- hour (0-23)\n# | | .---- day of month (1-31)\n# | | | .---- month (1-12 or jan-dec)\n# | | | | .---- day of week (0-7 or sun-sat)\n# | | | | |\n * * * * * command\n```\n**Cron expression** has 5 time fields plus a command. Supports `*`, ranges, lists, and steps."
8
8
  }
9
9
  ]
10
10
  },
11
11
  "examples": {
12
12
  "contents": [
13
13
  {
14
- "value": "```cron\n*/5 * * * * # every 5 minutes\n0 */2 * * * # every 2 hours\n0 9 * * 1-5 # weekdays at 9 AM\n0 0 1 * * # monthly (1st at midnight)\n0 0 * * 0 # weekly (Sunday midnight)\n30 2 * * * # daily at 2:30 AM\n```\n**Common schedules** - The most frequently used cron patterns for server tasks."
14
+ "value": "```cron\n*/5 * * * * # every 5 minutes\n0 */2 * * * # every 2 hours\n0 9 * * 1-5 # weekdays at 9 AM\n0 0 1 * * # monthly (1st at midnight)\n0 0 * * 0 # weekly (Sunday midnight)\n30 2 * * * # daily at 2:30 AM\n```\n**Common schedules** the most frequently used cron patterns."
15
15
  }
16
16
  ]
17
17
  },
18
18
  "special": {
19
19
  "contents": [
20
20
  {
21
- "value": "```cron\n@reboot command # run once at startup\n@hourly command # 0 * * * *\n@daily command # 0 0 * * *\n@weekly command # 0 0 * * 0\n@monthly command # 0 0 1 * *\n@yearly command # 0 0 1 1 *\n```\n**Special strings** are shortcuts for common schedules. `@reboot` is particularly useful for startup tasks."
21
+ "value": "```cron\n@reboot command # run once at startup\n@hourly command # 0 * * * *\n@daily command # 0 0 * * *\n@weekly command # 0 0 * * 0\n@monthly command # 0 0 1 * *\n@yearly command # 0 0 1 1 *\n```\n**Special strings** are shortcuts for common schedules."
22
22
  }
23
23
  ]
24
24
  },
25
25
  "logging": {
26
26
  "contents": [
27
27
  {
28
- "value": "```cron\n# Log stdout and stderr to file:\n0 2 * * * /opt/backup.sh >> /var/log/backup.log 2>&1\n\n# Silence output:\n0 * * * * /opt/check.sh > /dev/null 2>&1\n\n# Email output:\nMAILTO=admin@example.com\n```\n**Logging** - Redirect output to files. Without redirection, cron emails output to MAILTO."
28
+ "value": "```cron\n# Log stdout and stderr:\n0 2 * * * /opt/backup.sh >> /var/log/backup.log 2>&1\n\n# Silence output:\n0 * * * * /opt/check.sh > /dev/null 2>&1\n\n# Email output:\nMAILTO=admin@example.com\n```\n**Logging** Redirect output to files. Without redirection, cron emails output to MAILTO."
29
29
  }
30
30
  ]
31
31
  },
32
32
  "PATH": {
33
33
  "contents": [
34
34
  {
35
- "value": "```cron\n# Cron has minimal PATH by default!\n# Always set PATH or use absolute paths:\nPATH=/usr/local/bin:/usr/bin:/bin\n\n# Or use absolute command paths:\n0 * * * * /usr/local/bin/node /opt/app/task.js\n```\n**PATH** - Cron's default PATH is minimal. Commands that work in your shell may fail in cron without setting PATH."
35
+ "value": "```cron\n# Cron has minimal PATH!\nPATH=/usr/local/bin:/usr/bin:/bin\n\n# Or use absolute paths:\n0 * * * * /usr/local/bin/node /opt/app/task.js\n```\n**PATH** Cron's default PATH is minimal. Set PATH or use absolute command paths."
36
36
  }
37
37
  ]
38
38
  },
39
39
  "flock": {
40
40
  "contents": [
41
41
  {
42
- "value": "```cron\n# Prevent overlapping runs:\n*/5 * * * * flock -n /tmp/myjob.lock /opt/slow-task.sh\n\n# With timeout:\n*/5 * * * * flock -w 10 /tmp/myjob.lock /opt/task.sh\n```\n**flock** prevents concurrent execution. Use `-n` to skip if locked, `-w N` to wait up to N seconds."
42
+ "value": "```cron\n# Prevent overlapping runs:\n*/5 * * * * flock -n /tmp/myjob.lock /opt/slow-task.sh\n\n# With timeout:\n*/5 * * * * flock -w 10 /tmp/myjob.lock /opt/task.sh\n```\n**flock** prevents concurrent execution. `-n` to skip if locked, `-w N` to wait."
43
+ }
44
+ ]
45
+ },
46
+ "minute": {
47
+ "contents": [
48
+ {
49
+ "value": "```cron\n# Minute field (0-59):\n0 # at minute 0 (top of hour)\n*/5 # every 5 minutes\n5,10,15 # at minutes 5, 10, and 15\n0-30 # every minute from 0 to 30\n```\n**Minute** is the first field (0-59). Determines which minute(s) of the hour the job runs."
50
+ }
51
+ ]
52
+ },
53
+ "hour": {
54
+ "contents": [
55
+ {
56
+ "value": "```cron\n# Hour field (0-23):\n0 # midnight\n9 # 9 AM\n*/6 # every 6 hours\n9-17 # 9 AM to 5 PM\n```\n**Hour** is the second field (0-23). Uses 24-hour format."
57
+ }
58
+ ]
59
+ },
60
+ "day_of_month": {
61
+ "contents": [
62
+ {
63
+ "value": "```cron\n# Day of month field (1-31):\n1 # first of month\n15 # 15th\n1,15 # 1st and 15th\n```\n**Day of month** is the third field (1-31). If month has fewer days, job won't run on invalid dates."
64
+ }
65
+ ]
66
+ },
67
+ "month": {
68
+ "contents": [
69
+ {
70
+ "value": "```cron\n# Month field (1-12 or jan-dec):\n1 # January\n*/3 # every 3 months\n6-8 # June through August\njan,jul # January and July\n```\n**Month** is the fourth field (1-12 or names). Names are case-insensitive."
71
+ }
72
+ ]
73
+ },
74
+ "day_of_week": {
75
+ "contents": [
76
+ {
77
+ "value": "```cron\n# Day of week (0-7 or sun-sat, 0 and 7 = Sunday):\n0 # Sunday\n1-5 # Monday through Friday\n6,0 # weekends\nmon,wed,fri\n```\n**Day of week** is the fifth field. Both 0 and 7 represent Sunday."
78
+ }
79
+ ]
80
+ },
81
+ "asterisk": {
82
+ "contents": [
83
+ {
84
+ "value": "```cron\n* * * * * # every minute\n```\n**Asterisk** `*` matches every possible value for that field."
85
+ }
86
+ ]
87
+ },
88
+ "step": {
89
+ "contents": [
90
+ {
91
+ "value": "```cron\n*/5 * * * * # every 5 minutes\n0 */2 * * * # every 2 hours\n* * */3 * * # every 3 days\n```\n**Step values** `*/N` run every N units. Can combine with ranges: `1-30/5` = 1,6,11,16,21,26."
92
+ }
93
+ ]
94
+ },
95
+ "range": {
96
+ "contents": [
97
+ {
98
+ "value": "```cron\n0 9-17 * * * # every hour 9 AM to 5 PM\n0 0 * * 1-5 # weekdays at midnight\n```\n**Ranges** `N-M` match all values from N to M inclusive."
99
+ }
100
+ ]
101
+ },
102
+ "list": {
103
+ "contents": [
104
+ {
105
+ "value": "```cron\n0 0 1,15 * * # 1st and 15th\n0 9 * * mon,wed # Monday and Wednesday\n```\n**Lists** `A,B,C` match specific values. Combine with ranges: `1-5,10,15`."
106
+ }
107
+ ]
108
+ },
109
+ "MAILTO": {
110
+ "contents": [
111
+ {
112
+ "value": "```cron\nMAILTO=admin@example.com\n# Multiple recipients:\nMAILTO=admin@example.com,ops@example.com\n# Disable email:\nMAILTO=\"\"\n```\n**MAILTO** sets the email recipient for job output. Empty string disables email."
113
+ }
114
+ ]
115
+ },
116
+ "SHELL": {
117
+ "contents": [
118
+ {
119
+ "value": "```cron\nSHELL=/bin/bash\n# or\nSHELL=/bin/sh\n```\n**SHELL** sets the shell used to run commands. Default is `/bin/sh`. Set to `/bin/bash` for bash features."
120
+ }
121
+ ]
122
+ },
123
+ "HOME": {
124
+ "contents": [
125
+ {
126
+ "value": "```cron\nHOME=/opt/app\n0 * * * * ./run.sh\n```\n**HOME** sets the working directory for cron jobs. Affects relative paths in commands."
127
+ }
128
+ ]
129
+ },
130
+ "crontab_commands": {
131
+ "contents": [
132
+ {
133
+ "value": "```bash\ncrontab -e # edit your crontab\ncrontab -l # list your crontab\ncrontab -r # remove your crontab\ncrontab -u user -l # list another user's crontab\n```\n**crontab commands** manage per-user cron schedules."
134
+ }
135
+ ]
136
+ },
137
+ "system_crontab": {
138
+ "contents": [
139
+ {
140
+ "value": "```cron\n# /etc/crontab has an extra USER field:\n* * * * * root /usr/local/bin/check.sh\n0 2 * * * www-data /opt/cleanup.sh\n```\n**System crontab** (`/etc/crontab`) includes a username field between the time spec and command."
141
+ }
142
+ ]
143
+ },
144
+ "cron_d": {
145
+ "contents": [
146
+ {
147
+ "value": "```bash\n# Drop-in files: /etc/cron.d/myapp\n# Same format as /etc/crontab (with user field)\n0 * * * * appuser /opt/myapp/hourly.sh\n```\n**/etc/cron.d/** directory holds per-application cron files. Same format as system crontab."
148
+ }
149
+ ]
150
+ },
151
+ "cron_directories": {
152
+ "contents": [
153
+ {
154
+ "value": "```bash\n/etc/cron.hourly/ # scripts run hourly\n/etc/cron.daily/ # scripts run daily\n/etc/cron.weekly/ # scripts run weekly\n/etc/cron.monthly/ # scripts run monthly\n```\n**Periodic directories** run scripts at fixed intervals. Place executable scripts (no extension) in these dirs."
155
+ }
156
+ ]
157
+ },
158
+ "environment": {
159
+ "contents": [
160
+ {
161
+ "value": "```cron\n# Set variables at the top:\nPATH=/usr/local/bin:/usr/bin:/bin\nSHELL=/bin/bash\nMAILTO=admin@example.com\nHOME=/opt/app\n\n0 * * * * ./my-script.sh\n```\n**Environment variables** set at the top of crontab apply to all jobs below. Only simple `KEY=value` syntax."
162
+ }
163
+ ]
164
+ },
165
+ "anacron": {
166
+ "contents": [
167
+ {
168
+ "value": "```bash\n# /etc/anacrontab:\n# period delay identifier command\n1 5 daily-task /opt/daily.sh\n7 10 weekly-task /opt/weekly.sh\n```\n**anacron** runs missed jobs after system wake/boot. Useful for laptops and machines that aren't always on."
169
+ }
170
+ ]
171
+ },
172
+ "two_am_problem": {
173
+ "contents": [
174
+ {
175
+ "value": "```cron\n# DST problem: 2 AM may occur twice or not at all\n# Safer: use UTC in crontab\nTZ=UTC\n0 7 * * * /opt/task.sh # 7 AM UTC\n```\n**DST/timezone** — Jobs at 2-3 AM may be skipped or run twice during DST changes. Use UTC to avoid this."
176
+ }
177
+ ]
178
+ },
179
+ "random_delay": {
180
+ "contents": [
181
+ {
182
+ "value": "```cron\n# Add random delay to avoid thundering herd:\n*/5 * * * * sleep $((RANDOM % 60)) && /opt/task.sh\n\n# Or use systemd timer RandomizedDelaySec\n```\n**Random delay** prevents many servers from hitting a service simultaneously."
183
+ }
184
+ ]
185
+ },
186
+ "timeout": {
187
+ "contents": [
188
+ {
189
+ "value": "```cron\n# Kill job if it runs too long:\n0 2 * * * timeout 3600 /opt/long-task.sh\n\n# timeout with signal:\n0 2 * * * timeout --signal=SIGKILL 3600 /opt/task.sh\n```\n**timeout** kills a cron job if it exceeds the specified duration. Prevents jobs from running indefinitely."
190
+ }
191
+ ]
192
+ },
193
+ "nice": {
194
+ "contents": [
195
+ {
196
+ "value": "```cron\n# Run with lower priority:\n0 2 * * * nice -n 19 /opt/heavy-task.sh\n\n# Also limit I/O:\n0 2 * * * ionice -c 3 nice -n 19 /opt/task.sh\n```\n**nice/ionice** reduce CPU and I/O priority for resource-intensive cron jobs."
197
+ }
198
+ ]
199
+ },
200
+ "chronic": {
201
+ "contents": [
202
+ {
203
+ "value": "```cron\n# chronic: only show output on error\n*/5 * * * * chronic /opt/check.sh\n\n# From moreutils package\n```\n**chronic** (from moreutils) suppresses output unless the command fails. Eliminates noisy success emails."
204
+ }
205
+ ]
206
+ },
207
+ "backup_pattern": {
208
+ "contents": [
209
+ {
210
+ "value": "```cron\n# Daily backup at 2 AM\n0 2 * * * /opt/backup.sh daily\n# Weekly backup Sunday at 3 AM\n0 3 * * 0 /opt/backup.sh weekly\n# Monthly backup 1st at 4 AM\n0 4 1 * * /opt/backup.sh monthly\n```\n**Backup pattern** — stagger daily, weekly, and monthly backups at different times."
211
+ }
212
+ ]
213
+ },
214
+ "logrotate": {
215
+ "contents": [
216
+ {
217
+ "value": "```cron\n# Rotate logs daily at midnight:\n0 0 * * * /usr/sbin/logrotate /etc/logrotate.conf\n\n# Or rely on system cron.daily\n```\n**Log rotation** is commonly scheduled via cron to prevent log files from filling disk."
218
+ }
219
+ ]
220
+ },
221
+ "certbot": {
222
+ "contents": [
223
+ {
224
+ "value": "```cron\n# Renew Let's Encrypt certificates twice daily:\n0 0,12 * * * certbot renew --quiet\n```\n**certbot renewal** — Check twice daily. Certbot only renews if expiry is within 30 days."
225
+ }
226
+ ]
227
+ },
228
+ "health_check": {
229
+ "contents": [
230
+ {
231
+ "value": "```cron\n# Check service health every minute:\n* * * * * curl -sf http://localhost:3000/health || systemctl restart myapp\n```\n**Health checks** use cron to monitor services and auto-restart on failure."
232
+ }
233
+ ]
234
+ },
235
+ "at_vs_cron": {
236
+ "contents": [
237
+ {
238
+ "value": "```bash\n# cron: recurring schedule\n0 9 * * * /opt/daily.sh\n\n# at: one-time execution\nat 9:00 AM tomorrow <<< '/opt/once.sh'\n```\n**cron vs at** — `cron` for recurring jobs, `at` for one-time scheduled tasks."
239
+ }
240
+ ]
241
+ },
242
+ "monitoring": {
243
+ "contents": [
244
+ {
245
+ "value": "```cron\n# Heartbeat monitoring with healthchecks.io:\n*/5 * * * * /opt/task.sh && curl -fsS --retry 3 https://hc-ping.com/uuid > /dev/null\n```\n**Monitoring** — Ping a health check URL after each run to detect failed or missed jobs."
246
+ }
247
+ ]
248
+ },
249
+ "cron_alternatives": {
250
+ "contents": [
251
+ {
252
+ "value": "```bash\n# systemd timer (modern Linux alternative):\n# /etc/systemd/system/mytask.timer\n# [Timer]\n# OnCalendar=*-*-* 02:00:00\n# Persistent=true\n```\n**systemd timers** are the modern alternative to cron on systemd-based systems. Support better logging and dependencies."
253
+ }
254
+ ]
255
+ },
256
+ "day_conflict": {
257
+ "contents": [
258
+ {
259
+ "value": "```cron\n# Day of month AND day of week: OR logic!\n0 0 1 * 5 # runs on 1st AND every Friday\n# NOT: 1st if it's a Friday\n```\n**Day conflict** — When both day-of-month and day-of-week are specified, the job runs when EITHER matches (OR logic)."
260
+ }
261
+ ]
262
+ },
263
+ "database_backup": {
264
+ "contents": [
265
+ {
266
+ "value": "```cron\n# PostgreSQL backup:\n0 2 * * * pg_dump -U postgres mydb | gzip > /backup/mydb_$(date +\\%Y\\%m\\%d).sql.gz\n\n# MySQL backup:\n0 2 * * * mysqldump -u root mydb | gzip > /backup/mydb_$(date +\\%Y\\%m\\%d).sql.gz\n```\n**Database backups** — Use `pg_dump`/`mysqldump` with gzip compression. Note: escape `%` as `\\%` in crontab."
267
+ }
268
+ ]
269
+ },
270
+ "percent_escape": {
271
+ "contents": [
272
+ {
273
+ "value": "```cron\n# % has special meaning in crontab (newline/stdin)\n# Must escape with backslash:\n0 2 * * * echo $(date +\\%Y-\\%m-\\%d) >> /var/log/date.log\n\n# Unescaped % splits command:\n0 * * * * /cmd%stdin data # sends 'stdin data' as input\n```\n**Percent sign** `%` in crontab means newline and stdin. Always escape as `\\%` in date formats."
274
+ }
275
+ ]
276
+ },
277
+ "cleanup": {
278
+ "contents": [
279
+ {
280
+ "value": "```cron\n# Delete files older than 30 days:\n0 3 * * * find /tmp -type f -mtime +30 -delete\n\n# Delete old log files:\n0 3 * * * find /var/log/app -name '*.log' -mtime +7 -delete\n```\n**Cleanup jobs** use `find -mtime -delete` to remove old files. Always test the find command first."
281
+ }
282
+ ]
283
+ },
284
+ "user_permissions": {
285
+ "contents": [
286
+ {
287
+ "value": "```bash\n# Edit root's crontab:\nsudo crontab -e\n\n# Restrict cron access:\n# /etc/cron.allow - only listed users can use cron\n# /etc/cron.deny - listed users are denied cron\n```\n**Permissions** — `/etc/cron.allow` and `/etc/cron.deny` control who can use crontab."
43
288
  }
44
289
  ]
45
290
  }
@@ -63,6 +63,238 @@
63
63
  },
64
64
  "container-type": {
65
65
  "contents": [{ "value": "```css\ncontainer-type: normal | size | inline-size;\n```\n\nEstablishes an element as a containment context for container queries.\n\n- `normal` — no containment (default)\n- `inline-size` — containment on the inline axis only\n- `size` — containment on both axes\n\nUsed with `@container` queries:\n```css\n.card { container-type: inline-size; }\n@container (min-width: 400px) {\n .card-body { display: flex; }\n}\n```" }]
66
+ },
67
+
68
+ "width": {
69
+ "contents": [{ "value": "```css\nwidth: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the width of an element's content box (or border box with `box-sizing: border-box`).\n\n- `auto` — determined by content and containment\n- `min-content` — shrink to narrowest content\n- `max-content` — expand to widest content\n- `fit-content()` — clamp between min-content and max-content" }]
70
+ },
71
+ "height": {
72
+ "contents": [{ "value": "```css\nheight: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the height of the element. Percentages resolve against the containing block's height.\n\n`height: 100vh` fills the full viewport height.\n`height: 100dvh` uses dynamic viewport height (adjusts for mobile browser chrome)." }]
73
+ },
74
+ "min-width": {
75
+ "contents": [{ "value": "```css\nmin-width: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the minimum width. The element will never be narrower than this value.\n\nOverrides `width` and `max-width` when they would result in a smaller value." }]
76
+ },
77
+ "max-width": {
78
+ "contents": [{ "value": "```css\nmax-width: <length> | <percentage> | none | min-content | max-content | fit-content(<length>);\n```\n\nSets the maximum width. The element will never be wider than this value.\n\nOverrides `width` but is overridden by `min-width`. Common pattern: `max-width: 1200px; margin: 0 auto;` for centered layouts." }]
79
+ },
80
+ "min-height": {
81
+ "contents": [{ "value": "```css\nmin-height: <length> | <percentage> | auto | min-content | max-content | fit-content(<length>);\n```\n\nSets the minimum height. Useful for ensuring content areas fill available space: `min-height: 100vh;` for full-page layouts." }]
82
+ },
83
+ "max-height": {
84
+ "contents": [{ "value": "```css\nmax-height: <length> | <percentage> | none | min-content | max-content;\n```\n\nSets the maximum height. Commonly used with `overflow: auto` for scrollable regions." }]
85
+ },
86
+ "top": {
87
+ "contents": [{ "value": "```css\ntop: <length> | <percentage> | auto;\n```\n\nSpecifies the vertical position of a positioned element. Behavior depends on `position`:\n- `relative` — offsets from normal position\n- `absolute` — distance from top edge of containing block\n- `fixed` — distance from top of viewport\n- `sticky` — threshold for sticking" }]
88
+ },
89
+ "right": {
90
+ "contents": [{ "value": "```css\nright: <length> | <percentage> | auto;\n```\n\nSpecifies the horizontal position from the right edge of a positioned element's containing block." }]
91
+ },
92
+ "bottom": {
93
+ "contents": [{ "value": "```css\nbottom: <length> | <percentage> | auto;\n```\n\nSpecifies the vertical position from the bottom edge of a positioned element's containing block." }]
94
+ },
95
+ "left": {
96
+ "contents": [{ "value": "```css\nleft: <length> | <percentage> | auto;\n```\n\nSpecifies the horizontal position from the left edge of a positioned element's containing block." }]
97
+ },
98
+ "inset": {
99
+ "contents": [{ "value": "```css\ninset: <length> | <percentage> | auto;\n/* Shorthand for: top right bottom left */\n```\n\nShorthand for `top`, `right`, `bottom`, `left`. Follows the same 1-to-4 value pattern as `margin`.\n\n`inset: 0;` fills the containing block completely (equivalent to `top: 0; right: 0; bottom: 0; left: 0;`)." }]
100
+ },
101
+ "flex-wrap": {
102
+ "contents": [{ "value": "```css\nflex-wrap: nowrap | wrap | wrap-reverse;\n```\n\n- `nowrap` (default) — all items on one line, may overflow\n- `wrap` — items wrap to new lines from top to bottom\n- `wrap-reverse` — items wrap from bottom to top\n\nWhen wrapping, `align-content` controls spacing between lines." }]
103
+ },
104
+ "flex-grow": {
105
+ "contents": [{ "value": "```css\nflex-grow: <number>;\n```\n\nSpecifies how much a flex item grows relative to siblings when positive free space is distributed.\n\n- `0` (default) — don't grow\n- `1` — grow equally\n- `2` — grow twice as much as items with `flex-grow: 1`" }]
106
+ },
107
+ "flex-shrink": {
108
+ "contents": [{ "value": "```css\nflex-shrink: <number>;\n```\n\nSpecifies how much a flex item shrinks relative to siblings when there isn't enough space.\n\n- `1` (default) — shrink equally\n- `0` — don't shrink (useful for fixed-width sidebars)" }]
109
+ },
110
+ "flex-basis": {
111
+ "contents": [{ "value": "```css\nflex-basis: <length> | <percentage> | auto | content;\n```\n\nSets the initial main size of a flex item before free space is distributed.\n\n- `auto` — uses `width`/`height` value\n- `0` — ignores content size, distributes all space via `flex-grow`\n- A specific length — sets an explicit starting size" }]
112
+ },
113
+ "align-content": {
114
+ "contents": [{ "value": "```css\nalign-content: stretch | flex-start | flex-end | center | space-between | space-around | space-evenly;\n```\n\nDistributes space between and around flex/grid lines along the cross axis.\n\nOnly applies when there are multiple lines (flex-wrap: wrap or grid with multiple rows)." }]
115
+ },
116
+ "align-self": {
117
+ "contents": [{ "value": "```css\nalign-self: auto | flex-start | flex-end | center | baseline | stretch;\n```\n\nOverrides `align-items` for a specific flex/grid item. Aligns this item independently on the cross axis." }]
118
+ },
119
+ "gap": {
120
+ "contents": [{ "value": "```css\ngap: <row-gap> <column-gap>?;\n```\n\nShorthand for `row-gap` and `column-gap`. Sets gutters between flex/grid items.\n\n- `gap: 1rem;` — uniform gap\n- `gap: 1rem 2rem;` — row gap | column gap\n\nReplaces the older `grid-gap` property. Works in both Flexbox and Grid." }]
121
+ },
122
+ "grid-template-rows": {
123
+ "contents": [{ "value": "```css\ngrid-template-rows: <track-size>+ | repeat(<count>, <track-size>) | auto;\n```\n\nDefines row sizes in a grid container.\n\nExamples:\n```css\ngrid-template-rows: auto 1fr auto;\ngrid-template-rows: repeat(3, minmax(100px, auto));\ngrid-template-rows: [header] auto [content] 1fr [footer] auto;\n```" }]
124
+ },
125
+ "grid-column": {
126
+ "contents": [{ "value": "```css\ngrid-column: <start-line> / <end-line>;\n```\n\nShorthand for `grid-column-start` / `grid-column-end`. Places a grid item horizontally.\n\nExamples:\n- `grid-column: 1 / 3;` — spans columns 1 and 2\n- `grid-column: 1 / -1;` — spans all columns\n- `grid-column: span 2;` — spans 2 columns from auto-placement" }]
127
+ },
128
+ "grid-row": {
129
+ "contents": [{ "value": "```css\ngrid-row: <start-line> / <end-line>;\n```\n\nShorthand for `grid-row-start` / `grid-row-end`. Places a grid item vertically.\n\nExamples:\n- `grid-row: 1 / 3;` — spans rows 1 and 2\n- `grid-row: span 2;` — spans 2 rows" }]
130
+ },
131
+ "grid-auto-flow": {
132
+ "contents": [{ "value": "```css\ngrid-auto-flow: row | column | dense | row dense | column dense;\n```\n\nControls how auto-placed items flow into the grid.\n\n- `row` (default) — fill rows first\n- `column` — fill columns first\n- `dense` — fill gaps in earlier cells (may reorder visually)" }]
133
+ },
134
+ "place-items": {
135
+ "contents": [{ "value": "```css\nplace-items: <align-items> <justify-items>?;\n```\n\nShorthand for `align-items` and `justify-items`. Centers grid/flex items:\n\n`place-items: center;` centers items both horizontally and vertically." }]
136
+ },
137
+ "place-content": {
138
+ "contents": [{ "value": "```css\nplace-content: <align-content> <justify-content>?;\n```\n\nShorthand for `align-content` and `justify-content`. Distributes space in both axes at once." }]
139
+ },
140
+
141
+ "font-size": {
142
+ "contents": [{ "value": "```css\nfont-size: <absolute> | <relative> | <length> | <percentage>;\n```\n\nAbsolute keywords: `xx-small`, `x-small`, `small`, `medium`, `large`, `x-large`, `xx-large`.\nRelative: `smaller`, `larger`.\n\nBest practice for responsive text: `font-size: clamp(1rem, 2.5vw, 2rem);`\n\n`em` is relative to parent font-size. `rem` is relative to root (`<html>`) font-size." }]
143
+ },
144
+ "font-weight": {
145
+ "contents": [{ "value": "```css\nfont-weight: normal | bold | bolder | lighter | 100-900;\n```\n\nNumeric scale (100–900 in increments of 100):\n- 100: Thin\n- 300: Light\n- 400: Normal (= `normal`)\n- 500: Medium\n- 700: Bold (= `bold`)\n- 900: Black\n\nVariable fonts support any integer in the 1–1000 range." }]
146
+ },
147
+ "font-family": {
148
+ "contents": [{ "value": "```css\nfont-family: <family-name> | <generic-family>;\n```\n\nGeneric families: `serif`, `sans-serif`, `monospace`, `cursive`, `fantasy`, `system-ui`, `ui-serif`, `ui-sans-serif`, `ui-monospace`.\n\nAlways end with a generic fallback:\n```css\nfont-family: 'Inter', 'Segoe UI', system-ui, sans-serif;\n```\n\nQuote family names containing spaces or special characters." }]
149
+ },
150
+ "line-height": {
151
+ "contents": [{ "value": "```css\nline-height: normal | <number> | <length> | <percentage>;\n```\n\nSets the height of a line box. Unitless values (like `1.5`) are recommended as they scale with font-size.\n\n- `normal` — browser default (~1.2)\n- `1.5` — 1.5× the font-size\n- `24px` — fixed line height\n\nAffects vertical rhythm and readability. WCAG recommends at least 1.5 for body text." }]
152
+ },
153
+ "letter-spacing": {
154
+ "contents": [{ "value": "```css\nletter-spacing: normal | <length>;\n```\n\nSets the space between characters. Negative values tighten text.\n\nCommon usage:\n- Headings: `letter-spacing: -0.025em;` (tighter)\n- Uppercase text: `letter-spacing: 0.05em;` (wider)\n- Body text: `letter-spacing: normal;`" }]
155
+ },
156
+ "text-align": {
157
+ "contents": [{ "value": "```css\ntext-align: left | right | center | justify | start | end;\n```\n\nAligns inline content within a block element.\n\n- `start`/`end` — logical values that respect writing direction (RTL-safe)\n- `justify` — stretches lines to fill width; last line is left-aligned" }]
158
+ },
159
+ "text-decoration": {
160
+ "contents": [{ "value": "```css\ntext-decoration: <line> <style>? <color>? <thickness>?;\n```\n\nShorthand for `text-decoration-line`, `text-decoration-style`, `text-decoration-color`, `text-decoration-thickness`.\n\nLines: `none`, `underline`, `overline`, `line-through`.\nStyles: `solid`, `double`, `dotted`, `dashed`, `wavy`.\n\n`text-underline-offset` adjusts position of underlines." }]
161
+ },
162
+ "text-transform": {
163
+ "contents": [{ "value": "```css\ntext-transform: none | capitalize | uppercase | lowercase | full-width;\n```\n\n- `capitalize` — first letter of each word uppercased\n- `uppercase` — all characters uppercased\n- `lowercase` — all characters lowercased\n\nNote: Doesn't change the actual content, only the visual presentation." }]
164
+ },
165
+ "text-overflow": {
166
+ "contents": [{ "value": "```css\ntext-overflow: clip | ellipsis;\n```\n\nSpecifies how overflowed text that is not displayed is signaled.\n\nRequires `overflow: hidden` and `white-space: nowrap` to take effect.\n\nClassic truncation pattern:\n```css\noverflow: hidden;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\n```" }]
167
+ },
168
+ "white-space": {
169
+ "contents": [{ "value": "```css\nwhite-space: normal | nowrap | pre | pre-wrap | pre-line | break-spaces;\n```\n\n- `normal` — collapse whitespace, wrap at available width\n- `nowrap` — collapse whitespace, no wrapping\n- `pre` — preserve whitespace and newlines, no wrapping\n- `pre-wrap` — preserve whitespace, wrap at available width\n- `pre-line` — collapse whitespace, preserve newlines, wrap" }]
170
+ },
171
+ "word-break": {
172
+ "contents": [{ "value": "```css\nword-break: normal | break-all | keep-all | break-word;\n```\n\n- `normal` — break at allowed break points\n- `break-all` — break anywhere (for CJK text or long strings)\n- `keep-all` — don't break CJK characters\n- `break-word` — break at word boundaries, then anywhere if needed (deprecated, use `overflow-wrap: anywhere` instead)" }]
173
+ },
174
+ "overflow-wrap": {
175
+ "contents": [{ "value": "```css\noverflow-wrap: normal | break-word | anywhere;\n```\n\nAllows unbreakable strings to be broken to prevent overflow.\n\n- `break-word` — break long words at arbitrary points if needed\n- `anywhere` — like `break-word` but also considers soft wrap opportunities for min-content sizing" }]
176
+ },
177
+
178
+ "color": {
179
+ "contents": [{ "value": "```css\ncolor: <color>;\n```\n\nSets the foreground color for text content and text decorations.\n\nColor formats:\n- Named: `red`, `rebeccapurple`\n- Hex: `#ff0000`, `#f00`, `#ff000080`\n- RGB: `rgb(255 0 0)`, `rgb(255 0 0 / 50%)`\n- HSL: `hsl(0 100% 50%)`, `hsl(0 100% 50% / 50%)`\n- OKLCH: `oklch(70% 0.25 30)`\n- Keywords: `currentColor`, `transparent`, `inherit`" }]
180
+ },
181
+ "background-color": {
182
+ "contents": [{ "value": "```css\nbackground-color: <color>;\n```\n\nSets the background color. Painted behind `background-image`.\n\nSupports all color formats including alpha transparency:\n`background-color: rgb(0 0 0 / 50%);`" }]
183
+ },
184
+ "background-image": {
185
+ "contents": [{ "value": "```css\nbackground-image: none | <image>+;\n```\n\nSets one or more background images. Supports gradients as images.\n\nExamples:\n```css\nbackground-image: url('bg.jpg');\nbackground-image: linear-gradient(to right, #000, #fff);\nbackground-image: radial-gradient(circle, #000, transparent);\nbackground-image: conic-gradient(from 45deg, red, blue);\n```\n\nMultiple backgrounds are layered: first declared is on top." }]
186
+ },
187
+ "background-size": {
188
+ "contents": [{ "value": "```css\nbackground-size: auto | <length> | <percentage> | cover | contain;\n```\n\n- `cover` — scales image to fill element (may crop)\n- `contain` — scales image to fit entirely (may leave gaps)\n- `auto` — natural image dimensions\n\nTwo values: `background-size: width height;`" }]
189
+ },
190
+ "background-position": {
191
+ "contents": [{ "value": "```css\nbackground-position: <position>;\n```\n\nSets the initial position of a background image.\n\nKeywords: `top`, `right`, `bottom`, `left`, `center`.\nValues: `background-position: 50% 50%;` (centered)\nMulti-value: `background-position: right 10px bottom 20px;`" }]
192
+ },
193
+ "linear-gradient()": {
194
+ "contents": [{ "value": "```css\nlinear-gradient(<angle> | to <side>, <color-stop>, ...)\n```\n\nCreates a linear color transition.\n\nAngles: `0deg` (up), `90deg` (right), `180deg` (down), `270deg` (left).\nKeywords: `to right`, `to bottom right`, etc.\n\nExamples:\n```css\nlinear-gradient(135deg, #667eea 0%, #764ba2 100%);\nlinear-gradient(to right, red, transparent);\nlinear-gradient(to bottom, #000 0%, #000 50%, #fff 50%, #fff 100%);\n```" }]
195
+ },
196
+ "radial-gradient()": {
197
+ "contents": [{ "value": "```css\nradial-gradient(<shape> <size> at <position>, <color-stop>, ...)\n```\n\nCreates a radial color transition from a center point.\n\nShapes: `circle`, `ellipse` (default).\nSizes: `closest-side`, `farthest-side`, `closest-corner`, `farthest-corner`.\n\nExample: `radial-gradient(circle at top left, #667eea, transparent);`" }]
198
+ },
199
+
200
+ "border-width": {
201
+ "contents": [{ "value": "```css\nborder-width: <length>{1,4};\n```\n\nSets the width of all four borders. Uses the same 1-to-4 value shorthand as `margin`.\n\nKeywords: `thin` (~1px), `medium` (~3px), `thick` (~5px).\n\nIndividual sides: `border-top-width`, `border-right-width`, etc." }]
202
+ },
203
+ "border-style": {
204
+ "contents": [{ "value": "```css\nborder-style: none | solid | dashed | dotted | double | groove | ridge | inset | outset | hidden;\n```\n\nSets the line style of all four borders. `none` and `hidden` both render no border, but `hidden` wins in border-collapsing table cells." }]
205
+ },
206
+ "border-color": {
207
+ "contents": [{ "value": "```css\nborder-color: <color>{1,4};\n```\n\nSets the color of all four borders. Uses 1-to-4 value shorthand.\n\nDefaults to `currentColor` if not specified." }]
208
+ },
209
+ "outline": {
210
+ "contents": [{ "value": "```css\noutline: <width> <style> <color>;\n```\n\nDraws a line outside the element's border. Does NOT affect layout (no space taken).\n\nUnlike `border`, `outline` doesn't have corners — use `outline-offset` to push it away from the element.\n\n`outline: 2px solid blue;` is the default focus indicator in many browsers.\n`outline: none;` removes it (only do this with a visible alternative)." }]
211
+ },
212
+ "box-shadow": {
213
+ "contents": [{ "value": "```css\nbox-shadow: <inset>? <offset-x> <offset-y> <blur> <spread>? <color>;\n```\n\nAdds shadow effects. Supports multiple shadows separated by commas.\n\nExamples:\n```css\nbox-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\nbox-shadow: inset 0 2px 4px rgba(0,0,0,0.1);\nbox-shadow: 0 0 0 3px rgba(66,153,225,0.5); /* ring effect */\n```" }]
214
+ },
215
+ "filter": {
216
+ "contents": [{ "value": "```css\nfilter: <filter-function>+;\n```\n\nFunctions: `blur()`, `brightness()`, `contrast()`, `grayscale()`, `hue-rotate()`, `invert()`, `opacity()`, `saturate()`, `sepia()`, `drop-shadow()`.\n\nExamples:\n```css\nfilter: blur(4px);\nfilter: grayscale(100%) brightness(0.8);\nfilter: drop-shadow(2px 4px 6px rgba(0,0,0,0.3));\n```\n\n`drop-shadow()` follows the alpha shape (unlike `box-shadow`)." }]
217
+ },
218
+ "backdrop-filter": {
219
+ "contents": [{ "value": "```css\nbackdrop-filter: <filter-function>+;\n```\n\nApplies filter effects to the area behind an element. Uses the same functions as `filter`.\n\nGlass morphism pattern:\n```css\nbackdrop-filter: blur(10px);\nbackground-color: rgba(255, 255, 255, 0.3);\n```\n\nRequires a transparent/semi-transparent background to be visible." }]
220
+ },
221
+ "mix-blend-mode": {
222
+ "contents": [{ "value": "```css\nmix-blend-mode: normal | multiply | screen | overlay | darken | lighten | color-dodge | color-burn | hard-light | soft-light | difference | exclusion | hue | saturation | color | luminosity;\n```\n\nDefines how an element's content blends with the content behind it.\n\n`isolation: isolate;` on a parent creates a new stacking context, preventing blend from affecting ancestors." }]
223
+ },
224
+ "object-fit": {
225
+ "contents": [{ "value": "```css\nobject-fit: fill | contain | cover | none | scale-down;\n```\n\nSets how `<img>`, `<video>`, or other replaced elements resize to fit their container.\n\n- `cover` — fill container, maintain aspect ratio (may crop)\n- `contain` — fit entirely, maintain aspect ratio (may letterbox)\n- `fill` — stretch to fill (may distort)\n- `none` — natural size\n- `scale-down` — `none` or `contain`, whichever is smaller\n\nUsed with `object-position` to control placement." }]
226
+ },
227
+ "object-position": {
228
+ "contents": [{ "value": "```css\nobject-position: <position>;\n```\n\nSets the alignment of replaced content within its box. Uses the same syntax as `background-position`.\n\nDefault: `50% 50%` (centered).\nExample: `object-position: top center;`" }]
229
+ },
230
+ "aspect-ratio": {
231
+ "contents": [{ "value": "```css\naspect-ratio: auto | <width> / <height>;\n```\n\nSets a preferred aspect ratio for the element's box.\n\nExamples:\n- `aspect-ratio: 16 / 9;` — widescreen video\n- `aspect-ratio: 1;` — square\n- `aspect-ratio: 4 / 3;` — classic photo\n\nWorks with `width: 100%;` to create responsive containers that maintain their ratio." }]
232
+ },
233
+ "overflow-x": {
234
+ "contents": [{ "value": "```css\noverflow-x: visible | hidden | clip | scroll | auto;\n```\n\nControls horizontal overflow behavior.\n`overflow-x: auto;` adds a scrollbar only when content overflows horizontally." }]
235
+ },
236
+ "overflow-y": {
237
+ "contents": [{ "value": "```css\noverflow-y: visible | hidden | clip | scroll | auto;\n```\n\nControls vertical overflow behavior.\n`overflow-y: auto;` adds a scrollbar only when content overflows vertically." }]
238
+ },
239
+ "visibility": {
240
+ "contents": [{ "value": "```css\nvisibility: visible | hidden | collapse;\n```\n\n- `visible` — element is visible\n- `hidden` — element is invisible but still occupies space (unlike `display: none`)\n- `collapse` — for table elements, removes row/column; behaves like `hidden` for others\n\nHidden elements still receive events and can be tab-focused." }]
241
+ },
242
+ "pointer-events": {
243
+ "contents": [{ "value": "```css\npointer-events: auto | none;\n```\n\n- `auto` — element responds to pointer events normally\n- `none` — element is \"transparent\" to pointer events; clicks pass through to elements below\n\nUseful for overlays, disabled states, and decorative elements." }]
244
+ },
245
+ "user-select": {
246
+ "contents": [{ "value": "```css\nuser-select: auto | text | none | all | contain;\n```\n\nControls whether text can be selected.\n\n- `none` — prevents text selection (useful for UI elements)\n- `all` — entire element selected on click (useful for code blocks)\n- `text` — text can be selected normally" }]
247
+ },
248
+ "resize": {
249
+ "contents": [{ "value": "```css\nresize: none | both | horizontal | vertical | block | inline;\n```\n\nSets whether an element is resizable by the user.\n\nRequires `overflow` other than `visible`. `<textarea>` is resizable by default." }]
250
+ },
251
+ "scroll-behavior": {
252
+ "contents": [{ "value": "```css\nscroll-behavior: auto | smooth;\n```\n\nSets whether scrolling is instant or animated.\n\n`html { scroll-behavior: smooth; }` enables smooth scrolling for all anchor links and `scrollTo()` calls." }]
253
+ },
254
+ "scroll-snap-type": {
255
+ "contents": [{ "value": "```css\nscroll-snap-type: none | <axis> <strictness>?;\n```\n\nAxis: `x`, `y`, `block`, `inline`, `both`.\nStrictness: `mandatory`, `proximity`.\n\nCarousel pattern:\n```css\n.container { scroll-snap-type: x mandatory; overflow-x: auto; }\n.item { scroll-snap-align: start; }\n```" }]
256
+ },
257
+ "will-change": {
258
+ "contents": [{ "value": "```css\nwill-change: auto | <property>+;\n```\n\nHints to the browser about upcoming changes for optimization.\n\nExamples:\n- `will-change: transform;` — optimizes for transform animations\n- `will-change: opacity;` — optimizes for opacity changes\n\nUse sparingly — add before animation, remove after. Excessive use wastes GPU memory." }]
259
+ },
260
+ "contain": {
261
+ "contents": [{ "value": "```css\ncontain: none | strict | content | size | layout | style | paint;\n```\n\nIndicates containment restrictions to the browser for performance optimization.\n\n- `layout` — element's layout is independent of the rest of the page\n- `paint` — descendants are not rendered outside the element's bounds\n- `size` — element's size is not affected by its descendants\n- `content` — shorthand for `layout paint style`\n- `strict` — shorthand for `layout paint size style`" }]
262
+ },
263
+ "accent-color": {
264
+ "contents": [{ "value": "```css\naccent-color: auto | <color>;\n```\n\nSets the accent color for form controls: checkboxes, radio buttons, range sliders, and progress bars.\n\n`accent-color: auto;` uses the browser/OS default.\n\nSimplifies form theming without custom styling." }]
265
+ },
266
+ "color-scheme": {
267
+ "contents": [{ "value": "```css\ncolor-scheme: normal | light | dark | light dark;\n```\n\nIndicates which color schemes the element supports.\n\n`:root { color-scheme: light dark; }` tells the browser both are supported, enabling native dark mode for form controls, scrollbars, and other UA-rendered elements." }]
268
+ },
269
+ "::placeholder": {
270
+ "contents": [{ "value": "```css\n::placeholder {\n color: <color>;\n opacity: <number>;\n font-style: <style>;\n}\n```\n\nStyles the placeholder text of `<input>` and `<textarea>` elements.\n\nNote: Default opacity varies by browser (Firefox uses 0.54). Set `opacity: 1;` for consistent rendering." }]
271
+ },
272
+ "@container": {
273
+ "contents": [{ "value": "```css\n@container <name>? (<condition>) { ... }\n```\n\nApplies styles based on the size of a containing element (not the viewport).\n\nConditions: `min-width`, `max-width`, `min-height`, `max-height`, `width`, `inline-size`, `block-size`.\n\nRequires `container-type` on ancestor:\n```css\n.parent { container-type: inline-size; container-name: card; }\n@container card (min-width: 400px) { .child { flex-direction: row; } }\n```" }]
274
+ },
275
+ "@layer": {
276
+ "contents": [{ "value": "```css\n@layer <name>;\n@layer <name> { ... }\n@layer <name1>, <name2>, <name3>;\n```\n\nDeclares cascade layers to control specificity ordering.\n\n- Layers declared earlier have **lower** priority\n- Unlayered styles have **higher** priority than layered styles\n- Layers can be nested: `@layer framework.components { }`\n\nUseful for managing third-party CSS specificity conflicts." }]
277
+ },
278
+ "@supports": {
279
+ "contents": [{ "value": "```css\n@supports (<condition>) { ... }\n@supports not (<condition>) { ... }\n@supports (<condition>) and (<condition>) { ... }\n```\n\nFeature queries — conditionally applies styles based on browser support.\n\nExamples:\n```css\n@supports (display: grid) { .layout { display: grid; } }\n@supports selector(:has()) { .parent:has(.child) { color: red; } }\n@supports (backdrop-filter: blur(10px)) { .glass { backdrop-filter: blur(10px); } }\n```" }]
280
+ },
281
+ "@import": {
282
+ "contents": [{ "value": "```css\n@import url(<path>) <media>? <layer>?;\n```\n\nImports an external stylesheet. Must appear before all rules except `@charset` and `@layer`.\n\nExamples:\n```css\n@import url('reset.css');\n@import url('print.css') print;\n@import url('lib.css') layer(lib);\n@import url('dark.css') (prefers-color-scheme: dark);\n```\n\nNote: Multiple `@import` rules create sequential blocking requests. Consider bundling instead." }]
283
+ },
284
+ "min()": {
285
+ "contents": [{ "value": "```css\nmin(<value>, <value>, ...)\n```\n\nReturns the smallest value from a comma-separated list.\n\nExample: `width: min(100%, 600px);` — never exceeds 600px but also never exceeds parent width.\n\nEquivalent to `max-width`-like behavior without a separate property." }]
286
+ },
287
+ "max()": {
288
+ "contents": [{ "value": "```css\nmax(<value>, <value>, ...)\n```\n\nReturns the largest value from a comma-separated list.\n\nExample: `width: max(300px, 50%);` — at least 300px but grows with parent.\n\nEquivalent to `min-width`-like behavior without a separate property." }]
289
+ },
290
+ ":has()": {
291
+ "contents": [{ "value": "```css\n:has(<selector>)\n```\n\nThe \"parent selector\" — matches an element if any of its descendants match the argument selector.\n\nExamples:\n```css\n.card:has(img) { padding: 0; }\n.form:has(:invalid) { border-color: red; }\nh2:has(+ p) { margin-bottom: 0; } /* h2 followed by p */\n```\n\nHighly powerful but use carefully for performance — browser evaluates from the subject outward." }]
292
+ },
293
+ ":is()": {
294
+ "contents": [{ "value": "```css\n:is(<selector-list>)\n```\n\nMatches any element that can be matched by one of the selectors in the list. Simplifies complex selectors.\n\n```css\n:is(h1, h2, h3) { color: blue; }\n:is(.card, .panel) :is(h2, h3) { margin: 0; }\n```\n\nSpecificity: takes the **most specific** selector in the list. Use `:where()` for zero-specificity version." }]
295
+ },
296
+ ":where()": {
297
+ "contents": [{ "value": "```css\n:where(<selector-list>)\n```\n\nSame as `:is()` but with **zero specificity**. Ideal for default stylesheets that should be easily overridable.\n\n```css\n:where(.dialog, .modal) { margin: auto; }\n```" }]
66
298
  }
67
299
  }
68
300
  }