@enjoys/context-engine 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/codeActions/css.json +111 -0
- package/data/codeActions/tailwindcss.json +76 -0
- package/data/codeLens/css.json +68 -0
- package/data/codeLens/tailwindcss.json +47 -0
- package/data/color/css.json +124 -0
- package/data/color/tailwindcss.json +53 -0
- package/data/commands/css.json +41 -0
- package/data/commands/manifest.json +729 -727
- package/data/commands/tailwindcss.json +53 -0
- package/data/completion/css.json +383 -0
- package/data/completion/javascript.json +27 -0
- package/data/completion/redis-cli.json +1 -1
- package/data/completion/tailwindcss.json +284 -0
- package/data/completion/typescript.json +27 -0
- package/data/declaration/css.json +59 -0
- package/data/declaration/tailwindcss.json +65 -0
- package/data/definition/css.json +115 -0
- package/data/definition/redis-cli.json +1 -1
- package/data/definition/tailwindcss.json +115 -0
- package/data/documentHighlight/css.json +50 -0
- package/data/documentHighlight/tailwindcss.json +65 -0
- package/data/documentRangeFormatting/css.json +101 -0
- package/data/documentRangeFormatting/tailwindcss.json +55 -0
- package/data/documentSymbol/css.json +96 -0
- package/data/documentSymbol/tailwindcss.json +61 -0
- package/data/foldingRange/css.json +66 -0
- package/data/foldingRange/tailwindcss.json +60 -0
- package/data/formatting/css.json +73 -0
- package/data/formatting/tailwindcss.json +48 -0
- package/data/hover/css.json +68 -0
- package/data/hover/redis-cli.json +1 -1
- package/data/hover/tailwindcss.json +968 -0
- package/data/implementation/css.json +65 -0
- package/data/implementation/tailwindcss.json +59 -0
- package/data/inlayHints/css.json +87 -0
- package/data/inlayHints/tailwindcss.json +111 -0
- package/data/inlineCompletions/css.json +125 -0
- package/data/inlineCompletions/javascript.json +12 -0
- package/data/inlineCompletions/tailwindcss.json +411 -0
- package/data/inlineCompletions/typescript.json +12 -0
- package/data/linkedEditingRange/css.json +40 -0
- package/data/linkedEditingRange/tailwindcss.json +30 -0
- package/data/links/css.json +55 -0
- package/data/links/tailwindcss.json +40 -0
- package/data/manifest.json +62 -0
- package/data/onTypeFormatting/css.json +82 -0
- package/data/onTypeFormatting/tailwindcss.json +63 -0
- package/data/rangeSemanticTokens/css.json +125 -0
- package/data/rangeSemanticTokens/tailwindcss.json +95 -0
- package/data/references/css.json +65 -0
- package/data/references/tailwindcss.json +59 -0
- package/data/rename/css.json +91 -0
- package/data/rename/tailwindcss.json +58 -0
- package/data/selectionRange/css.json +55 -0
- package/data/selectionRange/tailwindcss.json +35 -0
- package/data/semanticTokens/css.json +107 -0
- package/data/semanticTokens/tailwindcss.json +161 -0
- package/data/signatureHelp/css.json +137 -0
- package/data/signatureHelp/tailwindcss.json +64 -0
- package/data/typeDefinition/css.json +53 -0
- package/data/typeDefinition/tailwindcss.json +47 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "tailwindcss",
|
|
3
|
+
"commands": [
|
|
4
|
+
{
|
|
5
|
+
"command": "tailwindcss.sortClasses",
|
|
6
|
+
"title": "Tailwind CSS: Sort Classes",
|
|
7
|
+
"description": "Sorts Tailwind utility classes in the selected class attribute following the recommended Headwind/Prettier-plugin-tailwindcss order.",
|
|
8
|
+
"category": "Tailwind CSS"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"command": "tailwindcss.showGeneratedCSS",
|
|
12
|
+
"title": "Tailwind CSS: Show Generated CSS",
|
|
13
|
+
"description": "Displays the compiled CSS output for the Tailwind utility classes under the cursor or in the selection.",
|
|
14
|
+
"category": "Tailwind CSS"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"command": "tailwindcss.openConfig",
|
|
18
|
+
"title": "Tailwind CSS: Open Configuration",
|
|
19
|
+
"description": "Opens the tailwind.config.js configuration file for the current workspace.",
|
|
20
|
+
"category": "Tailwind CSS"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"command": "tailwindcss.extractApply",
|
|
24
|
+
"title": "Tailwind CSS: Extract to @apply Component",
|
|
25
|
+
"description": "Extracts selected utility classes into a new CSS component using @apply directive.",
|
|
26
|
+
"category": "Tailwind CSS"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"command": "tailwindcss.showColorPalette",
|
|
30
|
+
"title": "Tailwind CSS: Show Color Palette",
|
|
31
|
+
"description": "Displays the full Tailwind color palette with hex values from the theme configuration.",
|
|
32
|
+
"category": "Tailwind CSS"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"command": "tailwindcss.convertToArbitrary",
|
|
36
|
+
"title": "Tailwind CSS: Convert to Arbitrary Value",
|
|
37
|
+
"description": "Converts a standard utility value to arbitrary bracket notation, e.g. p-4 to p-[1rem].",
|
|
38
|
+
"category": "Tailwind CSS"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"command": "tailwindcss.removeDuplicates",
|
|
42
|
+
"title": "Tailwind CSS: Remove Duplicate Classes",
|
|
43
|
+
"description": "Removes duplicate utility classes from the selected class attribute.",
|
|
44
|
+
"category": "Tailwind CSS"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"command": "tailwindcss.wrapResponsive",
|
|
48
|
+
"title": "Tailwind CSS: Wrap with Responsive Prefix",
|
|
49
|
+
"description": "Wraps selected utility classes with a chosen responsive breakpoint prefix (sm:, md:, lg:, xl:, 2xl:).",
|
|
50
|
+
"category": "Tailwind CSS"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "css",
|
|
3
|
+
"completions": [
|
|
4
|
+
{
|
|
5
|
+
"label": "display",
|
|
6
|
+
"kind": 14,
|
|
7
|
+
"detail": "CSS Property",
|
|
8
|
+
"documentation": { "value": "Specifies the display behavior of an element.\n\nValues: `block`, `inline`, `inline-block`, `flex`, `grid`, `none`, `contents`, `inline-flex`, `inline-grid`, `flow-root`, `table`, `list-item`." },
|
|
9
|
+
"insertText": "display: ${1|block,inline,inline-block,flex,grid,none,contents,inline-flex,inline-grid,flow-root|};",
|
|
10
|
+
"insertTextRules": 4,
|
|
11
|
+
"sortText": "00_display"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"label": "position",
|
|
15
|
+
"kind": 14,
|
|
16
|
+
"detail": "CSS Property",
|
|
17
|
+
"documentation": { "value": "Sets how an element is positioned in a document. Works with `top`, `right`, `bottom`, `left`, and `z-index`.\n\nValues: `static`, `relative`, `absolute`, `fixed`, `sticky`." },
|
|
18
|
+
"insertText": "position: ${1|static,relative,absolute,fixed,sticky|};",
|
|
19
|
+
"insertTextRules": 4,
|
|
20
|
+
"sortText": "00_position"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"label": "flex",
|
|
24
|
+
"kind": 14,
|
|
25
|
+
"detail": "CSS Shorthand Property",
|
|
26
|
+
"documentation": { "value": "Shorthand for `flex-grow`, `flex-shrink`, and `flex-basis`.\n\nSyntax: `flex: <grow> <shrink> <basis>;`\n\nExamples:\n- `flex: 1;` — grow to fill space\n- `flex: 0 0 auto;` — don't grow or shrink\n- `flex: 1 1 0%;` — distribute space evenly" },
|
|
27
|
+
"insertText": "flex: ${1:1} ${2:1} ${3:0%};",
|
|
28
|
+
"insertTextRules": 4,
|
|
29
|
+
"sortText": "00_flex"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"label": "grid-template-columns",
|
|
33
|
+
"kind": 14,
|
|
34
|
+
"detail": "CSS Grid Property",
|
|
35
|
+
"documentation": { "value": "Defines the columns of a grid container.\n\nExamples:\n- `grid-template-columns: 1fr 1fr 1fr;`\n- `grid-template-columns: repeat(3, 1fr);`\n- `grid-template-columns: minmax(200px, 1fr) 3fr;`\n- `grid-template-columns: auto 1fr auto;`" },
|
|
36
|
+
"insertText": "grid-template-columns: ${1:repeat(${2:3}, ${3:1fr})};",
|
|
37
|
+
"insertTextRules": 4,
|
|
38
|
+
"sortText": "00_grid-template-columns"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"label": "grid-template-rows",
|
|
42
|
+
"kind": 14,
|
|
43
|
+
"detail": "CSS Grid Property",
|
|
44
|
+
"documentation": { "value": "Defines the rows of a grid container.\n\nExamples:\n- `grid-template-rows: auto 1fr auto;`\n- `grid-template-rows: repeat(3, minmax(100px, auto));`" },
|
|
45
|
+
"insertText": "grid-template-rows: ${1:auto 1fr auto};",
|
|
46
|
+
"insertTextRules": 4,
|
|
47
|
+
"sortText": "00_grid-template-rows"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"label": "margin",
|
|
51
|
+
"kind": 14,
|
|
52
|
+
"detail": "CSS Shorthand Property",
|
|
53
|
+
"documentation": { "value": "Sets the margin area on all four sides.\n\nSyntax: `margin: <top> <right> <bottom> <left>;`\n\nShorthand patterns:\n- `margin: 10px;` — all sides\n- `margin: 10px 20px;` — vertical | horizontal\n- `margin: 10px 20px 30px;` — top | horizontal | bottom\n- `margin: 10px 20px 30px 40px;` — top | right | bottom | left\n- `margin: 0 auto;` — center horizontally" },
|
|
54
|
+
"insertText": "margin: ${1:0};",
|
|
55
|
+
"insertTextRules": 4,
|
|
56
|
+
"sortText": "00_margin"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"label": "padding",
|
|
60
|
+
"kind": 14,
|
|
61
|
+
"detail": "CSS Shorthand Property",
|
|
62
|
+
"documentation": { "value": "Sets the padding area on all four sides.\n\nSyntax: `padding: <top> <right> <bottom> <left>;`\n\nAccepts length, percentage, or `0`. Does not accept negative values or `auto`." },
|
|
63
|
+
"insertText": "padding: ${1:0};",
|
|
64
|
+
"insertTextRules": 4,
|
|
65
|
+
"sortText": "00_padding"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"label": "color",
|
|
69
|
+
"kind": 14,
|
|
70
|
+
"detail": "CSS Property",
|
|
71
|
+
"documentation": { "value": "Sets the foreground color of text and text decorations.\n\nAccepts: named colors, hex (`#fff`), `rgb()`, `rgba()`, `hsl()`, `hsla()`, `oklch()`, `lab()`, `lch()`, `color()`, `currentColor`, `inherit`, `transparent`." },
|
|
72
|
+
"insertText": "color: ${1:#000};",
|
|
73
|
+
"insertTextRules": 4,
|
|
74
|
+
"sortText": "00_color"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"label": "background",
|
|
78
|
+
"kind": 14,
|
|
79
|
+
"detail": "CSS Shorthand Property",
|
|
80
|
+
"documentation": { "value": "Shorthand for `background-color`, `background-image`, `background-position`, `background-size`, `background-repeat`, `background-origin`, `background-clip`, and `background-attachment`.\n\nExamples:\n- `background: #fff;`\n- `background: url('bg.png') no-repeat center/cover;`\n- `background: linear-gradient(to right, #000, #fff);`" },
|
|
81
|
+
"insertText": "background: ${1:#fff};",
|
|
82
|
+
"insertTextRules": 4,
|
|
83
|
+
"sortText": "00_background"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"label": "border",
|
|
87
|
+
"kind": 14,
|
|
88
|
+
"detail": "CSS Shorthand Property",
|
|
89
|
+
"documentation": { "value": "Shorthand for `border-width`, `border-style`, and `border-color`.\n\nSyntax: `border: <width> <style> <color>;`\n\nStyles: `none`, `solid`, `dashed`, `dotted`, `double`, `groove`, `ridge`, `inset`, `outset`." },
|
|
90
|
+
"insertText": "border: ${1:1px} ${2|solid,dashed,dotted,double,none|} ${3:#000};",
|
|
91
|
+
"insertTextRules": 4,
|
|
92
|
+
"sortText": "00_border"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"label": "font",
|
|
96
|
+
"kind": 14,
|
|
97
|
+
"detail": "CSS Shorthand Property",
|
|
98
|
+
"documentation": { "value": "Shorthand for `font-style`, `font-variant`, `font-weight`, `font-size`/`line-height`, and `font-family`.\n\nSyntax: `font: [style] [variant] [weight] size[/line-height] family;`\n\nExample: `font: italic bold 16px/1.5 'Helvetica Neue', sans-serif;`" },
|
|
99
|
+
"insertText": "font: ${1:16px}/${2:1.5} ${3:sans-serif};",
|
|
100
|
+
"insertTextRules": 4,
|
|
101
|
+
"sortText": "00_font"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"label": "animation",
|
|
105
|
+
"kind": 14,
|
|
106
|
+
"detail": "CSS Shorthand Property",
|
|
107
|
+
"documentation": { "value": "Shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`.\n\nSyntax: `animation: name duration timing-function delay iteration-count direction fill-mode;`\n\nExample: `animation: fadeIn 0.3s ease-in-out forwards;`" },
|
|
108
|
+
"insertText": "animation: ${1:name} ${2:0.3s} ${3|ease,ease-in,ease-out,ease-in-out,linear,cubic-bezier()|} ${4:forwards};",
|
|
109
|
+
"insertTextRules": 4,
|
|
110
|
+
"sortText": "00_animation"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"label": "transition",
|
|
114
|
+
"kind": 14,
|
|
115
|
+
"detail": "CSS Shorthand Property",
|
|
116
|
+
"documentation": { "value": "Shorthand for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`.\n\nSyntax: `transition: property duration timing-function delay;`\n\nExamples:\n- `transition: all 0.3s ease;`\n- `transition: opacity 0.2s, transform 0.3s ease-out;`" },
|
|
117
|
+
"insertText": "transition: ${1:all} ${2:0.3s} ${3|ease,ease-in,ease-out,ease-in-out,linear|};",
|
|
118
|
+
"insertTextRules": 4,
|
|
119
|
+
"sortText": "00_transition"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"label": "transform",
|
|
123
|
+
"kind": 14,
|
|
124
|
+
"detail": "CSS Property",
|
|
125
|
+
"documentation": { "value": "Applies a 2D or 3D transformation to an element.\n\nFunctions: `translate()`, `translateX()`, `translateY()`, `rotate()`, `scale()`, `scaleX()`, `scaleY()`, `skew()`, `skewX()`, `skewY()`, `matrix()`, `perspective()`, `translate3d()`, `rotate3d()`, `scale3d()`." },
|
|
126
|
+
"insertText": "transform: ${1|translate(),translateX(),translateY(),rotate(),scale(),skew(),matrix(),perspective()|};",
|
|
127
|
+
"insertTextRules": 4,
|
|
128
|
+
"sortText": "00_transform"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"label": "z-index",
|
|
132
|
+
"kind": 14,
|
|
133
|
+
"detail": "CSS Property",
|
|
134
|
+
"documentation": { "value": "Sets the z-order of a positioned element and its descendants. Only works on elements with `position` other than `static`.\n\nValues: integer (positive or negative), `auto`." },
|
|
135
|
+
"insertText": "z-index: ${1:1};",
|
|
136
|
+
"insertTextRules": 4,
|
|
137
|
+
"sortText": "00_z-index"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"label": "overflow",
|
|
141
|
+
"kind": 14,
|
|
142
|
+
"detail": "CSS Shorthand Property",
|
|
143
|
+
"documentation": { "value": "Sets what to do when content overflows the element's box.\n\nValues: `visible`, `hidden`, `clip`, `scroll`, `auto`.\n\nAlso: `overflow-x`, `overflow-y` for individual axis control." },
|
|
144
|
+
"insertText": "overflow: ${1|visible,hidden,clip,scroll,auto|};",
|
|
145
|
+
"insertTextRules": 4,
|
|
146
|
+
"sortText": "00_overflow"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"label": "cursor",
|
|
150
|
+
"kind": 14,
|
|
151
|
+
"detail": "CSS Property",
|
|
152
|
+
"documentation": { "value": "Sets the type of mouse cursor when hovering over an element.\n\nCommon values: `pointer`, `default`, `text`, `move`, `not-allowed`, `grab`, `grabbing`, `crosshair`, `wait`, `progress`, `help`, `zoom-in`, `zoom-out`, `none`, `url()` for custom cursors." },
|
|
153
|
+
"insertText": "cursor: ${1|pointer,default,text,move,not-allowed,grab,grabbing,crosshair,wait,help,none|};",
|
|
154
|
+
"insertTextRules": 4,
|
|
155
|
+
"sortText": "00_cursor"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"label": "opacity",
|
|
159
|
+
"kind": 14,
|
|
160
|
+
"detail": "CSS Property",
|
|
161
|
+
"documentation": { "value": "Sets the opacity level for an element. Affects the entire element including contents.\n\nRange: `0` (fully transparent) to `1` (fully opaque).\n\nNote: Unlike `visibility: hidden`, opacity `0` still occupies space and receives events." },
|
|
162
|
+
"insertText": "opacity: ${1:1};",
|
|
163
|
+
"insertTextRules": 4,
|
|
164
|
+
"sortText": "00_opacity"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"label": "box-sizing",
|
|
168
|
+
"kind": 14,
|
|
169
|
+
"detail": "CSS Property",
|
|
170
|
+
"documentation": { "value": "Defines how the width and height of an element are calculated.\n\n- `content-box` (default): Width/height only include content\n- `border-box`: Width/height include padding and border\n\nBest practice: `*, *::before, *::after { box-sizing: border-box; }`" },
|
|
171
|
+
"insertText": "box-sizing: ${1|border-box,content-box|};",
|
|
172
|
+
"insertTextRules": 4,
|
|
173
|
+
"sortText": "00_box-sizing"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"label": ":hover",
|
|
177
|
+
"kind": 14,
|
|
178
|
+
"detail": "CSS Pseudo-class",
|
|
179
|
+
"documentation": { "value": "Matches when the user interacts with an element via a pointing device (mouse hover).\n\nSpecificity: adds (0, 1, 0) to the selector.\n\nExample: `a:hover { color: blue; text-decoration: underline; }`" },
|
|
180
|
+
"insertText": ":hover {\n\t$0\n}",
|
|
181
|
+
"insertTextRules": 4,
|
|
182
|
+
"sortText": "01_hover"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"label": ":focus",
|
|
186
|
+
"kind": 14,
|
|
187
|
+
"detail": "CSS Pseudo-class",
|
|
188
|
+
"documentation": { "value": "Matches when an element has received focus (keyboard tab, click, or programmatic focus).\n\nBest practice: Always provide visible `:focus` styles for accessibility. Consider `:focus-visible` for keyboard-only focus." },
|
|
189
|
+
"insertText": ":focus {\n\t$0\n}",
|
|
190
|
+
"insertTextRules": 4,
|
|
191
|
+
"sortText": "01_focus"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"label": "::before",
|
|
195
|
+
"kind": 14,
|
|
196
|
+
"detail": "CSS Pseudo-element",
|
|
197
|
+
"documentation": { "value": "Creates a pseudo-element as the first child of the selected element. Requires `content` property.\n\nExample:\n```css\n.icon::before {\n content: '';\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n```" },
|
|
198
|
+
"insertText": "::before {\n\tcontent: '${1}';\n\t$0\n}",
|
|
199
|
+
"insertTextRules": 4,
|
|
200
|
+
"sortText": "01_before"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"label": "::after",
|
|
204
|
+
"kind": 14,
|
|
205
|
+
"detail": "CSS Pseudo-element",
|
|
206
|
+
"documentation": { "value": "Creates a pseudo-element as the last child of the selected element. Requires `content` property.\n\nCommonly used for decorative elements, clearfixes, and overlays." },
|
|
207
|
+
"insertText": "::after {\n\tcontent: '${1}';\n\t$0\n}",
|
|
208
|
+
"insertTextRules": 4,
|
|
209
|
+
"sortText": "01_after"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"label": ":nth-child()",
|
|
213
|
+
"kind": 14,
|
|
214
|
+
"detail": "CSS Pseudo-class",
|
|
215
|
+
"documentation": { "value": "Matches elements based on their position among siblings.\n\nSyntax: `:nth-child(An+B [of S]?)`\n\nExamples:\n- `:nth-child(2)` — second child\n- `:nth-child(odd)` / `:nth-child(2n+1)` — odd children\n- `:nth-child(even)` / `:nth-child(2n)` — even children\n- `:nth-child(3n)` — every third child\n- `:nth-child(-n+3)` — first three children" },
|
|
216
|
+
"insertText": ":nth-child(${1:2n+1})",
|
|
217
|
+
"insertTextRules": 4,
|
|
218
|
+
"sortText": "01_nth-child"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"label": ":first-child",
|
|
222
|
+
"kind": 14,
|
|
223
|
+
"detail": "CSS Pseudo-class",
|
|
224
|
+
"documentation": { "value": "Matches the first child element. Equivalent to `:nth-child(1)`.\n\nExample: `li:first-child { font-weight: bold; }`" },
|
|
225
|
+
"insertText": ":first-child",
|
|
226
|
+
"insertTextRules": 0,
|
|
227
|
+
"sortText": "01_first-child"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"label": "@media",
|
|
231
|
+
"kind": 14,
|
|
232
|
+
"detail": "CSS At-Rule",
|
|
233
|
+
"documentation": { "value": "Applies styles conditionally based on media queries.\n\nMedia types: `all`, `screen`, `print`\nMedia features: `width`, `height`, `aspect-ratio`, `orientation`, `resolution`, `prefers-color-scheme`, `prefers-reduced-motion`, `hover`, `pointer`.\n\nLogical operators: `and`, `not`, `only`, `,` (or)." },
|
|
234
|
+
"insertText": "@media ${1|(max-width: 768px),(min-width: 768px),(prefers-color-scheme: dark),(prefers-reduced-motion: reduce)|} {\n\t$0\n}",
|
|
235
|
+
"insertTextRules": 4,
|
|
236
|
+
"sortText": "02_media"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"label": "@keyframes",
|
|
240
|
+
"kind": 14,
|
|
241
|
+
"detail": "CSS At-Rule",
|
|
242
|
+
"documentation": { "value": "Defines the keyframes for an animation sequence.\n\nSyntax:\n```css\n@keyframes name {\n from { /* start state */ }\n to { /* end state */ }\n}\n```\nOr with percentage stops:\n```css\n@keyframes name {\n 0% { opacity: 0; }\n 50% { opacity: 0.5; }\n 100% { opacity: 1; }\n}\n```" },
|
|
243
|
+
"insertText": "@keyframes ${1:animationName} {\n\tfrom {\n\t\t${2:opacity: 0;}\n\t}\n\tto {\n\t\t${3:opacity: 1;}\n\t}\n}",
|
|
244
|
+
"insertTextRules": 4,
|
|
245
|
+
"sortText": "02_keyframes"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"label": "@import",
|
|
249
|
+
"kind": 14,
|
|
250
|
+
"detail": "CSS At-Rule",
|
|
251
|
+
"documentation": { "value": "Imports a stylesheet into the current stylesheet. Must appear before all other rules except `@charset` and `@layer`.\n\nSyntax:\n- `@import url('file.css');`\n- `@import url('print.css') print;`\n- `@import url('mobile.css') screen and (max-width: 768px);`\n- `@import 'file.css' layer(name);`" },
|
|
252
|
+
"insertText": "@import url('${1:file.css}');",
|
|
253
|
+
"insertTextRules": 4,
|
|
254
|
+
"sortText": "02_import"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"label": "@font-face",
|
|
258
|
+
"kind": 14,
|
|
259
|
+
"detail": "CSS At-Rule",
|
|
260
|
+
"documentation": { "value": "Defines a custom font to be used in the document.\n\nDescriptors: `font-family`, `src`, `font-weight`, `font-style`, `font-display`, `unicode-range`, `font-stretch`, `font-variant`, `font-feature-settings`.\n\n`font-display` values: `auto`, `block`, `swap`, `fallback`, `optional`." },
|
|
261
|
+
"insertText": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:font.woff2}') format('woff2'),\n\t url('${3:font.woff}') format('woff');\n\tfont-weight: ${4|normal,bold,100,200,300,400,500,600,700,800,900|};\n\tfont-style: ${5|normal,italic|};\n\tfont-display: ${6|swap,block,fallback,optional|};\n}",
|
|
262
|
+
"insertTextRules": 4,
|
|
263
|
+
"sortText": "02_font-face"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"label": "@supports",
|
|
267
|
+
"kind": 14,
|
|
268
|
+
"detail": "CSS At-Rule",
|
|
269
|
+
"documentation": { "value": "Feature query — applies styles only if the browser supports a given CSS feature.\n\nExamples:\n- `@supports (display: grid) { ... }`\n- `@supports not (gap: 1rem) { ... }`\n- `@supports (display: grid) and (gap: 1rem) { ... }`\n- `@supports selector(:has()) { ... }`" },
|
|
270
|
+
"insertText": "@supports (${1:display: grid}) {\n\t$0\n}",
|
|
271
|
+
"insertTextRules": 4,
|
|
272
|
+
"sortText": "02_supports"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"label": "@layer",
|
|
276
|
+
"kind": 14,
|
|
277
|
+
"detail": "CSS At-Rule (Cascade Layers)",
|
|
278
|
+
"documentation": { "value": "Declares cascade layers to control the order of specificity.\n\nSyntax:\n- `@layer name;` — declare layer order\n- `@layer name { ... }` — assign rules to layer\n- `@layer name1, name2, name3;` — define layer order\n- `@import url('lib.css') layer(lib);`\n\nLayers declared earlier have lower priority." },
|
|
279
|
+
"insertText": "@layer ${1:layerName} {\n\t$0\n}",
|
|
280
|
+
"insertTextRules": 4,
|
|
281
|
+
"sortText": "02_layer"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"label": "@container",
|
|
285
|
+
"kind": 14,
|
|
286
|
+
"detail": "CSS At-Rule (Container Queries)",
|
|
287
|
+
"documentation": { "value": "Applies styles based on the size of a containing element (not the viewport).\n\nRequires `container-type` on the parent:\n```css\n.parent { container-type: inline-size; }\n@container (min-width: 400px) { .child { ... } }\n```\nNamed containers: `container-name: sidebar;` + `@container sidebar (...) { }`" },
|
|
288
|
+
"insertText": "@container ${1:(min-width: ${2:400px})} {\n\t$0\n}",
|
|
289
|
+
"insertTextRules": 4,
|
|
290
|
+
"sortText": "02_container"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"label": "var()",
|
|
294
|
+
"kind": 14,
|
|
295
|
+
"detail": "CSS Function — Custom Properties",
|
|
296
|
+
"documentation": { "value": "Inserts the value of a CSS custom property.\n\nSyntax: `var(--property-name, fallback-value)`\n\nExample:\n```css\n:root { --primary: #3490dc; }\n.btn { color: var(--primary, blue); }\n```\nFallback can itself use `var()`: `var(--a, var(--b, #000))`." },
|
|
297
|
+
"insertText": "var(--${1:property}${2:, ${3:fallback}})",
|
|
298
|
+
"insertTextRules": 4,
|
|
299
|
+
"sortText": "00_var"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"label": "Flexbox Center",
|
|
303
|
+
"kind": 15,
|
|
304
|
+
"detail": "Snippet — Center element with Flexbox",
|
|
305
|
+
"documentation": { "value": "Centers child elements both horizontally and vertically using Flexbox.\n\nThis is the most common centering technique in modern CSS." },
|
|
306
|
+
"insertText": "display: flex;\njustify-content: center;\nalign-items: center;",
|
|
307
|
+
"insertTextRules": 4,
|
|
308
|
+
"sortText": "03_flexbox-center"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"label": "Grid Layout",
|
|
312
|
+
"kind": 15,
|
|
313
|
+
"detail": "Snippet — Responsive grid layout",
|
|
314
|
+
"documentation": { "value": "Creates a responsive grid layout using `auto-fill` and `minmax()` for fluid column sizing without media queries." },
|
|
315
|
+
"insertText": "display: grid;\ngrid-template-columns: repeat(auto-fill, minmax(${1:250px}, 1fr));\ngap: ${2:1rem};",
|
|
316
|
+
"insertTextRules": 4,
|
|
317
|
+
"sortText": "03_grid-layout"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"label": "Media Query Mobile",
|
|
321
|
+
"kind": 15,
|
|
322
|
+
"detail": "Snippet — Mobile-first breakpoint",
|
|
323
|
+
"documentation": { "value": "Mobile-first media query for tablet and above (768px). Common breakpoints:\n- 480px: Mobile landscape\n- 768px: Tablet\n- 1024px: Desktop\n- 1280px: Large desktop" },
|
|
324
|
+
"insertText": "@media (min-width: ${1|480px,768px,1024px,1280px|}) {\n\t$0\n}",
|
|
325
|
+
"insertTextRules": 4,
|
|
326
|
+
"sortText": "03_media-mobile"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"label": "Custom Property Definition",
|
|
330
|
+
"kind": 15,
|
|
331
|
+
"detail": "Snippet — CSS Custom Property on :root",
|
|
332
|
+
"documentation": { "value": "Defines a CSS custom property (CSS variable) on the `:root` pseudo-class for global usage.\n\nCustom properties are inherited and can be overridden in nested scopes." },
|
|
333
|
+
"insertText": ":root {\n\t--${1:property-name}: ${2:value};\n}",
|
|
334
|
+
"insertTextRules": 4,
|
|
335
|
+
"sortText": "03_custom-property"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"label": "Dark Mode Toggle",
|
|
339
|
+
"kind": 15,
|
|
340
|
+
"detail": "Snippet — prefers-color-scheme dark",
|
|
341
|
+
"documentation": { "value": "Uses the `prefers-color-scheme` media feature to apply dark mode styles based on user system preference." },
|
|
342
|
+
"insertText": "@media (prefers-color-scheme: dark) {\n\t:root {\n\t\t--bg: ${1:#1a1a2e};\n\t\t--text: ${2:#e0e0e0};\n\t}\n}",
|
|
343
|
+
"insertTextRules": 4,
|
|
344
|
+
"sortText": "03_dark-mode"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"label": "calc()",
|
|
348
|
+
"kind": 14,
|
|
349
|
+
"detail": "CSS Function",
|
|
350
|
+
"documentation": { "value": "Performs calculations to determine CSS property values. Supports `+`, `-`, `*`, `/` and can mix units.\n\nExamples:\n- `width: calc(100% - 2rem);`\n- `font-size: calc(1rem + 0.5vw);`\n- `height: calc(100vh - var(--header-height));`" },
|
|
351
|
+
"insertText": "calc(${1:100%} ${2|-,+|} ${3:2rem})",
|
|
352
|
+
"insertTextRules": 4,
|
|
353
|
+
"sortText": "00_calc"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"label": "clamp()",
|
|
357
|
+
"kind": 14,
|
|
358
|
+
"detail": "CSS Function",
|
|
359
|
+
"documentation": { "value": "Clamps a value between a minimum and maximum.\n\nSyntax: `clamp(MIN, VAL, MAX)`\n\nExample: `font-size: clamp(1rem, 2.5vw, 2rem);` — responsive font that never goes below 1rem or above 2rem." },
|
|
360
|
+
"insertText": "clamp(${1:1rem}, ${2:2.5vw}, ${3:2rem})",
|
|
361
|
+
"insertTextRules": 4,
|
|
362
|
+
"sortText": "00_clamp"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"label": "gap",
|
|
366
|
+
"kind": 14,
|
|
367
|
+
"detail": "CSS Property (Flexbox/Grid)",
|
|
368
|
+
"documentation": { "value": "Sets the gap (gutter) between rows and columns in flex and grid layouts.\n\nShorthand for `row-gap` and `column-gap`.\n\n- `gap: 1rem;` — uniform gap\n- `gap: 1rem 2rem;` — row gap | column gap" },
|
|
369
|
+
"insertText": "gap: ${1:1rem};",
|
|
370
|
+
"insertTextRules": 4,
|
|
371
|
+
"sortText": "00_gap"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"label": "Visually Hidden",
|
|
375
|
+
"kind": 15,
|
|
376
|
+
"detail": "Snippet — Screen reader only",
|
|
377
|
+
"documentation": { "value": "Hides an element visually while keeping it accessible to screen readers. Preferred over `display: none` for accessibility." },
|
|
378
|
+
"insertText": "position: absolute;\nwidth: 1px;\nheight: 1px;\npadding: 0;\nmargin: -1px;\noverflow: hidden;\nclip: rect(0, 0, 0, 0);\nwhite-space: nowrap;\nborder-width: 0;",
|
|
379
|
+
"insertTextRules": 4,
|
|
380
|
+
"sortText": "03_visually-hidden"
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
}
|
|
@@ -909,6 +909,33 @@
|
|
|
909
909
|
"insertText": "using ${1:resource} = ${2:expression};",
|
|
910
910
|
"insertTextRules": 4,
|
|
911
911
|
"sortText": "00_using"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"label": { "label": "react component", "detail": " function", "description": "JSX" },
|
|
915
|
+
"kind": 15,
|
|
916
|
+
"detail": "React function component",
|
|
917
|
+
"documentation": { "value": "Create a React function component with JSX.\n\n```jsx\nfunction Button({ label }) {\n return (\n <button className=\"btn\">{label}</button>\n );\n}\n\nexport default Button;\n```" },
|
|
918
|
+
"insertText": "function ${1:Component}({ ${2:props} }) {\n\treturn (\n\t\t<div className=\"${3}\">\n\t\t\t${4}\n\t\t</div>\n\t);\n}\n\nexport default ${1:Component};",
|
|
919
|
+
"insertTextRules": 4,
|
|
920
|
+
"sortText": "00_react_component"
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
"label": { "label": "jsx element", "detail": " snippet", "description": "JSX" },
|
|
924
|
+
"kind": 15,
|
|
925
|
+
"detail": "JSX element",
|
|
926
|
+
"documentation": { "value": "Insert a JSX element.\n\n```jsx\n<div className=\"container\">Content</div>\n```" },
|
|
927
|
+
"insertText": "<${1:div} className=\"${2}\">${3}</${1:div}>",
|
|
928
|
+
"insertTextRules": 4,
|
|
929
|
+
"sortText": "00_jsx_element"
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
"label": { "label": "useState", "detail": " hook", "description": "React" },
|
|
933
|
+
"kind": 15,
|
|
934
|
+
"detail": "React useState hook",
|
|
935
|
+
"documentation": { "value": "Declare component state with `useState`.\n\n```jsx\nconst [count, setCount] = useState(0);\n```" },
|
|
936
|
+
"insertText": "const [${1:state}, set${2:State}] = useState(${3:initial});",
|
|
937
|
+
"insertTextRules": 4,
|
|
938
|
+
"sortText": "00_react_useState"
|
|
912
939
|
}
|
|
913
940
|
]
|
|
914
941
|
}
|