@atlaskit/eslint-plugin-design-system 9.6.0 → 10.0.0

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 (151) hide show
  1. package/CHANGELOG.md +1004 -411
  2. package/README.md +7 -5
  3. package/constellation/consistent-css-prop-usage/usage.mdx +44 -30
  4. package/constellation/ensure-design-token-usage/usage.mdx +12 -7
  5. package/constellation/ensure-design-token-usage-preview/usage.mdx +2 -1
  6. package/constellation/icon-label/usage.mdx +5 -3
  7. package/constellation/index/usage.mdx +5 -2
  8. package/constellation/no-banned-imports/usage.mdx +3 -1
  9. package/constellation/no-css-tagged-template-expression/usage.mdx +22 -17
  10. package/constellation/no-deprecated-apis/usage.mdx +33 -27
  11. package/constellation/no-deprecated-design-token-usage/usage.mdx +7 -4
  12. package/constellation/no-deprecated-imports/usage.mdx +31 -27
  13. package/constellation/no-direct-use-of-web-platform-drag-and-drop/usage.mdx +19 -10
  14. package/constellation/no-empty-styled-expression/usage.mdx +19 -14
  15. package/constellation/no-exported-css/usage.mdx +15 -10
  16. package/constellation/no-exported-keyframes/usage.mdx +15 -10
  17. package/constellation/no-html-anchor/usage.mdx +40 -0
  18. package/constellation/no-html-button/usage.mdx +52 -0
  19. package/constellation/no-invalid-css-map/usage.mdx +69 -58
  20. package/constellation/no-keyframes-tagged-template-expression/usage.mdx +24 -18
  21. package/constellation/no-margin/usage.mdx +3 -2
  22. package/constellation/no-nested-styles/usage.mdx +16 -16
  23. package/constellation/no-physical-properties/usage.mdx +13 -13
  24. package/constellation/no-styled-tagged-template-expression/usage.mdx +39 -34
  25. package/constellation/no-unsafe-design-token-usage/usage.mdx +8 -7
  26. package/constellation/no-unsafe-style-overrides/usage.mdx +10 -7
  27. package/constellation/no-unsupported-drag-and-drop-libraries/usage.mdx +8 -2
  28. package/constellation/prefer-primitives/usage.mdx +3 -2
  29. package/constellation/use-button-group-label/usage.mdx +4 -2
  30. package/constellation/use-drawer-label/usage.mdx +4 -2
  31. package/constellation/use-heading/usage.mdx +7 -4
  32. package/constellation/use-heading-level-in-spotlight-card/usage.mdx +3 -2
  33. package/constellation/use-href-in-link-item/usage.mdx +2 -1
  34. package/constellation/use-popup-label/usage.mdx +56 -0
  35. package/constellation/use-primitives/usage.mdx +40 -39
  36. package/constellation/use-primitives-text/usage.mdx +7 -3
  37. package/constellation/use-tokens-space/usage.mdx +7 -3
  38. package/constellation/use-tokens-typography/usage.mdx +15 -6
  39. package/constellation/use-visually-hidden/usage.mdx +2 -1
  40. package/dist/cjs/common/token-maps.partial.js +49 -0
  41. package/dist/cjs/index.codegen.js +1 -1
  42. package/dist/cjs/presets/all.codegen.js +4 -2
  43. package/dist/cjs/presets/recommended.codegen.js +2 -1
  44. package/dist/cjs/rules/index.codegen.js +7 -3
  45. package/dist/cjs/rules/no-html-anchor/index.js +39 -0
  46. package/dist/cjs/rules/no-html-anchor/node-types/index.js +19 -0
  47. package/dist/cjs/rules/no-html-anchor/node-types/jsx-element/index.js +28 -0
  48. package/dist/cjs/rules/no-html-anchor/node-types/styled-component/get-styled-component-call.js +47 -0
  49. package/dist/cjs/rules/no-html-anchor/node-types/styled-component/index.js +37 -0
  50. package/dist/cjs/rules/no-html-anchor/node-types/supported.js +66 -0
  51. package/dist/cjs/rules/no-html-anchor/utils/get-jsx-element-by-name.js +53 -0
  52. package/dist/cjs/rules/no-html-button/index.js +39 -0
  53. package/dist/cjs/rules/no-html-button/node-types/index.js +19 -0
  54. package/dist/cjs/rules/no-html-button/node-types/jsx-element/index.js +28 -0
  55. package/dist/cjs/rules/no-html-button/node-types/styled-component/get-styled-component-call.js +47 -0
  56. package/dist/cjs/rules/no-html-button/node-types/styled-component/index.js +37 -0
  57. package/dist/cjs/rules/no-html-button/node-types/supported.js +79 -0
  58. package/dist/cjs/rules/no-html-button/utils/get-jsx-element-by-name.js +53 -0
  59. package/dist/cjs/rules/use-popup-label/index.js +90 -0
  60. package/dist/es2019/common/token-maps.partial.js +42 -0
  61. package/dist/es2019/index.codegen.js +1 -1
  62. package/dist/es2019/presets/all.codegen.js +4 -2
  63. package/dist/es2019/presets/recommended.codegen.js +2 -1
  64. package/dist/es2019/rules/index.codegen.js +7 -3
  65. package/dist/es2019/rules/no-html-anchor/index.js +33 -0
  66. package/dist/es2019/rules/no-html-anchor/node-types/index.js +2 -0
  67. package/dist/es2019/rules/no-html-anchor/node-types/jsx-element/index.js +20 -0
  68. package/dist/es2019/rules/no-html-anchor/node-types/styled-component/get-styled-component-call.js +42 -0
  69. package/dist/es2019/rules/no-html-anchor/node-types/styled-component/index.js +32 -0
  70. package/dist/es2019/rules/no-html-anchor/node-types/supported.js +56 -0
  71. package/dist/es2019/rules/no-html-anchor/utils/get-jsx-element-by-name.js +39 -0
  72. package/dist/es2019/rules/no-html-button/index.js +33 -0
  73. package/dist/es2019/rules/no-html-button/node-types/index.js +2 -0
  74. package/dist/es2019/rules/no-html-button/node-types/jsx-element/index.js +20 -0
  75. package/dist/es2019/rules/no-html-button/node-types/styled-component/get-styled-component-call.js +42 -0
  76. package/dist/es2019/rules/no-html-button/node-types/styled-component/index.js +32 -0
  77. package/dist/es2019/rules/no-html-button/node-types/supported.js +69 -0
  78. package/dist/es2019/rules/no-html-button/utils/get-jsx-element-by-name.js +39 -0
  79. package/dist/es2019/rules/use-popup-label/index.js +80 -0
  80. package/dist/esm/common/token-maps.partial.js +42 -0
  81. package/dist/esm/index.codegen.js +1 -1
  82. package/dist/esm/presets/all.codegen.js +4 -2
  83. package/dist/esm/presets/recommended.codegen.js +2 -1
  84. package/dist/esm/rules/index.codegen.js +7 -3
  85. package/dist/esm/rules/no-html-anchor/index.js +33 -0
  86. package/dist/esm/rules/no-html-anchor/node-types/index.js +2 -0
  87. package/dist/esm/rules/no-html-anchor/node-types/jsx-element/index.js +19 -0
  88. package/dist/esm/rules/no-html-anchor/node-types/styled-component/get-styled-component-call.js +42 -0
  89. package/dist/esm/rules/no-html-anchor/node-types/styled-component/index.js +31 -0
  90. package/dist/esm/rules/no-html-anchor/node-types/supported.js +57 -0
  91. package/dist/esm/rules/no-html-anchor/utils/get-jsx-element-by-name.js +47 -0
  92. package/dist/esm/rules/no-html-button/index.js +33 -0
  93. package/dist/esm/rules/no-html-button/node-types/index.js +2 -0
  94. package/dist/esm/rules/no-html-button/node-types/jsx-element/index.js +19 -0
  95. package/dist/esm/rules/no-html-button/node-types/styled-component/get-styled-component-call.js +42 -0
  96. package/dist/esm/rules/no-html-button/node-types/styled-component/index.js +31 -0
  97. package/dist/esm/rules/no-html-button/node-types/supported.js +70 -0
  98. package/dist/esm/rules/no-html-button/utils/get-jsx-element-by-name.js +47 -0
  99. package/dist/esm/rules/use-popup-label/index.js +84 -0
  100. package/dist/types/common/token-maps.partial.d.ts +65 -0
  101. package/dist/types/index.codegen.d.ts +4 -1
  102. package/dist/types/presets/all.codegen.d.ts +4 -2
  103. package/dist/types/presets/recommended.codegen.d.ts +2 -1
  104. package/dist/types/rules/index.codegen.d.ts +3 -1
  105. package/dist/types/rules/no-html-anchor/index.d.ts +3 -0
  106. package/dist/types/rules/no-html-anchor/node-types/index.d.ts +2 -0
  107. package/dist/types/rules/no-html-anchor/node-types/jsx-element/index.d.ts +8 -0
  108. package/dist/types/rules/no-html-anchor/node-types/styled-component/get-styled-component-call.d.ts +6 -0
  109. package/dist/types/rules/no-html-anchor/node-types/styled-component/index.d.ts +8 -0
  110. package/dist/types/rules/no-html-anchor/node-types/supported.d.ts +7 -0
  111. package/dist/types/rules/no-html-anchor/utils/get-jsx-element-by-name.d.ts +6 -0
  112. package/dist/types/rules/no-html-button/index.d.ts +3 -0
  113. package/dist/types/rules/no-html-button/node-types/index.d.ts +2 -0
  114. package/dist/types/rules/no-html-button/node-types/jsx-element/index.d.ts +8 -0
  115. package/dist/types/rules/no-html-button/node-types/styled-component/get-styled-component-call.d.ts +6 -0
  116. package/dist/types/rules/no-html-button/node-types/styled-component/index.d.ts +8 -0
  117. package/dist/types/rules/no-html-button/node-types/supported.d.ts +7 -0
  118. package/dist/types/rules/no-html-button/utils/get-jsx-element-by-name.d.ts +6 -0
  119. package/dist/types/rules/use-popup-label/index.d.ts +3 -0
  120. package/dist/types/rules/use-tokens-typography/utils.d.ts +0 -33
  121. package/dist/types-ts4.5/common/token-maps.partial.d.ts +65 -0
  122. package/dist/types-ts4.5/index.codegen.d.ts +4 -1
  123. package/dist/types-ts4.5/presets/all.codegen.d.ts +4 -2
  124. package/dist/types-ts4.5/presets/recommended.codegen.d.ts +2 -1
  125. package/dist/types-ts4.5/rules/index.codegen.d.ts +3 -1
  126. package/dist/types-ts4.5/rules/no-html-anchor/node-types/index.d.ts +2 -0
  127. package/dist/types-ts4.5/rules/no-html-anchor/node-types/jsx-element/index.d.ts +8 -0
  128. package/dist/types-ts4.5/rules/no-html-anchor/node-types/styled-component/get-styled-component-call.d.ts +6 -0
  129. package/dist/types-ts4.5/rules/no-html-anchor/node-types/styled-component/index.d.ts +8 -0
  130. package/dist/types-ts4.5/rules/no-html-anchor/node-types/supported.d.ts +7 -0
  131. package/dist/types-ts4.5/rules/no-html-anchor/utils/get-jsx-element-by-name.d.ts +6 -0
  132. package/dist/types-ts4.5/rules/no-html-button/node-types/index.d.ts +2 -0
  133. package/dist/types-ts4.5/rules/no-html-button/node-types/jsx-element/index.d.ts +8 -0
  134. package/dist/types-ts4.5/rules/no-html-button/node-types/styled-component/get-styled-component-call.d.ts +6 -0
  135. package/dist/types-ts4.5/rules/no-html-button/node-types/styled-component/index.d.ts +8 -0
  136. package/dist/types-ts4.5/rules/no-html-button/node-types/supported.d.ts +7 -0
  137. package/dist/types-ts4.5/rules/no-html-button/utils/get-jsx-element-by-name.d.ts +6 -0
  138. package/dist/types-ts4.5/rules/use-popup-label/index.d.ts +3 -0
  139. package/dist/types-ts4.5/rules/use-tokens-typography/utils.d.ts +0 -33
  140. package/package.json +4 -3
  141. package/constellation/no-html-button-element/usage.mdx +0 -26
  142. package/dist/cjs/rules/no-html-button-element/index.js +0 -107
  143. package/dist/cjs/rules/no-html-button-element/utils.js +0 -18
  144. package/dist/es2019/rules/no-html-button-element/index.js +0 -101
  145. package/dist/es2019/rules/no-html-button-element/utils.js +0 -12
  146. package/dist/esm/rules/no-html-button-element/index.js +0 -101
  147. package/dist/esm/rules/no-html-button-element/utils.js +0 -12
  148. package/dist/types/rules/no-html-button-element/utils.d.ts +0 -2
  149. package/dist/types-ts4.5/rules/no-html-button-element/utils.d.ts +0 -2
  150. /package/dist/types-ts4.5/rules/{no-html-button-element → no-html-anchor}/index.d.ts +0 -0
  151. /package/dist/{types/rules/no-html-button-element → types-ts4.5/rules/no-html-button}/index.d.ts +0 -0
@@ -1,101 +0,0 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
-
3
- import { isNodeOfType } from 'eslint-codemod-utils';
4
- import { createLintRule } from '../utils/create-rule';
5
- import { shouldSuggest } from './utils';
6
- var buttonDocsUrl = 'https://atlassian.design/components/button';
7
- var pressableDocsUrl = 'https://atlassian.design/components/primitives/pressable/';
8
- var rule = createLintRule({
9
- meta: {
10
- name: 'no-html-button-element',
11
- type: 'suggestion',
12
- hasSuggestions: false,
13
- docs: {
14
- description: 'Prevent direct usage of HTML button elements and enforce usage of Button and Pressable.',
15
- recommended: false,
16
- severity: 'warn'
17
- },
18
- messages: {
19
- noHtmlButtonElement: "This \"{{element}}\" should be replaced with a Button component. If beyond the capabilities of the Button component, use the Pressable primitive. See ".concat(buttonDocsUrl, " and ").concat(pressableDocsUrl, " for guidance.")
20
- }
21
- },
22
- create: function create(context) {
23
- return {
24
- // Look for <button> HTML elements
25
- // Look for styled calls/templates - styled.button(...)
26
- JSXOpeningElement: function JSXOpeningElement(node) {
27
- if (!isNodeOfType(node, 'JSXOpeningElement')) {
28
- return;
29
- }
30
- if (!isNodeOfType(node.name, 'JSXIdentifier')) {
31
- return;
32
- }
33
- var suggest = shouldSuggest(node === null || node === void 0 ? void 0 : node.parent);
34
- if (suggest) {
35
- context.report({
36
- node: node,
37
- messageId: 'noHtmlButtonElement',
38
- data: {
39
- element: node.name.name
40
- }
41
- });
42
- }
43
- },
44
- // styled.button`` | styled2.button`` | styled.button()
45
- 'MemberExpression[object.name="styled"],MemberExpression[object.name="styled2"]': function MemberExpressionObjectNameStyledMemberExpressionObjectNameStyled2(node) {
46
- if (!isNodeOfType(node, 'MemberExpression')) {
47
- return;
48
- }
49
-
50
- // styled.button``
51
- if (isNodeOfType(node.property, 'Identifier')) {
52
- if (node.property.name === 'button') {
53
- var styledIdentifier = node.object.name;
54
- var elementName = node.property.name;
55
-
56
- // Including the `styled.` portion in the message to help makers understand it's not just the `button` element that should be replaced
57
- var reportName = "".concat(styledIdentifier, ".").concat(elementName); // styled.button
58
-
59
- context.report({
60
- node: node,
61
- messageId: 'noHtmlButtonElement',
62
- data: {
63
- element: reportName
64
- }
65
- });
66
- }
67
- }
68
- },
69
- // styled(X)``
70
- 'CallExpression[callee.name="styled"]': function CallExpressionCalleeNameStyled(node) {
71
- if (!isNodeOfType(node, 'CallExpression')) {
72
- return;
73
- }
74
-
75
- // styled('button')`` - We only care about 'button', ignore extending other components
76
- if (isNodeOfType(node.arguments[0], 'Literal')) {
77
- var argValue = node.arguments[0].raw;
78
- if (typeof argValue === 'string') {
79
- var suggest = argValue.replaceAll("'", '') === 'button';
80
- if (suggest) {
81
- var styledIdentifier = node.callee.name;
82
- var elementName = argValue;
83
-
84
- // Including the `styled()` portion in the message to help makers understand it's not just the `button` element that should be replaced
85
- var reportName = "".concat(styledIdentifier, "(").concat(elementName, ")"); // styled('button')
86
-
87
- context.report({
88
- node: node,
89
- messageId: 'noHtmlButtonElement',
90
- data: {
91
- element: reportName
92
- }
93
- });
94
- }
95
- }
96
- }
97
- }
98
- };
99
- }
100
- });
101
- export default rule;
@@ -1,12 +0,0 @@
1
- var isButtonHtmlElement = function isButtonHtmlElement(node) {
2
- return node.openingElement.name.name === 'button';
3
- };
4
- export var shouldSuggest = function shouldSuggest(node) {
5
- if (!node) {
6
- return false;
7
- }
8
- if (!isButtonHtmlElement(node)) {
9
- return false;
10
- }
11
- return true;
12
- };
@@ -1,2 +0,0 @@
1
- import { type JSXElement } from 'eslint-codemod-utils';
2
- export declare const shouldSuggest: (node: JSXElement) => boolean;
@@ -1,2 +0,0 @@
1
- import { type JSXElement } from 'eslint-codemod-utils';
2
- export declare const shouldSuggest: (node: JSXElement) => boolean;