@atlaskit/eslint-plugin-design-system 13.15.0 → 13.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +65 -63
  3. package/dist/cjs/presets/all-flat.codegen.js +3 -1
  4. package/dist/cjs/presets/all.codegen.js +3 -1
  5. package/dist/cjs/presets/recommended-flat.codegen.js +2 -1
  6. package/dist/cjs/presets/recommended.codegen.js +2 -1
  7. package/dist/cjs/rules/ensure-proper-xcss-usage/index.js +157 -0
  8. package/dist/cjs/rules/index.codegen.js +5 -1
  9. package/dist/cjs/rules/no-utility-icons/checks.js +233 -0
  10. package/dist/cjs/rules/no-utility-icons/index.js +40 -0
  11. package/dist/es2019/presets/all-flat.codegen.js +3 -1
  12. package/dist/es2019/presets/all.codegen.js +3 -1
  13. package/dist/es2019/presets/recommended-flat.codegen.js +2 -1
  14. package/dist/es2019/presets/recommended.codegen.js +2 -1
  15. package/dist/es2019/rules/ensure-proper-xcss-usage/index.js +149 -0
  16. package/dist/es2019/rules/index.codegen.js +5 -1
  17. package/dist/es2019/rules/no-utility-icons/checks.js +164 -0
  18. package/dist/es2019/rules/no-utility-icons/index.js +35 -0
  19. package/dist/esm/presets/all-flat.codegen.js +3 -1
  20. package/dist/esm/presets/all.codegen.js +3 -1
  21. package/dist/esm/presets/recommended-flat.codegen.js +2 -1
  22. package/dist/esm/presets/recommended.codegen.js +2 -1
  23. package/dist/esm/rules/ensure-proper-xcss-usage/index.js +151 -0
  24. package/dist/esm/rules/index.codegen.js +5 -1
  25. package/dist/esm/rules/no-utility-icons/checks.js +226 -0
  26. package/dist/esm/rules/no-utility-icons/index.js +34 -0
  27. package/dist/types/index.codegen.d.ts +14 -0
  28. package/dist/types/presets/all-flat.codegen.d.ts +2 -0
  29. package/dist/types/presets/all.codegen.d.ts +2 -0
  30. package/dist/types/presets/recommended-flat.codegen.d.ts +1 -0
  31. package/dist/types/presets/recommended.codegen.d.ts +1 -0
  32. package/dist/types/rules/ensure-proper-xcss-usage/index.d.ts +3 -0
  33. package/dist/types/rules/index.codegen.d.ts +2 -0
  34. package/dist/types/rules/no-utility-icons/checks.d.ts +10 -0
  35. package/dist/types/rules/no-utility-icons/index.d.ts +3 -0
  36. package/dist/types-ts4.5/index.codegen.d.ts +14 -0
  37. package/dist/types-ts4.5/presets/all-flat.codegen.d.ts +2 -0
  38. package/dist/types-ts4.5/presets/all.codegen.d.ts +2 -0
  39. package/dist/types-ts4.5/presets/recommended-flat.codegen.d.ts +1 -0
  40. package/dist/types-ts4.5/presets/recommended.codegen.d.ts +1 -0
  41. package/dist/types-ts4.5/rules/ensure-proper-xcss-usage/index.d.ts +3 -0
  42. package/dist/types-ts4.5/rules/index.codegen.d.ts +2 -0
  43. package/dist/types-ts4.5/rules/no-utility-icons/checks.d.ts +10 -0
  44. package/dist/types-ts4.5/rules/no-utility-icons/index.d.ts +3 -0
  45. package/package.json +1 -1
@@ -0,0 +1,226 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ import { isNodeOfType } from 'eslint-codemod-utils';
6
+ var specialCases = {
7
+ '@atlaskit/icon/utility/cross': '@atlaskit/icon/core/close',
8
+ '@atlaskit/icon/utility/migration/cross--editor-close': '@atlaskit/icon/core/migration/close--editor-close'
9
+ };
10
+ var iconPropsinNewButton = ['icon', 'iconBefore', 'iconAfter'];
11
+ export var createChecks = function createChecks(context) {
12
+ var importStatementsUtility = {};
13
+ var importStatementsCore = {};
14
+ var newButtonImports = new Set();
15
+ var errors = {};
16
+ var checkImportDeclarations = function checkImportDeclarations(node) {
17
+ var moduleSource = node.source.value;
18
+ if (typeof moduleSource !== 'string') {
19
+ return;
20
+ }
21
+ if (moduleSource.startsWith('@atlaskit/icon/utility/')) {
22
+ var _iterator = _createForOfIteratorHelper(node.specifiers),
23
+ _step;
24
+ try {
25
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
26
+ var specifier = _step.value;
27
+ if (specifier.type === 'ImportDefaultSpecifier') {
28
+ importStatementsUtility[specifier.local.name] = node;
29
+ }
30
+ }
31
+ } catch (err) {
32
+ _iterator.e(err);
33
+ } finally {
34
+ _iterator.f();
35
+ }
36
+ } else if (moduleSource.startsWith('@atlaskit/icon/core/')) {
37
+ var _iterator2 = _createForOfIteratorHelper(node.specifiers),
38
+ _step2;
39
+ try {
40
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
41
+ var _specifier = _step2.value;
42
+ if (_specifier.type === 'ImportDefaultSpecifier') {
43
+ importStatementsCore[moduleSource] = {
44
+ node: node,
45
+ localName: _specifier.local.name
46
+ };
47
+ }
48
+ }
49
+ } catch (err) {
50
+ _iterator2.e(err);
51
+ } finally {
52
+ _iterator2.f();
53
+ }
54
+ } else if (moduleSource.startsWith('@atlaskit/button/')) {
55
+ var _iterator3 = _createForOfIteratorHelper(node.specifiers),
56
+ _step3;
57
+ try {
58
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
59
+ var _specifier2 = _step3.value;
60
+ newButtonImports.add(_specifier2.local.name);
61
+ }
62
+ } catch (err) {
63
+ _iterator3.e(err);
64
+ } finally {
65
+ _iterator3.f();
66
+ }
67
+ }
68
+ };
69
+ var checkJSXElement = function checkJSXElement(node) {
70
+ if (!(isNodeOfType(node, 'JSXElement') && isNodeOfType(node.openingElement.name, 'JSXIdentifier') && importStatementsUtility.hasOwnProperty(node.openingElement.name.name) && typeof importStatementsUtility[node.openingElement.name.name].source.value === 'string')) {
71
+ return;
72
+ }
73
+ if (!errors.hasOwnProperty(node.openingElement.name.name)) {
74
+ errors[node.openingElement.name.name] = [];
75
+ }
76
+ errors[node.openingElement.name.name].push({
77
+ node: node,
78
+ messageId: 'noUtilityIconsJSXElement',
79
+ localName: node.openingElement.name.name,
80
+ fixable: true,
81
+ inNewButton: false
82
+ });
83
+ };
84
+
85
+ // Cases: As Props, In Function Calls, In Arrays, In Maps, In Exports
86
+ var checkIconReference = function checkIconReference(node) {
87
+ //if this is an import statement then exit early
88
+ if (node.parent && (isNodeOfType(node.parent, 'ImportSpecifier') || isNodeOfType(node.parent, 'ImportDefaultSpecifier'))) {
89
+ return;
90
+ }
91
+
92
+ //check the reference to see if it's a utility icon, if not exit early
93
+ if (!importStatementsUtility.hasOwnProperty(node.name)) {
94
+ return;
95
+ }
96
+
97
+ // if it is in new Button then we can fix it
98
+ if (node.parent && node.parent.parent && node.parent.parent.parent && isNodeOfType(node.parent, 'JSXExpressionContainer') && isNodeOfType(node.parent.parent, 'JSXAttribute') && isNodeOfType(node.parent.parent.name, 'JSXIdentifier') && iconPropsinNewButton.includes(node.parent.parent.name.name) && isNodeOfType(node.parent.parent.parent, 'JSXOpeningElement') && isNodeOfType(node.parent.parent.parent.name, 'JSXIdentifier') && newButtonImports.has(node.parent.parent.parent.name.name)) {
99
+ // if it is in new Button then we can fix it
100
+ if (!errors.hasOwnProperty(node.name)) {
101
+ errors[node.name] = [];
102
+ }
103
+ errors[node.name].push({
104
+ node: node,
105
+ messageId: 'noUtilityIconsReference',
106
+ localName: node.name,
107
+ fixable: true,
108
+ inNewButton: true
109
+ });
110
+ return;
111
+ }
112
+
113
+ // manually error
114
+ if (!errors.hasOwnProperty(node.name)) {
115
+ errors[node.name] = [];
116
+ }
117
+ errors[node.name].push({
118
+ node: node,
119
+ messageId: 'noUtilityIconsReference',
120
+ localName: node.name,
121
+ fixable: false,
122
+ inNewButton: false
123
+ });
124
+ };
125
+
126
+ /**
127
+ * Throws the relevant errors in the correct order.
128
+ */
129
+ var throwErrors = function throwErrors() {
130
+ var _loop = function _loop() {
131
+ var utilityIcon = _Object$keys[_i];
132
+ var allFixable = errors[utilityIcon].every(function (x) {
133
+ return x.fixable;
134
+ }); // Check if ALL errors for a giving import are fixable
135
+ var originalImportNode = importStatementsUtility[utilityIcon];
136
+ var oldImportName = importStatementsUtility[utilityIcon].source.value;
137
+ var newImportName = specialCases.hasOwnProperty(oldImportName) ? specialCases[oldImportName] : oldImportName.replace('@atlaskit/icon/utility/', '@atlaskit/icon/core/');
138
+ var existingImport = importStatementsCore.hasOwnProperty(newImportName) ? importStatementsCore[newImportName].localName : null;
139
+ var replacementImportName = existingImport ? existingImport : allFixable ? utilityIcon : "".concat(utilityIcon, "Core");
140
+ var importFixAdded = false;
141
+ var _iterator4 = _createForOfIteratorHelper(errors[utilityIcon].entries()),
142
+ _step4;
143
+ try {
144
+ var _loop2 = function _loop2() {
145
+ var _step4$value = _slicedToArray(_step4.value, 2),
146
+ index = _step4$value[0],
147
+ error = _step4$value[1];
148
+ if (error.fixable) {
149
+ context.report({
150
+ node: error.node,
151
+ messageId: error.messageId,
152
+ fix: function fix(fixer) {
153
+ var fixes = [];
154
+
155
+ // Add a new import statement if it doesn't already exist
156
+ if (!existingImport && !importFixAdded) {
157
+ importFixAdded = true;
158
+ fixes.push(fixer.insertTextBeforeRange([0, 0], "import ".concat(replacementImportName, " from '").concat(newImportName, "';\n")));
159
+ }
160
+
161
+ // Handle JSX elements differently if they are in a "new Button"
162
+ if (error.inNewButton) {
163
+ // Replace the icon with a function that wraps it with iconProps and size="small"
164
+ var wrappedIcon = "(iconProps) => <".concat(replacementImportName, " {...iconProps} size=\"small\" />");
165
+ fixes.push(fixer.replaceText(error.node, wrappedIcon));
166
+ } else if (isNodeOfType(error.node, 'JSXElement') && isNodeOfType(error.node.openingElement.name, 'JSXIdentifier')) {
167
+ // Replace the JSX element's closing tag with size="small"
168
+ var newOpeningElementText = context.sourceCode.getText(error.node.openingElement).replace(/\s*\/\s*>$/, " size=\"small\"/>").replace(new RegExp('<\s*' + error.node.openingElement.name.name), "<".concat(replacementImportName));
169
+ fixes.push(fixer.replaceText(error.node.openingElement, newOpeningElementText));
170
+ }
171
+
172
+ // Handle the first fixable error for import removal if all fixable for this import
173
+ if (index === 0 && allFixable) {
174
+ fixes.push(fixer.remove(originalImportNode));
175
+ }
176
+ return fixes;
177
+ }
178
+ });
179
+ } else {
180
+ // Report non-fixable errors
181
+ context.report({
182
+ node: error.node,
183
+ messageId: error.messageId
184
+ });
185
+ }
186
+ };
187
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
188
+ _loop2();
189
+ }
190
+ } catch (err) {
191
+ _iterator4.e(err);
192
+ } finally {
193
+ _iterator4.f();
194
+ }
195
+ };
196
+ for (var _i = 0, _Object$keys = Object.keys(errors); _i < _Object$keys.length; _i++) {
197
+ _loop();
198
+ }
199
+
200
+ // If other utility icons are imported but there were no errors for them - (this should only be unused imports but good to have as a backup), report them
201
+ var otherUtilityImportsWithoutErrors = Object.keys(importStatementsUtility).filter(function (utilityIcon) {
202
+ return !errors.hasOwnProperty(utilityIcon);
203
+ });
204
+ var _iterator5 = _createForOfIteratorHelper(otherUtilityImportsWithoutErrors),
205
+ _step5;
206
+ try {
207
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
208
+ var utilityIcon = _step5.value;
209
+ context.report({
210
+ node: importStatementsUtility[utilityIcon],
211
+ messageId: 'noUtilityIconsImport'
212
+ });
213
+ }
214
+ } catch (err) {
215
+ _iterator5.e(err);
216
+ } finally {
217
+ _iterator5.f();
218
+ }
219
+ };
220
+ return {
221
+ checkImportDeclarations: checkImportDeclarations,
222
+ checkJSXElement: checkJSXElement,
223
+ checkIconReference: checkIconReference,
224
+ throwErrors: throwErrors
225
+ };
226
+ };
@@ -0,0 +1,34 @@
1
+ import { createLintRule } from '../utils/create-rule';
2
+ import { createChecks } from './checks';
3
+ var rule = createLintRule({
4
+ meta: {
5
+ name: 'no-utility-icons',
6
+ fixable: 'code',
7
+ hasSuggestions: true,
8
+ type: 'problem',
9
+ docs: {
10
+ description: 'Disallow use of deprecated utility icons, in favor of core icons with `size="small"`.',
11
+ recommended: true,
12
+ severity: 'warn'
13
+ },
14
+ messages: {
15
+ noUtilityIconsJSXElement: "Utility icons are deprecated. Please use core icons instead with the size prop set to small.",
16
+ noUtilityIconsImport: "Utility icons are deprecated. Please do not import them, use core icons instead.",
17
+ noUtilityIconsReference: "Utility icons are deprecated. To replace them, please use core icons with the size prop set to small instead."
18
+ }
19
+ },
20
+ create: function create(context) {
21
+ var _createChecks = createChecks(context),
22
+ checkImportDeclarations = _createChecks.checkImportDeclarations,
23
+ checkJSXElement = _createChecks.checkJSXElement,
24
+ checkIconReference = _createChecks.checkIconReference,
25
+ throwErrors = _createChecks.throwErrors;
26
+ return {
27
+ ImportDeclaration: checkImportDeclarations,
28
+ JSXElement: checkJSXElement,
29
+ Identifier: checkIconReference,
30
+ 'Program:exit': throwErrors
31
+ };
32
+ }
33
+ });
34
+ export default rule;
@@ -19,6 +19,7 @@ export declare const plugin: {
19
19
  'ensure-design-token-usage': import("eslint").Rule.RuleModule;
20
20
  'ensure-design-token-usage/preview': import("eslint").Rule.RuleModule;
21
21
  'ensure-icon-color': import("eslint").Rule.RuleModule;
22
+ 'ensure-proper-xcss-usage': import("eslint").Rule.RuleModule;
22
23
  'icon-label': import("eslint").Rule.RuleModule;
23
24
  'no-banned-imports': import("eslint").Rule.RuleModule;
24
25
  'no-boolean-autofocus-on-modal-dialog': import("eslint").Rule.RuleModule;
@@ -55,6 +56,7 @@ export declare const plugin: {
55
56
  'no-unsafe-design-token-usage': import("eslint").Rule.RuleModule;
56
57
  'no-unsafe-style-overrides': import("eslint").Rule.RuleModule;
57
58
  'no-unsupported-drag-and-drop-libraries': import("eslint").Rule.RuleModule;
59
+ 'no-utility-icons': import("eslint").Rule.RuleModule;
58
60
  'prefer-primitives': import("eslint").Rule.RuleModule;
59
61
  'use-button-group-label': import("eslint").Rule.RuleModule;
60
62
  'use-cx-function-in-xcss': import("eslint").Rule.RuleModule;
@@ -85,6 +87,7 @@ export declare const plugin: {
85
87
  '@atlaskit/design-system/ensure-design-token-usage': "error";
86
88
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
87
89
  '@atlaskit/design-system/ensure-icon-color': "error";
90
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
88
91
  '@atlaskit/design-system/icon-label': "warn";
89
92
  '@atlaskit/design-system/no-banned-imports': "error";
90
93
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -120,6 +123,7 @@ export declare const plugin: {
120
123
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
121
124
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
122
125
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
126
+ '@atlaskit/design-system/no-utility-icons': "warn";
123
127
  '@atlaskit/design-system/prefer-primitives': "warn";
124
128
  '@atlaskit/design-system/use-button-group-label': "warn";
125
129
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -152,6 +156,7 @@ export declare const plugin: {
152
156
  '@atlaskit/design-system/ensure-design-token-usage': "error";
153
157
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
154
158
  '@atlaskit/design-system/ensure-icon-color': "error";
159
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
155
160
  '@atlaskit/design-system/icon-label': "warn";
156
161
  '@atlaskit/design-system/no-banned-imports': "error";
157
162
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -187,6 +192,7 @@ export declare const plugin: {
187
192
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
188
193
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
189
194
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
195
+ '@atlaskit/design-system/no-utility-icons': "warn";
190
196
  '@atlaskit/design-system/prefer-primitives': "warn";
191
197
  '@atlaskit/design-system/use-button-group-label': "warn";
192
198
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -241,6 +247,7 @@ export declare const plugin: {
241
247
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
242
248
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
243
249
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
250
+ '@atlaskit/design-system/no-utility-icons': "warn";
244
251
  '@atlaskit/design-system/use-button-group-label': "warn";
245
252
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
246
253
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -291,6 +298,7 @@ export declare const plugin: {
291
298
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
292
299
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
293
300
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
301
+ '@atlaskit/design-system/no-utility-icons': "warn";
294
302
  '@atlaskit/design-system/use-button-group-label': "warn";
295
303
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
296
304
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -318,6 +326,7 @@ declare const configs: {
318
326
  '@atlaskit/design-system/ensure-design-token-usage': "error";
319
327
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
320
328
  '@atlaskit/design-system/ensure-icon-color': "error";
329
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
321
330
  '@atlaskit/design-system/icon-label': "warn";
322
331
  '@atlaskit/design-system/no-banned-imports': "error";
323
332
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -353,6 +362,7 @@ declare const configs: {
353
362
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
354
363
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
355
364
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
365
+ '@atlaskit/design-system/no-utility-icons': "warn";
356
366
  '@atlaskit/design-system/prefer-primitives': "warn";
357
367
  '@atlaskit/design-system/use-button-group-label': "warn";
358
368
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -385,6 +395,7 @@ declare const configs: {
385
395
  '@atlaskit/design-system/ensure-design-token-usage': "error";
386
396
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
387
397
  '@atlaskit/design-system/ensure-icon-color': "error";
398
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
388
399
  '@atlaskit/design-system/icon-label': "warn";
389
400
  '@atlaskit/design-system/no-banned-imports': "error";
390
401
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -420,6 +431,7 @@ declare const configs: {
420
431
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
421
432
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
422
433
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
434
+ '@atlaskit/design-system/no-utility-icons': "warn";
423
435
  '@atlaskit/design-system/prefer-primitives': "warn";
424
436
  '@atlaskit/design-system/use-button-group-label': "warn";
425
437
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -474,6 +486,7 @@ declare const configs: {
474
486
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
475
487
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
476
488
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
489
+ '@atlaskit/design-system/no-utility-icons': "warn";
477
490
  '@atlaskit/design-system/use-button-group-label': "warn";
478
491
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
479
492
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -524,6 +537,7 @@ declare const configs: {
524
537
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
525
538
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
526
539
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
540
+ '@atlaskit/design-system/no-utility-icons': "warn";
527
541
  '@atlaskit/design-system/use-button-group-label': "warn";
528
542
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
529
543
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  '@atlaskit/design-system/ensure-design-token-usage': "error";
6
6
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
7
7
  '@atlaskit/design-system/ensure-icon-color': "error";
8
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
8
9
  '@atlaskit/design-system/icon-label': "warn";
9
10
  '@atlaskit/design-system/no-banned-imports': "error";
10
11
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -40,6 +41,7 @@ declare const _default: {
40
41
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
41
42
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
42
43
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
44
+ '@atlaskit/design-system/no-utility-icons': "warn";
43
45
  '@atlaskit/design-system/prefer-primitives': "warn";
44
46
  '@atlaskit/design-system/use-button-group-label': "warn";
45
47
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  '@atlaskit/design-system/ensure-design-token-usage': "error";
6
6
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
7
7
  '@atlaskit/design-system/ensure-icon-color': "error";
8
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
8
9
  '@atlaskit/design-system/icon-label': "warn";
9
10
  '@atlaskit/design-system/no-banned-imports': "error";
10
11
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -40,6 +41,7 @@ declare const _default: {
40
41
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
41
42
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
42
43
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
44
+ '@atlaskit/design-system/no-utility-icons': "warn";
43
45
  '@atlaskit/design-system/prefer-primitives': "warn";
44
46
  '@atlaskit/design-system/use-button-group-label': "warn";
45
47
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -29,6 +29,7 @@ declare const _default: {
29
29
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
30
30
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
31
31
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
32
+ '@atlaskit/design-system/no-utility-icons': "warn";
32
33
  '@atlaskit/design-system/use-button-group-label': "warn";
33
34
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
34
35
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -29,6 +29,7 @@ declare const _default: {
29
29
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
30
30
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
31
31
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
32
+ '@atlaskit/design-system/no-utility-icons': "warn";
32
33
  '@atlaskit/design-system/use-button-group-label': "warn";
33
34
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
34
35
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
@@ -3,6 +3,7 @@ export declare const rules: {
3
3
  'ensure-design-token-usage': import("eslint").Rule.RuleModule;
4
4
  'ensure-design-token-usage/preview': import("eslint").Rule.RuleModule;
5
5
  'ensure-icon-color': import("eslint").Rule.RuleModule;
6
+ 'ensure-proper-xcss-usage': import("eslint").Rule.RuleModule;
6
7
  'icon-label': import("eslint").Rule.RuleModule;
7
8
  'no-banned-imports': import("eslint").Rule.RuleModule;
8
9
  'no-boolean-autofocus-on-modal-dialog': import("eslint").Rule.RuleModule;
@@ -39,6 +40,7 @@ export declare const rules: {
39
40
  'no-unsafe-design-token-usage': import("eslint").Rule.RuleModule;
40
41
  'no-unsafe-style-overrides': import("eslint").Rule.RuleModule;
41
42
  'no-unsupported-drag-and-drop-libraries': import("eslint").Rule.RuleModule;
43
+ 'no-utility-icons': import("eslint").Rule.RuleModule;
42
44
  'prefer-primitives': import("eslint").Rule.RuleModule;
43
45
  'use-button-group-label': import("eslint").Rule.RuleModule;
44
46
  'use-cx-function-in-xcss': import("eslint").Rule.RuleModule;
@@ -0,0 +1,10 @@
1
+ import type { Rule } from 'eslint';
2
+ import { type Identifier, type ImportDeclaration } from 'eslint-codemod-utils';
3
+ type ReturnObject = {
4
+ checkImportDeclarations: (node: ImportDeclaration) => void;
5
+ checkJSXElement: (node: Rule.Node) => void;
6
+ checkIconReference: (node: Identifier & Rule.NodeParentExtension) => void;
7
+ throwErrors: () => void;
8
+ };
9
+ export declare const createChecks: (context: Rule.RuleContext) => ReturnObject;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;
@@ -19,6 +19,7 @@ export declare const plugin: {
19
19
  'ensure-design-token-usage': import("eslint").Rule.RuleModule;
20
20
  'ensure-design-token-usage/preview': import("eslint").Rule.RuleModule;
21
21
  'ensure-icon-color': import("eslint").Rule.RuleModule;
22
+ 'ensure-proper-xcss-usage': import("eslint").Rule.RuleModule;
22
23
  'icon-label': import("eslint").Rule.RuleModule;
23
24
  'no-banned-imports': import("eslint").Rule.RuleModule;
24
25
  'no-boolean-autofocus-on-modal-dialog': import("eslint").Rule.RuleModule;
@@ -55,6 +56,7 @@ export declare const plugin: {
55
56
  'no-unsafe-design-token-usage': import("eslint").Rule.RuleModule;
56
57
  'no-unsafe-style-overrides': import("eslint").Rule.RuleModule;
57
58
  'no-unsupported-drag-and-drop-libraries': import("eslint").Rule.RuleModule;
59
+ 'no-utility-icons': import("eslint").Rule.RuleModule;
58
60
  'prefer-primitives': import("eslint").Rule.RuleModule;
59
61
  'use-button-group-label': import("eslint").Rule.RuleModule;
60
62
  'use-cx-function-in-xcss': import("eslint").Rule.RuleModule;
@@ -85,6 +87,7 @@ export declare const plugin: {
85
87
  '@atlaskit/design-system/ensure-design-token-usage': "error";
86
88
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
87
89
  '@atlaskit/design-system/ensure-icon-color': "error";
90
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
88
91
  '@atlaskit/design-system/icon-label': "warn";
89
92
  '@atlaskit/design-system/no-banned-imports': "error";
90
93
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -123,6 +126,7 @@ export declare const plugin: {
123
126
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
124
127
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
125
128
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
129
+ '@atlaskit/design-system/no-utility-icons': "warn";
126
130
  '@atlaskit/design-system/prefer-primitives': "warn";
127
131
  '@atlaskit/design-system/use-button-group-label': "warn";
128
132
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -155,6 +159,7 @@ export declare const plugin: {
155
159
  '@atlaskit/design-system/ensure-design-token-usage': "error";
156
160
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
157
161
  '@atlaskit/design-system/ensure-icon-color': "error";
162
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
158
163
  '@atlaskit/design-system/icon-label': "warn";
159
164
  '@atlaskit/design-system/no-banned-imports': "error";
160
165
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -193,6 +198,7 @@ export declare const plugin: {
193
198
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
194
199
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
195
200
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
201
+ '@atlaskit/design-system/no-utility-icons': "warn";
196
202
  '@atlaskit/design-system/prefer-primitives': "warn";
197
203
  '@atlaskit/design-system/use-button-group-label': "warn";
198
204
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -250,6 +256,7 @@ export declare const plugin: {
250
256
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
251
257
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
252
258
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
259
+ '@atlaskit/design-system/no-utility-icons': "warn";
253
260
  '@atlaskit/design-system/use-button-group-label': "warn";
254
261
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
255
262
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -303,6 +310,7 @@ export declare const plugin: {
303
310
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
304
311
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
305
312
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
313
+ '@atlaskit/design-system/no-utility-icons': "warn";
306
314
  '@atlaskit/design-system/use-button-group-label': "warn";
307
315
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
308
316
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -330,6 +338,7 @@ declare const configs: {
330
338
  '@atlaskit/design-system/ensure-design-token-usage': "error";
331
339
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
332
340
  '@atlaskit/design-system/ensure-icon-color': "error";
341
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
333
342
  '@atlaskit/design-system/icon-label': "warn";
334
343
  '@atlaskit/design-system/no-banned-imports': "error";
335
344
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -368,6 +377,7 @@ declare const configs: {
368
377
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
369
378
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
370
379
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
380
+ '@atlaskit/design-system/no-utility-icons': "warn";
371
381
  '@atlaskit/design-system/prefer-primitives': "warn";
372
382
  '@atlaskit/design-system/use-button-group-label': "warn";
373
383
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -400,6 +410,7 @@ declare const configs: {
400
410
  '@atlaskit/design-system/ensure-design-token-usage': "error";
401
411
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
402
412
  '@atlaskit/design-system/ensure-icon-color': "error";
413
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
403
414
  '@atlaskit/design-system/icon-label': "warn";
404
415
  '@atlaskit/design-system/no-banned-imports': "error";
405
416
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -438,6 +449,7 @@ declare const configs: {
438
449
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
439
450
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
440
451
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
452
+ '@atlaskit/design-system/no-utility-icons': "warn";
441
453
  '@atlaskit/design-system/prefer-primitives': "warn";
442
454
  '@atlaskit/design-system/use-button-group-label': "warn";
443
455
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -495,6 +507,7 @@ declare const configs: {
495
507
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
496
508
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
497
509
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
510
+ '@atlaskit/design-system/no-utility-icons': "warn";
498
511
  '@atlaskit/design-system/use-button-group-label': "warn";
499
512
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
500
513
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -548,6 +561,7 @@ declare const configs: {
548
561
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
549
562
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
550
563
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
564
+ '@atlaskit/design-system/no-utility-icons': "warn";
551
565
  '@atlaskit/design-system/use-button-group-label': "warn";
552
566
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
553
567
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  '@atlaskit/design-system/ensure-design-token-usage': "error";
6
6
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
7
7
  '@atlaskit/design-system/ensure-icon-color': "error";
8
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
8
9
  '@atlaskit/design-system/icon-label': "warn";
9
10
  '@atlaskit/design-system/no-banned-imports': "error";
10
11
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -43,6 +44,7 @@ declare const _default: {
43
44
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
44
45
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
45
46
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
47
+ '@atlaskit/design-system/no-utility-icons': "warn";
46
48
  '@atlaskit/design-system/prefer-primitives': "warn";
47
49
  '@atlaskit/design-system/use-button-group-label': "warn";
48
50
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  '@atlaskit/design-system/ensure-design-token-usage': "error";
6
6
  '@atlaskit/design-system/ensure-design-token-usage/preview': "warn";
7
7
  '@atlaskit/design-system/ensure-icon-color': "error";
8
+ '@atlaskit/design-system/ensure-proper-xcss-usage': "error";
8
9
  '@atlaskit/design-system/icon-label': "warn";
9
10
  '@atlaskit/design-system/no-banned-imports': "error";
10
11
  '@atlaskit/design-system/no-boolean-autofocus-on-modal-dialog': "warn";
@@ -43,6 +44,7 @@ declare const _default: {
43
44
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
44
45
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
45
46
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
47
+ '@atlaskit/design-system/no-utility-icons': "warn";
46
48
  '@atlaskit/design-system/prefer-primitives': "warn";
47
49
  '@atlaskit/design-system/use-button-group-label': "warn";
48
50
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
@@ -32,6 +32,7 @@ declare const _default: {
32
32
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
33
33
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
34
34
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
35
+ '@atlaskit/design-system/no-utility-icons': "warn";
35
36
  '@atlaskit/design-system/use-button-group-label': "warn";
36
37
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
37
38
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -32,6 +32,7 @@ declare const _default: {
32
32
  '@atlaskit/design-system/no-unsafe-design-token-usage': "error";
33
33
  '@atlaskit/design-system/no-unsafe-style-overrides': "warn";
34
34
  '@atlaskit/design-system/no-unsupported-drag-and-drop-libraries': "error";
35
+ '@atlaskit/design-system/no-utility-icons': "warn";
35
36
  '@atlaskit/design-system/use-button-group-label': "warn";
36
37
  '@atlaskit/design-system/use-cx-function-in-xcss': "error";
37
38
  '@atlaskit/design-system/use-datetime-picker-calendar-button': "warn";
@@ -0,0 +1,3 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const rule: Rule.RuleModule;
3
+ export default rule;