tailwind-typescript-plugin 1.4.1-beta.11 → 1.4.1-beta.13

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 (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +212 -143
  3. package/lib/core/interfaces.d.ts +17 -12
  4. package/lib/core/interfaces.d.ts.map +1 -1
  5. package/lib/core/types.d.ts +75 -0
  6. package/lib/core/types.d.ts.map +1 -1
  7. package/lib/infrastructure/TailwindValidator.css-vars.spec.js +1 -11
  8. package/lib/infrastructure/TailwindValidator.css-vars.spec.js.map +1 -1
  9. package/lib/infrastructure/TailwindValidator.d.ts +1 -3
  10. package/lib/infrastructure/TailwindValidator.d.ts.map +1 -1
  11. package/lib/infrastructure/TailwindValidator.js +6 -26
  12. package/lib/infrastructure/TailwindValidator.js.map +1 -1
  13. package/lib/infrastructure/TailwindValidator.spec.js +7 -17
  14. package/lib/infrastructure/TailwindValidator.spec.js.map +1 -1
  15. package/lib/plugin/TailwindTypescriptPlugin.d.ts +4 -1
  16. package/lib/plugin/TailwindTypescriptPlugin.d.ts.map +1 -1
  17. package/lib/plugin/TailwindTypescriptPlugin.js +49 -56
  18. package/lib/plugin/TailwindTypescriptPlugin.js.map +1 -1
  19. package/lib/services/CodeActionService.spec.js +1 -2
  20. package/lib/services/CodeActionService.spec.js.map +1 -1
  21. package/lib/services/CompletionService.d.ts +11 -3
  22. package/lib/services/CompletionService.d.ts.map +1 -1
  23. package/lib/services/CompletionService.js +97 -12
  24. package/lib/services/CompletionService.js.map +1 -1
  25. package/lib/services/CompletionService.spec.js +155 -12
  26. package/lib/services/CompletionService.spec.js.map +1 -1
  27. package/lib/services/ConflictClassDetection.spec.js +5 -5
  28. package/lib/services/ConflictClassDetection.spec.js.map +1 -1
  29. package/lib/services/DiagnosticService.d.ts +8 -8
  30. package/lib/services/DiagnosticService.d.ts.map +1 -1
  31. package/lib/services/DiagnosticService.js +29 -13
  32. package/lib/services/DiagnosticService.js.map +1 -1
  33. package/lib/services/DuplicateClassDetection.spec.js +20 -21
  34. package/lib/services/DuplicateClassDetection.spec.js.map +1 -1
  35. package/lib/services/PluginConfigService.d.ts +38 -15
  36. package/lib/services/PluginConfigService.d.ts.map +1 -1
  37. package/lib/services/PluginConfigService.js +182 -82
  38. package/lib/services/PluginConfigService.js.map +1 -1
  39. package/lib/services/ValidationService.d.ts +5 -4
  40. package/lib/services/ValidationService.d.ts.map +1 -1
  41. package/lib/services/ValidationService.js +39 -42
  42. package/lib/services/ValidationService.js.map +1 -1
  43. package/package.json +1 -1
@@ -15,9 +15,8 @@ exports.CompletionService = void 0;
15
15
  * - Handles space-separated class lists properly
16
16
  */
17
17
  class CompletionService {
18
- constructor(validator, logger, config) {
18
+ constructor(validator, config) {
19
19
  this.validator = validator;
20
- this.logger = logger;
21
20
  this.config = config;
22
21
  /** Cached sorted class list for faster completion generation */
23
22
  this.cachedClassList = null;
@@ -30,7 +29,6 @@ class CompletionService {
30
29
  if (config.classVarianceAuthorityEnabled) {
31
30
  this.utilityFunctionNames.add('cva');
32
31
  }
33
- this.logger.log(`[CompletionService] Initialized with utility functions: ${Array.from(this.utilityFunctionNames).join(', ')}`);
34
32
  }
35
33
  /**
36
34
  * Get completions at the given position
@@ -38,10 +36,8 @@ class CompletionService {
38
36
  getCompletionsAtPosition(typescript, sourceFile, position, existingCompletions) {
39
37
  const context = this.getCompletionContext(typescript, sourceFile, position);
40
38
  if (!context.isInClassNameContext) {
41
- this.logger.log('[CompletionService] Not in className context, returning original completions');
42
39
  return existingCompletions;
43
40
  }
44
- this.logger.log(`[CompletionService] In className context, prefix="${context.currentPrefix}", existingClasses=${context.existingClasses.size}`);
45
41
  const tailwindCompletions = this.generateCompletions(typescript, context);
46
42
  if (tailwindCompletions.length === 0) {
47
43
  return existingCompletions;
@@ -55,6 +51,102 @@ class CompletionService {
55
51
  };
56
52
  return completionInfo;
57
53
  }
54
+ /**
55
+ * Get quick info (hover) at position for Tailwind class names
56
+ * Shows the CSS generated by the class when hovering over it
57
+ */
58
+ getQuickInfoAtPosition(typescript, sourceFile, position) {
59
+ // Find the class name at the cursor position
60
+ const classInfo = this.findClassNameAtPosition(typescript, sourceFile, position);
61
+ if (!classInfo) {
62
+ return undefined;
63
+ }
64
+ const { className, start, length } = classInfo;
65
+ // Get the CSS for this class
66
+ const cssResults = this.validator.getCssForClasses([className]);
67
+ const css = cssResults[0];
68
+ if (!css) {
69
+ return undefined;
70
+ }
71
+ // Format the CSS with proper structure
72
+ const formattedCss = this.formatCssForDisplay(css);
73
+ // Extract just the declarations for the display (short summary)
74
+ const declarations = this.extractCssDeclarations(css);
75
+ // Check if this is a color class for the icon
76
+ const isColor = this.isColorClass(className);
77
+ return {
78
+ kind: typescript.ScriptElementKind.string,
79
+ kindModifiers: isColor ? 'color' : '',
80
+ textSpan: {
81
+ start,
82
+ length
83
+ },
84
+ displayParts: [{ kind: 'text', text: declarations }],
85
+ documentation: [
86
+ {
87
+ kind: 'text',
88
+ text: '```css\n' + formattedCss + '\n```'
89
+ }
90
+ ]
91
+ };
92
+ }
93
+ /**
94
+ * Find a Tailwind class name at the given position
95
+ * Returns the class name, its start position, and length if found
96
+ */
97
+ findClassNameAtPosition(typescript, sourceFile, position) {
98
+ // Find the node at the current position
99
+ let node = this.findNodeAtPosition(typescript, sourceFile, position);
100
+ if (!node) {
101
+ return undefined;
102
+ }
103
+ // If we found a JsxAttribute, look for its string literal initializer
104
+ if (typescript.isJsxAttribute(node)) {
105
+ const initializer = node.initializer;
106
+ if (initializer && typescript.isStringLiteral(initializer)) {
107
+ node = initializer;
108
+ }
109
+ }
110
+ // Check if we're in a string literal
111
+ if (!typescript.isStringLiteral(node) && !typescript.isNoSubstitutionTemplateLiteral(node)) {
112
+ return undefined;
113
+ }
114
+ // Check if this string is in a className context
115
+ if (!this.isClassNameContext(typescript, node)) {
116
+ return undefined;
117
+ }
118
+ // Get the string content and position info
119
+ const stringContent = node.text;
120
+ const stringStart = node.getStart(sourceFile) + 1; // +1 to skip the opening quote
121
+ const positionInString = position - stringStart;
122
+ // Handle cursor at or before string start
123
+ if (positionInString < 0 || positionInString > stringContent.length) {
124
+ return undefined;
125
+ }
126
+ // Find word boundaries around the cursor position
127
+ // Classes are separated by whitespace
128
+ let wordStart = positionInString;
129
+ let wordEnd = positionInString;
130
+ // Find the start of the word
131
+ while (wordStart > 0 && stringContent[wordStart - 1] !== ' ') {
132
+ wordStart--;
133
+ }
134
+ // Find the end of the word
135
+ while (wordEnd < stringContent.length && stringContent[wordEnd] !== ' ') {
136
+ wordEnd++;
137
+ }
138
+ // Extract the class name
139
+ const className = stringContent.substring(wordStart, wordEnd);
140
+ // Validate it's a Tailwind class
141
+ if (!className || !this.isTailwindClass(className)) {
142
+ return undefined;
143
+ }
144
+ return {
145
+ className,
146
+ start: stringStart + wordStart,
147
+ length: className.length
148
+ };
149
+ }
58
150
  /**
59
151
  * Get completion entry details for a specific completion item
60
152
  * Formats the documentation with markdown CSS code blocks for syntax highlighting
@@ -165,26 +257,21 @@ class CompletionService {
165
257
  // Find the node at the current position
166
258
  let node = this.findNodeAtPosition(typescript, sourceFile, position);
167
259
  if (!node) {
168
- this.logger.log(`[CompletionService] No node found at position ${position}`);
169
260
  return defaultContext;
170
261
  }
171
- this.logger.log(`[CompletionService] Found node kind: ${typescript.SyntaxKind[node.kind]} at position ${position}`);
172
262
  // If we found a JsxAttribute, look for its string literal initializer
173
263
  if (typescript.isJsxAttribute(node)) {
174
264
  const initializer = node.initializer;
175
265
  if (initializer && typescript.isStringLiteral(initializer)) {
176
266
  node = initializer;
177
- this.logger.log(`[CompletionService] Found string literal in JsxAttribute initializer`);
178
267
  }
179
268
  }
180
269
  // Check if we're in a string literal
181
270
  if (!typescript.isStringLiteral(node) && !typescript.isNoSubstitutionTemplateLiteral(node)) {
182
- this.logger.log(`[CompletionService] Node is not a string literal: ${typescript.SyntaxKind[node.kind]}`);
183
271
  return defaultContext;
184
272
  }
185
273
  // Check if this string is in a className context
186
274
  if (!this.isClassNameContext(typescript, node)) {
187
- this.logger.log(`[CompletionService] Node is not in className context`);
188
275
  return defaultContext;
189
276
  }
190
277
  // We're in a className context! Now extract the completion details
@@ -372,7 +459,6 @@ class CompletionService {
372
459
  }
373
460
  });
374
461
  }
375
- this.logger.log(`[CompletionService] Generated ${entries.length} completions for prefix "${prefix}"`);
376
462
  return entries;
377
463
  }
378
464
  /**
@@ -381,7 +467,6 @@ class CompletionService {
381
467
  getClassList() {
382
468
  if (this.cachedClassList === null) {
383
469
  this.cachedClassList = this.validator.getAllClasses().sort();
384
- this.logger.log(`[CompletionService] Cached ${this.cachedClassList.length} classes`);
385
470
  }
386
471
  return this.cachedClassList;
387
472
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CompletionService.js","sourceRoot":"","sources":["../../src/services/CompletionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompletionService.js","sourceRoot":"","sources":["../../src/services/CompletionService.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,6 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const ts = __importStar(require("typescript/lib/tsserverlibrary"));
37
37
  const TailwindValidator_1 = require("../infrastructure/TailwindValidator");
38
- const Logger_1 = require("../utils/Logger");
39
38
  const CompletionService_1 = require("./CompletionService");
40
39
  const defaultConfig = {
41
40
  utilityFunctions: ['clsx', 'cn', 'classnames', 'classNames', 'cx', 'twMerge'],
@@ -46,7 +45,7 @@ describe('CompletionService', () => {
46
45
  let validator;
47
46
  let completionService;
48
47
  beforeEach(() => {
49
- validator = new TailwindValidator_1.TailwindValidator('/fake/path.css', new Logger_1.NoOpLogger());
48
+ validator = new TailwindValidator_1.TailwindValidator('/fake/path.css');
50
49
  // Mock the validator methods
51
50
  jest
52
51
  .spyOn(validator, 'getAllClasses')
@@ -79,7 +78,7 @@ describe('CompletionService', () => {
79
78
  return null;
80
79
  });
81
80
  });
82
- completionService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), defaultConfig);
81
+ completionService = new CompletionService_1.CompletionService(validator, defaultConfig);
83
82
  });
84
83
  describe('getCompletionsAtPosition', () => {
85
84
  it('should return original completions when not in className context', () => {
@@ -342,7 +341,7 @@ describe('CompletionService', () => {
342
341
  tailwindVariantsEnabled: false,
343
342
  classVarianceAuthorityEnabled: false
344
343
  };
345
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
344
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
346
345
  const sourceCode = 'const x = myCustomClass("fl");';
347
346
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
348
347
  // Position after "fl"
@@ -370,7 +369,7 @@ describe('CompletionService', () => {
370
369
  tailwindVariantsEnabled: false,
371
370
  classVarianceAuthorityEnabled: false
372
371
  };
373
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
372
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
374
373
  const sourceCode = 'const button = tv({ base: "fl" });';
375
374
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
376
375
  // Position after "fl" inside the string
@@ -395,7 +394,7 @@ describe('CompletionService', () => {
395
394
  tailwindVariantsEnabled: false,
396
395
  classVarianceAuthorityEnabled: false
397
396
  };
398
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
397
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
399
398
  const sourceCode = 'const button = cva("fl");';
400
399
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
401
400
  // Position after "fl"
@@ -410,7 +409,7 @@ describe('CompletionService', () => {
410
409
  tailwindVariantsEnabled: false,
411
410
  classVarianceAuthorityEnabled: false
412
411
  };
413
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
412
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
414
413
  const sourceCode = 'const x = customStyles("fl");';
415
414
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
416
415
  const position = 26;
@@ -425,7 +424,7 @@ describe('CompletionService', () => {
425
424
  tailwindVariantsEnabled: false,
426
425
  classVarianceAuthorityEnabled: false
427
426
  };
428
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
427
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
429
428
  // Test simple string utility
430
429
  const sourceCode1 = 'const x = simpleUtil("fl");';
431
430
  const sourceFile1 = ts.createSourceFile('test.tsx', sourceCode1, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
@@ -500,7 +499,7 @@ describe('CompletionService', () => {
500
499
  tailwindVariantsEnabled: true,
501
500
  classVarianceAuthorityEnabled: true
502
501
  };
503
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
502
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
504
503
  // Test tv()
505
504
  const tvSource = 'const x = tv({ base: "fl" });';
506
505
  const tvFile = ts.createSourceFile('test.tsx', tvSource, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
@@ -655,7 +654,7 @@ describe('CompletionService', () => {
655
654
  tailwindVariantsEnabled: false,
656
655
  classVarianceAuthorityEnabled: false
657
656
  };
658
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
657
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
659
658
  const sourceCode = 'const x = utils.cn("fl");';
660
659
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
661
660
  const position = 22;
@@ -950,7 +949,7 @@ describe('CompletionService', () => {
950
949
  tailwindVariantsEnabled: false,
951
950
  classVarianceAuthorityEnabled: false
952
951
  };
953
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
952
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
954
953
  const sourceCode = 'const fn = () => { const x = "fl"; };';
955
954
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
956
955
  // Position inside string in arrow function (not a utility function context)
@@ -964,7 +963,7 @@ describe('CompletionService', () => {
964
963
  tailwindVariantsEnabled: false,
965
964
  classVarianceAuthorityEnabled: false
966
965
  };
967
- const customService = new CompletionService_1.CompletionService(validator, new Logger_1.NoOpLogger(), customConfig);
966
+ const customService = new CompletionService_1.CompletionService(validator, customConfig);
968
967
  const sourceCode = 'function fn() { const x = "fl"; }';
969
968
  const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
970
969
  // Position inside string in function (not a utility function context)
@@ -1035,5 +1034,149 @@ describe('CompletionService', () => {
1035
1034
  });
1036
1035
  });
1037
1036
  });
1037
+ describe('getQuickInfoAtPosition (hover)', () => {
1038
+ it('should return hover info for valid Tailwind class', () => {
1039
+ const sourceCode = '<div className="flex">Hello</div>';
1040
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1041
+ // Position on "flex"
1042
+ const position = 18;
1043
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1044
+ expect(result).toBeDefined();
1045
+ expect(result.displayParts).toBeDefined();
1046
+ expect(result.displayParts.length).toBeGreaterThan(0);
1047
+ expect(result.displayParts[0].text).toContain('display: flex');
1048
+ });
1049
+ it('should return correct textSpan for hovered class', () => {
1050
+ const sourceCode = '<div className="flex">Hello</div>';
1051
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1052
+ const position = 18;
1053
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1054
+ expect(result).toBeDefined();
1055
+ expect(result.textSpan).toEqual({
1056
+ start: 16, // Start of "flex"
1057
+ length: 4 // Length of "flex"
1058
+ });
1059
+ });
1060
+ it('should return documentation with CSS code block', () => {
1061
+ const sourceCode = '<div className="flex">Hello</div>';
1062
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1063
+ const position = 18;
1064
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1065
+ expect(result).toBeDefined();
1066
+ expect(result.documentation).toBeDefined();
1067
+ expect(result.documentation.length).toBeGreaterThan(0);
1068
+ const docText = result.documentation[0].text;
1069
+ expect(docText).toContain('```css');
1070
+ expect(docText).toContain('.flex');
1071
+ expect(docText).toContain('display: flex');
1072
+ });
1073
+ it('should return undefined for non-Tailwind class', () => {
1074
+ const sourceCode = '<div className="my-custom-class">Hello</div>';
1075
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1076
+ const position = 20;
1077
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1078
+ expect(result).toBeUndefined();
1079
+ });
1080
+ it('should return undefined when not in className context', () => {
1081
+ const sourceCode = 'const x = "flex";';
1082
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1083
+ const position = 13;
1084
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1085
+ expect(result).toBeUndefined();
1086
+ });
1087
+ it('should set color kindModifier for color classes', () => {
1088
+ jest
1089
+ .spyOn(validator, 'getCssForClasses')
1090
+ .mockReturnValue(['.bg-red-500 { background-color: rgb(239 68 68); }']);
1091
+ const sourceCode = '<div className="bg-red-500">Hello</div>';
1092
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1093
+ const position = 20;
1094
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1095
+ expect(result).toBeDefined();
1096
+ expect(result.kindModifiers).toBe('color');
1097
+ });
1098
+ it('should return hover info for class in utility function', () => {
1099
+ const sourceCode = 'const x = cn("flex items-center");';
1100
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1101
+ // Position on "flex"
1102
+ const position = 16;
1103
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1104
+ expect(result).toBeDefined();
1105
+ expect(result.displayParts[0].text).toContain('display: flex');
1106
+ });
1107
+ it('should return hover info for second class in list', () => {
1108
+ jest.spyOn(validator, 'getCssForClasses').mockImplementation((classNames) => {
1109
+ return classNames.map(name => {
1110
+ if (name === 'flex')
1111
+ return '.flex { display: flex; }';
1112
+ if (name === 'items-center')
1113
+ return '.items-center { align-items: center; }';
1114
+ return null;
1115
+ });
1116
+ });
1117
+ const sourceCode = '<div className="flex items-center">Hello</div>';
1118
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1119
+ // Position on "items-center"
1120
+ const position = 25;
1121
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1122
+ expect(result).toBeDefined();
1123
+ expect(result.displayParts[0].text).toContain('align-items: center');
1124
+ expect(result.textSpan).toEqual({
1125
+ start: 21, // Start of "items-center"
1126
+ length: 12 // Length of "items-center"
1127
+ });
1128
+ });
1129
+ it('should return undefined for position on whitespace', () => {
1130
+ const sourceCode = '<div className="flex items-center">Hello</div>';
1131
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1132
+ // Position on the space between classes
1133
+ const position = 21;
1134
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1135
+ // Should return undefined because we're on whitespace, not a class
1136
+ expect(result).toBeUndefined();
1137
+ });
1138
+ it('should return hover info for class at start of string', () => {
1139
+ const sourceCode = '<div className="flex">Hello</div>';
1140
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1141
+ // Position at the very start of "flex"
1142
+ const position = 16;
1143
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1144
+ expect(result).toBeDefined();
1145
+ expect(result.displayParts[0].text).toContain('display: flex');
1146
+ });
1147
+ it('should return hover info for class at end of word', () => {
1148
+ const sourceCode = '<div className="flex">Hello</div>';
1149
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1150
+ // Position at the end of "flex" (just before closing quote)
1151
+ const position = 20;
1152
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1153
+ expect(result).toBeDefined();
1154
+ expect(result.displayParts[0].text).toContain('display: flex');
1155
+ });
1156
+ it('should return undefined when position is outside string', () => {
1157
+ const sourceCode = '<div className="flex">Hello</div>';
1158
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1159
+ // Position on "className" attribute name
1160
+ const position = 10;
1161
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1162
+ expect(result).toBeUndefined();
1163
+ });
1164
+ it('should return hover info in tv() variants', () => {
1165
+ const sourceCode = `const button = tv({
1166
+ base: "flex",
1167
+ variants: {
1168
+ color: {
1169
+ primary: "bg-blue-500"
1170
+ }
1171
+ }
1172
+ });`;
1173
+ const sourceFile = ts.createSourceFile('test.tsx', sourceCode, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
1174
+ // Position on "flex" in base
1175
+ const position = sourceCode.indexOf('"flex"') + 2;
1176
+ const result = completionService.getQuickInfoAtPosition(ts, sourceFile, position);
1177
+ expect(result).toBeDefined();
1178
+ expect(result.displayParts[0].text).toContain('display: flex');
1179
+ });
1180
+ });
1038
1181
  });
1039
1182
  //# sourceMappingURL=CompletionService.spec.js.map