Home

tailwind-ctp-intellisense @master - refs - log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
Tailwind intellisense + Catppuccin
tree log patch
add @​layer completions
Brad Cornes <bradlc41@gmail.com>
3 years ago
1 changed files, 57 additions(+), 1 deletions(-)
M packages/tailwindcss-language-service/src/completionProvider.ts -> packages/tailwindcss-language-service/src/completionProvider.ts
diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts
index 5ebb40d1b30107d33db52a380daea51a1ef19dd9..40f3dee6bfaca9e8263688f28a47d878594f2a51 100644
--- a/packages/tailwindcss-language-service/src/completionProvider.ts
+++ b/packages/tailwindcss-language-service/src/completionProvider.ts
@@ -562,6 +562,45 @@       })),
   }
 }
 
+function provideLayerDirectiveCompletions(
+  state: State,
+  document: TextDocument,
+  position: Position
+): CompletionList {
+  if (!isCssContext(state, document, position)) {
+    return null
+  }
+
+  let text = document.getText({
+    start: { line: position.line, character: 0 },
+    end: position,
+  })
+
+  const match = text.match(/^\s*@layer\s+(?<partial>[^\s]*)$/i)
+
+  if (match === null) return null
+
+  return {
+    isIncomplete: false,
+    items: ['base', 'components', 'utilities'].map((layer, index) => ({
+      label: layer,
+      kind: 21,
+      data: 'layer',
+      sortText: naturalExpand(index),
+      textEdit: {
+        newText: layer,
+        range: {
+          start: {
+            line: position.line,
+            character: position.character - match.groups.partial.length,
+          },
+          end: position,
+        },
+      },
+    })),
+  }
+}
+
 function provideScreenDirectiveCompletions(
   state: State,
   document: TextDocument,
@@ -678,6 +717,20 @@           'functions-and-directives/#apply'
         )})`,
       },
     },
+    ...(semver.gte(state.version, '1.8.0')
+      ? [
+          {
+            label: '@layer',
+            documentation: {
+              kind: 'markdown' as typeof MarkupKind.Markdown,
+              value: `Use the \`@layer\` directive to tell Tailwind which "bucket" a set of custom styles belong to. Valid layers are \`base\`, \`components\`, and \`utilities\`.\n\n[Tailwind CSS Documentation](${docsUrl(
+                state.version,
+                'functions-and-directives/#layer'
+              )})`,
+            },
+          },
+        ]
+      : []),
   ]
 
   return {
@@ -779,6 +832,7 @@     provideCssDirectiveCompletions(state, document, position) ||
     provideScreenDirectiveCompletions(state, document, position) ||
     provideVariantsDirectiveCompletions(state, document, position) ||
     provideTailwindDirectiveCompletions(state, document, position) ||
+    provideLayerDirectiveCompletions(state, document, position) ||
     (await provideCustomClassNameCompletions(state, document, position))
 
   if (result) return result
@@ -790,7 +844,9 @@ export async function resolveCompletionItem(
   state: State,
   item: CompletionItem
 ): Promise<CompletionItem> {
-  if (['helper', 'directive', 'variant', '@tailwind'].includes(item.data)) {
+  if (
+    ['helper', 'directive', 'variant', 'layer', '@tailwind'].includes(item.data)
+  ) {
     return item
   }