@atlaskit/eslint-plugin-design-system 14.4.0 → 15.1.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 (402) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/presets/all-flat.codegen.js +2 -1
  4. package/dist/cjs/presets/all.codegen.js +2 -1
  5. package/dist/cjs/rules/index.codegen.js +3 -1
  6. package/dist/cjs/rules/use-tokens-motion/index.js +555 -0
  7. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/create-no-tagged-template-expression-rule.js +23 -23
  8. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/index.js +23 -23
  9. package/dist/cjs/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +1 -1
  10. package/dist/es2019/presets/all-flat.codegen.js +2 -1
  11. package/dist/es2019/presets/all.codegen.js +2 -1
  12. package/dist/es2019/rules/index.codegen.js +3 -1
  13. package/dist/es2019/rules/use-tokens-motion/index.js +489 -0
  14. package/dist/esm/presets/all-flat.codegen.js +2 -1
  15. package/dist/esm/presets/all.codegen.js +2 -1
  16. package/dist/esm/rules/index.codegen.js +3 -1
  17. package/dist/esm/rules/use-tokens-motion/index.js +548 -0
  18. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/create-no-tagged-template-expression-rule.js +23 -23
  19. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/index.js +23 -23
  20. package/dist/esm/rules/utils/create-no-tagged-template-expression-rule/to-arguments.js +1 -1
  21. package/dist/types/presets/all-flat.codegen.d.ts +1 -1
  22. package/dist/types/presets/all.codegen.d.ts +1 -1
  23. package/dist/types/rules/index.codegen.d.ts +1 -1
  24. package/dist/types/rules/use-tokens-motion/index.d.ts +3 -0
  25. package/package.json +7 -15
  26. package/dist/types-ts4.5/ast-nodes/function-call.d.ts +0 -21
  27. package/dist/types-ts4.5/ast-nodes/import.d.ts +0 -16
  28. package/dist/types-ts4.5/ast-nodes/jsx-attribute.d.ts +0 -29
  29. package/dist/types-ts4.5/ast-nodes/jsx-element-helper.d.ts +0 -23
  30. package/dist/types-ts4.5/ast-nodes/jsx-element.d.ts +0 -24
  31. package/dist/types-ts4.5/ast-nodes/object-entry.d.ts +0 -17
  32. package/dist/types-ts4.5/ast-nodes/object.d.ts +0 -53
  33. package/dist/types-ts4.5/ast-nodes/root.d.ts +0 -26
  34. package/dist/types-ts4.5/common/is-from-import-source.d.ts +0 -8
  35. package/dist/types-ts4.5/common/is-imported-jsx-element.d.ts +0 -8
  36. package/dist/types-ts4.5/common/token-maps.partial.d.ts +0 -65
  37. package/dist/types-ts4.5/index.codegen.d.ts +0 -15
  38. package/dist/types-ts4.5/index.d.ts +0 -2
  39. package/dist/types-ts4.5/presets/all-flat.codegen.d.ts +0 -8
  40. package/dist/types-ts4.5/presets/all.codegen.d.ts +0 -8
  41. package/dist/types-ts4.5/presets/recommended-flat.codegen.d.ts +0 -8
  42. package/dist/types-ts4.5/presets/recommended.codegen.d.ts +0 -8
  43. package/dist/types-ts4.5/rules/consistent-css-prop-usage/index.d.ts +0 -3
  44. package/dist/types-ts4.5/rules/consistent-css-prop-usage/types.d.ts +0 -10
  45. package/dist/types-ts4.5/rules/enforce-inline-styles-in-select/index.d.ts +0 -3
  46. package/dist/types-ts4.5/rules/enforce-inline-styles-in-select/utils.d.ts +0 -2
  47. package/dist/types-ts4.5/rules/ensure-avatar-tag-avatar-props/index.d.ts +0 -3
  48. package/dist/types-ts4.5/rules/ensure-design-token-usage/border-width-value-to-token.d.ts +0 -1
  49. package/dist/types-ts4.5/rules/ensure-design-token-usage/clean-comments.d.ts +0 -5
  50. package/dist/types-ts4.5/rules/ensure-design-token-usage/convert-hyphenated-name-to-camel-case.d.ts +0 -1
  51. package/dist/types-ts4.5/rules/ensure-design-token-usage/em-to-pixels.d.ts +0 -1
  52. package/dist/types-ts4.5/rules/ensure-design-token-usage/find-parent-node-for-line.d.ts +0 -6
  53. package/dist/types-ts4.5/rules/ensure-design-token-usage/find-token-name-by-property-value.d.ts +0 -1
  54. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-domains-for-property.d.ts +0 -13
  55. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-elevation-token-example.d.ts +0 -2
  56. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-font-size-value-in-scope.d.ts +0 -2
  57. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-property-node-from-parent.d.ts +0 -3
  58. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-raw-expression.d.ts +0 -3
  59. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-token-node-for-value.d.ts +0 -12
  60. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-token-replacement.d.ts +0 -8
  61. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-token-suggestion.d.ts +0 -7
  62. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-value-for-property-node.d.ts +0 -3
  63. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-value-from-shorthand.d.ts +0 -1
  64. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-value-from-template-literal-raw.d.ts +0 -17
  65. package/dist/types-ts4.5/rules/ensure-design-token-usage/get-value.d.ts +0 -3
  66. package/dist/types-ts4.5/rules/ensure-design-token-usage/includes-token-string.d.ts +0 -1
  67. package/dist/types-ts4.5/rules/ensure-design-token-usage/index.d.ts +0 -5
  68. package/dist/types-ts4.5/rules/ensure-design-token-usage/insert-tokens-import.d.ts +0 -2
  69. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-auto.d.ts +0 -1
  70. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-border-radius.d.ts +0 -2
  71. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-border-size-property.d.ts +0 -1
  72. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-calc.d.ts +0 -1
  73. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-radius-property.d.ts +0 -1
  74. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-shape-property.d.ts +0 -1
  75. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-spacing-property.d.ts +0 -1
  76. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-token-value-string.d.ts +0 -5
  77. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-valid-spacing-value.d.ts +0 -1
  78. package/dist/types-ts4.5/rules/ensure-design-token-usage/is-zero.d.ts +0 -1
  79. package/dist/types-ts4.5/rules/ensure-design-token-usage/lint-jsx-identifier-for-color.d.ts +0 -3
  80. package/dist/types-ts4.5/rules/ensure-design-token-usage/lint-jsx-literal-for-color.d.ts +0 -3
  81. package/dist/types-ts4.5/rules/ensure-design-token-usage/lint-jsx-member-for-color.d.ts +0 -3
  82. package/dist/types-ts4.5/rules/ensure-design-token-usage/lint-object-for-color.d.ts +0 -4
  83. package/dist/types-ts4.5/rules/ensure-design-token-usage/lint-template-identifier-for-color.d.ts +0 -3
  84. package/dist/types-ts4.5/rules/ensure-design-token-usage/normalise-value.d.ts +0 -10
  85. package/dist/types-ts4.5/rules/ensure-design-token-usage/process-css-node.d.ts +0 -16
  86. package/dist/types-ts4.5/rules/ensure-design-token-usage/radius-value-to-token.d.ts +0 -1
  87. package/dist/types-ts4.5/rules/ensure-design-token-usage/remove-pixel-suffix.d.ts +0 -1
  88. package/dist/types-ts4.5/rules/ensure-design-token-usage/rule-meta.d.ts +0 -44
  89. package/dist/types-ts4.5/rules/ensure-design-token-usage/spacing.d.ts +0 -4
  90. package/dist/types-ts4.5/rules/ensure-design-token-usage/split-css-properties.d.ts +0 -6
  91. package/dist/types-ts4.5/rules/ensure-design-token-usage/split-shorthand-values.d.ts +0 -12
  92. package/dist/types-ts4.5/rules/ensure-design-token-usage/types.d.ts +0 -15
  93. package/dist/types-ts4.5/rules/ensure-design-token-usage-preview/index.d.ts +0 -3
  94. package/dist/types-ts4.5/rules/ensure-icon-color/index.d.ts +0 -3
  95. package/dist/types-ts4.5/rules/ensure-proper-xcss-usage/index.d.ts +0 -3
  96. package/dist/types-ts4.5/rules/icon-label/index.d.ts +0 -2
  97. package/dist/types-ts4.5/rules/index.codegen.d.ts +0 -7
  98. package/dist/types-ts4.5/rules/lozenge-badge-tag-labelling-system-migration/index.d.ts +0 -3
  99. package/dist/types-ts4.5/rules/no-banned-imports/index.d.ts +0 -2
  100. package/dist/types-ts4.5/rules/no-banned-imports/paths.d.ts +0 -4
  101. package/dist/types-ts4.5/rules/no-boolean-autofocus-on-modal-dialog/index.d.ts +0 -5
  102. package/dist/types-ts4.5/rules/no-css-tagged-template-expression/index.d.ts +0 -2
  103. package/dist/types-ts4.5/rules/no-dark-theme-vr-tests/index.d.ts +0 -3
  104. package/dist/types-ts4.5/rules/no-deprecated-apis/helpers/filter-actionable-deprecations.d.ts +0 -1
  105. package/dist/types-ts4.5/rules/no-deprecated-apis/helpers/validate-deprecated-apis-config.d.ts +0 -2
  106. package/dist/types-ts4.5/rules/no-deprecated-apis/index.d.ts +0 -5
  107. package/dist/types-ts4.5/rules/no-deprecated-design-token-usage/index.d.ts +0 -3
  108. package/dist/types-ts4.5/rules/no-deprecated-imports/checks.d.ts +0 -11
  109. package/dist/types-ts4.5/rules/no-deprecated-imports/constants.d.ts +0 -2
  110. package/dist/types-ts4.5/rules/no-deprecated-imports/handlers/icon.d.ts +0 -38
  111. package/dist/types-ts4.5/rules/no-deprecated-imports/index.d.ts +0 -29
  112. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-add-event-listener.d.ts +0 -2
  113. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind-all.d.ts +0 -3
  114. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-bind.d.ts +0 -3
  115. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/checks/is-blocked-jsx-attribute.d.ts +0 -3
  116. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/index.d.ts +0 -2
  117. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/shared/blocked-event-name-lookup.d.ts +0 -1
  118. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/shared/blocked-jsx-attribute-lookup.d.ts +0 -1
  119. package/dist/types-ts4.5/rules/no-direct-use-of-web-platform-drag-and-drop/shared/is-blocked-event-binding.d.ts +0 -2
  120. package/dist/types-ts4.5/rules/no-emotion-primitives/index.d.ts +0 -3
  121. package/dist/types-ts4.5/rules/no-empty-styled-expression/index.d.ts +0 -3
  122. package/dist/types-ts4.5/rules/no-exported-css/index.d.ts +0 -3
  123. package/dist/types-ts4.5/rules/no-exported-keyframes/index.d.ts +0 -3
  124. package/dist/types-ts4.5/rules/no-html-anchor/index.d.ts +0 -3
  125. package/dist/types-ts4.5/rules/no-html-anchor/node-types/jsx-element/index.d.ts +0 -8
  126. package/dist/types-ts4.5/rules/no-html-anchor/node-types/styled-component/index.d.ts +0 -8
  127. package/dist/types-ts4.5/rules/no-html-anchor/node-types/supported.d.ts +0 -7
  128. package/dist/types-ts4.5/rules/no-html-button/index.d.ts +0 -3
  129. package/dist/types-ts4.5/rules/no-html-button/node-types/jsx-element/index.d.ts +0 -8
  130. package/dist/types-ts4.5/rules/no-html-button/node-types/styled-component/index.d.ts +0 -8
  131. package/dist/types-ts4.5/rules/no-html-button/node-types/supported.d.ts +0 -7
  132. package/dist/types-ts4.5/rules/no-html-checkbox/index.d.ts +0 -3
  133. package/dist/types-ts4.5/rules/no-html-checkbox/node-types/jsx-element/index.d.ts +0 -8
  134. package/dist/types-ts4.5/rules/no-html-checkbox/node-types/supported.d.ts +0 -7
  135. package/dist/types-ts4.5/rules/no-html-code/index.d.ts +0 -3
  136. package/dist/types-ts4.5/rules/no-html-code/node-types/jsx-element/index.d.ts +0 -8
  137. package/dist/types-ts4.5/rules/no-html-code/node-types/styled-component/index.d.ts +0 -8
  138. package/dist/types-ts4.5/rules/no-html-code/node-types/supported.d.ts +0 -7
  139. package/dist/types-ts4.5/rules/no-html-heading/index.d.ts +0 -3
  140. package/dist/types-ts4.5/rules/no-html-heading/node-types/jsx-element/index.d.ts +0 -8
  141. package/dist/types-ts4.5/rules/no-html-heading/node-types/styled-component/index.d.ts +0 -8
  142. package/dist/types-ts4.5/rules/no-html-heading/node-types/supported.d.ts +0 -7
  143. package/dist/types-ts4.5/rules/no-html-image/index.d.ts +0 -3
  144. package/dist/types-ts4.5/rules/no-html-image/node-types/jsx-element/index.d.ts +0 -8
  145. package/dist/types-ts4.5/rules/no-html-image/node-types/styled-component/index.d.ts +0 -8
  146. package/dist/types-ts4.5/rules/no-html-image/node-types/supported.d.ts +0 -7
  147. package/dist/types-ts4.5/rules/no-html-image/utils/get-jsx-element-by-name.d.ts +0 -6
  148. package/dist/types-ts4.5/rules/no-html-radio/index.d.ts +0 -3
  149. package/dist/types-ts4.5/rules/no-html-radio/node-types/jsx-element/index.d.ts +0 -8
  150. package/dist/types-ts4.5/rules/no-html-radio/node-types/supported.d.ts +0 -7
  151. package/dist/types-ts4.5/rules/no-html-range/index.d.ts +0 -3
  152. package/dist/types-ts4.5/rules/no-html-range/node-types/jsx-element/index.d.ts +0 -8
  153. package/dist/types-ts4.5/rules/no-html-range/node-types/supported.d.ts +0 -7
  154. package/dist/types-ts4.5/rules/no-html-select/index.d.ts +0 -3
  155. package/dist/types-ts4.5/rules/no-html-select/node-types/jsx-element/index.d.ts +0 -8
  156. package/dist/types-ts4.5/rules/no-html-select/node-types/styled-component/index.d.ts +0 -8
  157. package/dist/types-ts4.5/rules/no-html-select/node-types/supported.d.ts +0 -7
  158. package/dist/types-ts4.5/rules/no-html-text-input/index.d.ts +0 -3
  159. package/dist/types-ts4.5/rules/no-html-text-input/node-types/jsx-element/index.d.ts +0 -8
  160. package/dist/types-ts4.5/rules/no-html-text-input/node-types/supported.d.ts +0 -7
  161. package/dist/types-ts4.5/rules/no-html-textarea/index.d.ts +0 -3
  162. package/dist/types-ts4.5/rules/no-html-textarea/node-types/jsx-element/index.d.ts +0 -8
  163. package/dist/types-ts4.5/rules/no-html-textarea/node-types/styled-component/index.d.ts +0 -8
  164. package/dist/types-ts4.5/rules/no-html-textarea/node-types/supported.d.ts +0 -7
  165. package/dist/types-ts4.5/rules/no-icon-spacing-prop/get-css-map-key.d.ts +0 -5
  166. package/dist/types-ts4.5/rules/no-icon-spacing-prop/get-icon-size.d.ts +0 -5
  167. package/dist/types-ts4.5/rules/no-icon-spacing-prop/get-spacing-attribute.d.ts +0 -5
  168. package/dist/types-ts4.5/rules/no-icon-spacing-prop/get-static-attribute-value.d.ts +0 -5
  169. package/dist/types-ts4.5/rules/no-icon-spacing-prop/has-spread-props.d.ts +0 -5
  170. package/dist/types-ts4.5/rules/no-icon-spacing-prop/index.d.ts +0 -3
  171. package/dist/types-ts4.5/rules/no-icon-spacing-prop/spacing-to-padding.d.ts +0 -5
  172. package/dist/types-ts4.5/rules/no-icon-spacing-prop/upsert-css-map-import.d.ts +0 -8
  173. package/dist/types-ts4.5/rules/no-icon-spacing-prop/upsert-css-map-variable.d.ts +0 -9
  174. package/dist/types-ts4.5/rules/no-icon-spacing-prop/upsert-flex-import.d.ts +0 -8
  175. package/dist/types-ts4.5/rules/no-icon-spacing-prop/upsert-token-import.d.ts +0 -8
  176. package/dist/types-ts4.5/rules/no-invalid-css-map/get-css-map-object.d.ts +0 -2
  177. package/dist/types-ts4.5/rules/no-invalid-css-map/index.d.ts +0 -3
  178. package/dist/types-ts4.5/rules/no-invalid-css-map/utils.d.ts +0 -12
  179. package/dist/types-ts4.5/rules/no-keyframes-tagged-template-expression/index.d.ts +0 -2
  180. package/dist/types-ts4.5/rules/no-margin/index.d.ts +0 -3
  181. package/dist/types-ts4.5/rules/no-nested-styles/index.d.ts +0 -3
  182. package/dist/types-ts4.5/rules/no-physical-properties/index.d.ts +0 -3
  183. package/dist/types-ts4.5/rules/no-physical-properties/logical-physical-map.d.ts +0 -72
  184. package/dist/types-ts4.5/rules/no-physical-properties/physical-logical-map.d.ts +0 -34
  185. package/dist/types-ts4.5/rules/no-placeholder/affected-atlaskit-packages.d.ts +0 -1
  186. package/dist/types-ts4.5/rules/no-placeholder/affected-html-elements.d.ts +0 -1
  187. package/dist/types-ts4.5/rules/no-placeholder/index.d.ts +0 -2
  188. package/dist/types-ts4.5/rules/no-readonly-or-disabled-inputs/affected-atlaskit-packages.d.ts +0 -1
  189. package/dist/types-ts4.5/rules/no-readonly-or-disabled-inputs/affected-html-elements.d.ts +0 -1
  190. package/dist/types-ts4.5/rules/no-readonly-or-disabled-inputs/index.d.ts +0 -2
  191. package/dist/types-ts4.5/rules/no-readonly-or-disabled-inputs/unwanted-atlaskit-attributes.d.ts +0 -4
  192. package/dist/types-ts4.5/rules/no-readonly-or-disabled-inputs/unwanted-html-attributes.d.ts +0 -4
  193. package/dist/types-ts4.5/rules/no-separator-with-list-elements/index.d.ts +0 -3
  194. package/dist/types-ts4.5/rules/no-styled-tagged-template-expression/index.d.ts +0 -2
  195. package/dist/types-ts4.5/rules/no-to-match-snapshot/index.d.ts +0 -4
  196. package/dist/types-ts4.5/rules/no-unsafe-design-token-usage/index.d.ts +0 -3
  197. package/dist/types-ts4.5/rules/no-unsafe-inline-snapshot/index.d.ts +0 -4
  198. package/dist/types-ts4.5/rules/no-unsafe-style-overrides/index.d.ts +0 -2
  199. package/dist/types-ts4.5/rules/no-unsupported-drag-and-drop-libraries/index.d.ts +0 -2
  200. package/dist/types-ts4.5/rules/no-unsupported-drag-and-drop-libraries/paths.d.ts +0 -4
  201. package/dist/types-ts4.5/rules/no-unused-css-map/get-css-map-object.d.ts +0 -5
  202. package/dist/types-ts4.5/rules/no-unused-css-map/index.d.ts +0 -3
  203. package/dist/types-ts4.5/rules/no-unused-css-map/unused-css-map-checker.d.ts +0 -14
  204. package/dist/types-ts4.5/rules/no-unused-css-map/utils.d.ts +0 -15
  205. package/dist/types-ts4.5/rules/prefer-primitives/index.d.ts +0 -2
  206. package/dist/types-ts4.5/rules/prefer-primitives/utils.d.ts +0 -2
  207. package/dist/types-ts4.5/rules/prefer-primitives/valid-primitive-elements.d.ts +0 -1
  208. package/dist/types-ts4.5/rules/use-button-group-label/index.d.ts +0 -3
  209. package/dist/types-ts4.5/rules/use-character-counter-field/index.d.ts +0 -6
  210. package/dist/types-ts4.5/rules/use-correct-field/index.d.ts +0 -5
  211. package/dist/types-ts4.5/rules/use-cx-function-in-xcss/index.d.ts +0 -3
  212. package/dist/types-ts4.5/rules/use-datetime-picker-calendar-button/index.d.ts +0 -7
  213. package/dist/types-ts4.5/rules/use-drawer-label/index.d.ts +0 -3
  214. package/dist/types-ts4.5/rules/use-field-message-wrapper/index.d.ts +0 -3
  215. package/dist/types-ts4.5/rules/use-heading/config/index.d.ts +0 -9
  216. package/dist/types-ts4.5/rules/use-heading/index.d.ts +0 -3
  217. package/dist/types-ts4.5/rules/use-heading/transformers/allowed-attrs.d.ts +0 -1
  218. package/dist/types-ts4.5/rules/use-heading/transformers/common.d.ts +0 -6
  219. package/dist/types-ts4.5/rules/use-heading/transformers/native-elements.d.ts +0 -22
  220. package/dist/types-ts4.5/rules/use-heading/transformers/update-test-id-attribute-fix.d.ts +0 -3
  221. package/dist/types-ts4.5/rules/use-heading-level-in-section-message/index.d.ts +0 -4
  222. package/dist/types-ts4.5/rules/use-heading-level-in-spotlight-card/index.d.ts +0 -4
  223. package/dist/types-ts4.5/rules/use-href-in-link-item/get-unique-button-item-name.d.ts +0 -2
  224. package/dist/types-ts4.5/rules/use-href-in-link-item/has-import-of-name.d.ts +0 -2
  225. package/dist/types-ts4.5/rules/use-href-in-link-item/index.d.ts +0 -4
  226. package/dist/types-ts4.5/rules/use-href-in-link-item/insert-button-item-default-import.d.ts +0 -3
  227. package/dist/types-ts4.5/rules/use-href-in-link-item/insert-button-item-import.d.ts +0 -3
  228. package/dist/types-ts4.5/rules/use-href-in-link-item/utils.d.ts +0 -3
  229. package/dist/types-ts4.5/rules/use-latest-xcss-syntax/index.d.ts +0 -4
  230. package/dist/types-ts4.5/rules/use-latest-xcss-syntax/transformers/style-property/index.d.ts +0 -18
  231. package/dist/types-ts4.5/rules/use-latest-xcss-syntax/transformers/style-property/style-map.d.ts +0 -1
  232. package/dist/types-ts4.5/rules/use-latest-xcss-syntax/transformers/style-property/supported.d.ts +0 -6
  233. package/dist/types-ts4.5/rules/use-latest-xcss-syntax/utils/is-string-or-number.d.ts +0 -1
  234. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/config/get-config.d.ts +0 -2
  235. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/config/patterns.d.ts +0 -6
  236. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/config/types.d.ts +0 -5
  237. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/index.d.ts +0 -3
  238. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/linters/common.d.ts +0 -7
  239. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/linters/restricted-capitalisation.d.ts +0 -6
  240. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/linters/restricted-property.d.ts +0 -6
  241. package/dist/types-ts4.5/rules/use-latest-xcss-syntax-typography/linters/wrapped-token-value.d.ts +0 -7
  242. package/dist/types-ts4.5/rules/use-menu-section-title/index.d.ts +0 -3
  243. package/dist/types-ts4.5/rules/use-modal-dialog-close-button/index.d.ts +0 -7
  244. package/dist/types-ts4.5/rules/use-onboarding-spotlight-label/index.d.ts +0 -3
  245. package/dist/types-ts4.5/rules/use-popup-label/index.d.ts +0 -3
  246. package/dist/types-ts4.5/rules/use-primitives/config/get-config.d.ts +0 -2
  247. package/dist/types-ts4.5/rules/use-primitives/config/index.d.ts +0 -7
  248. package/dist/types-ts4.5/rules/use-primitives/config/types.d.ts +0 -4
  249. package/dist/types-ts4.5/rules/use-primitives/config/valid-patterns.d.ts +0 -2
  250. package/dist/types-ts4.5/rules/use-primitives/index.d.ts +0 -3
  251. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/attributes.d.ts +0 -1
  252. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/convert-jsx-call-site.d.ts +0 -17
  253. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/convert-styled-component-call-to-jsx.d.ts +0 -17
  254. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/elements.d.ts +0 -1
  255. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/find-valid-jsx-usage-to-transform.d.ts +0 -9
  256. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/find-valid-styled-component-call.d.ts +0 -7
  257. package/dist/types-ts4.5/rules/use-primitives/transformers/compiled-styled/index.d.ts +0 -25
  258. package/dist/types-ts4.5/rules/use-primitives/transformers/css-to-xcss-transformer.d.ts +0 -3
  259. package/dist/types-ts4.5/rules/use-primitives/transformers/dimensions-map.d.ts +0 -3
  260. package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/attributes.d.ts +0 -1
  261. package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/elements.d.ts +0 -1
  262. package/dist/types-ts4.5/rules/use-primitives/transformers/emotion-css/index.d.ts +0 -15
  263. package/dist/types-ts4.5/rules/use-primitives/transformers/space-token-map.d.ts +0 -3
  264. package/dist/types-ts4.5/rules/use-primitives/transformers/space-token-positive-map.d.ts +0 -3
  265. package/dist/types-ts4.5/rules/use-primitives/transformers/styled-object-to-xcss-tokens.d.ts +0 -3
  266. package/dist/types-ts4.5/rules/use-primitives/transformers/supported-dimension-attributes-map.d.ts +0 -4
  267. package/dist/types-ts4.5/rules/use-primitives/transformers/supported-styles-map.d.ts +0 -4
  268. package/dist/types-ts4.5/rules/use-primitives/utils/convert-ast-object-expression-to-js-object.d.ts +0 -18
  269. package/dist/types-ts4.5/rules/use-primitives/utils/get-attribute-value-identifier.d.ts +0 -14
  270. package/dist/types-ts4.5/rules/use-primitives/utils/get-function-argument-at-pos.d.ts +0 -2
  271. package/dist/types-ts4.5/rules/use-primitives/utils/get-jsx-attribute-by-name.d.ts +0 -2
  272. package/dist/types-ts4.5/rules/use-primitives/utils/get-variable-definition-value.d.ts +0 -2
  273. package/dist/types-ts4.5/rules/use-primitives/utils/get-variable-usage-count.d.ts +0 -7
  274. package/dist/types-ts4.5/rules/use-primitives/utils/is-function-named.d.ts +0 -2
  275. package/dist/types-ts4.5/rules/use-primitives/utils/is-valid-css-properties-to-transform.d.ts +0 -4
  276. package/dist/types-ts4.5/rules/use-primitives/utils/spread-syntax.d.ts +0 -1
  277. package/dist/types-ts4.5/rules/use-primitives/utils/update-jsx-attribute-by-name.d.ts +0 -3
  278. package/dist/types-ts4.5/rules/use-primitives/utils/validate-styles.d.ts +0 -3
  279. package/dist/types-ts4.5/rules/use-primitives-text/config/get-config.d.ts +0 -2
  280. package/dist/types-ts4.5/rules/use-primitives-text/config/patterns.d.ts +0 -2
  281. package/dist/types-ts4.5/rules/use-primitives-text/config/types.d.ts +0 -8
  282. package/dist/types-ts4.5/rules/use-primitives-text/index.d.ts +0 -3
  283. package/dist/types-ts4.5/rules/use-primitives-text/transformers/add-color-inherit-attribute-fix.d.ts +0 -4
  284. package/dist/types-ts4.5/rules/use-primitives-text/transformers/allowed-attrs.d.ts +0 -1
  285. package/dist/types-ts4.5/rules/use-primitives-text/transformers/common.d.ts +0 -6
  286. package/dist/types-ts4.5/rules/use-primitives-text/transformers/emphasis-elements.d.ts +0 -13
  287. package/dist/types-ts4.5/rules/use-primitives-text/transformers/has-text-children-only.d.ts +0 -2
  288. package/dist/types-ts4.5/rules/use-primitives-text/transformers/paragraph-elements.d.ts +0 -25
  289. package/dist/types-ts4.5/rules/use-primitives-text/transformers/span-elements.d.ts +0 -13
  290. package/dist/types-ts4.5/rules/use-primitives-text/transformers/strong-elements.d.ts +0 -13
  291. package/dist/types-ts4.5/rules/use-primitives-text/transformers/update-test-id-attribute-fix.d.ts +0 -3
  292. package/dist/types-ts4.5/rules/use-should-render-to-parent/add-prop.d.ts +0 -1
  293. package/dist/types-ts4.5/rules/use-should-render-to-parent/index.d.ts +0 -6
  294. package/dist/types-ts4.5/rules/use-should-render-to-parent/set-prop-to-true.d.ts +0 -1
  295. package/dist/types-ts4.5/rules/use-simple-field/index.d.ts +0 -4
  296. package/dist/types-ts4.5/rules/use-simple-form/index.d.ts +0 -5
  297. package/dist/types-ts4.5/rules/use-simple-form/top-level-attribute-names.d.ts +0 -1
  298. package/dist/types-ts4.5/rules/use-spotlight-package/index.d.ts +0 -3
  299. package/dist/types-ts4.5/rules/use-spotlight-package/linters/import-declaration/index.d.ts +0 -16
  300. package/dist/types-ts4.5/rules/use-tag-group-label/index.d.ts +0 -3
  301. package/dist/types-ts4.5/rules/use-textfield-autocomplete/index.d.ts +0 -4
  302. package/dist/types-ts4.5/rules/use-tokens-shape/index.d.ts +0 -3
  303. package/dist/types-ts4.5/rules/use-tokens-shape/transformers/index.d.ts +0 -26
  304. package/dist/types-ts4.5/rules/use-tokens-shape/transformers/style-map.d.ts +0 -10
  305. package/dist/types-ts4.5/rules/use-tokens-shape/transformers/supported.d.ts +0 -6
  306. package/dist/types-ts4.5/rules/use-tokens-space/index.d.ts +0 -3
  307. package/dist/types-ts4.5/rules/use-tokens-space/transformers/style-property/index.d.ts +0 -26
  308. package/dist/types-ts4.5/rules/use-tokens-space/transformers/style-property/style-map.d.ts +0 -7
  309. package/dist/types-ts4.5/rules/use-tokens-space/transformers/style-property/supported.d.ts +0 -6
  310. package/dist/types-ts4.5/rules/use-tokens-space/utils/is-string-or-number.d.ts +0 -1
  311. package/dist/types-ts4.5/rules/use-tokens-typography/config/get-config.d.ts +0 -2
  312. package/dist/types-ts4.5/rules/use-tokens-typography/config/rule-schema.d.ts +0 -2
  313. package/dist/types-ts4.5/rules/use-tokens-typography/config/types.d.ts +0 -7
  314. package/dist/types-ts4.5/rules/use-tokens-typography/convert-property-node-to-stringable-node.d.ts +0 -2
  315. package/dist/types-ts4.5/rules/use-tokens-typography/default-font-weight.d.ts +0 -1
  316. package/dist/types-ts4.5/rules/use-tokens-typography/find-font-family-token-for-value.d.ts +0 -1
  317. package/dist/types-ts4.5/rules/use-tokens-typography/find-font-weight-token-for-value.d.ts +0 -2
  318. package/dist/types-ts4.5/rules/use-tokens-typography/find-typography-token-for-values.d.ts +0 -2
  319. package/dist/types-ts4.5/rules/use-tokens-typography/font-weight-map.d.ts +0 -2
  320. package/dist/types-ts4.5/rules/use-tokens-typography/font-weight-tokens.d.ts +0 -2
  321. package/dist/types-ts4.5/rules/use-tokens-typography/get-literal-property.d.ts +0 -2
  322. package/dist/types-ts4.5/rules/use-tokens-typography/get-token-property.d.ts +0 -2
  323. package/dist/types-ts4.5/rules/use-tokens-typography/index.d.ts +0 -3
  324. package/dist/types-ts4.5/rules/use-tokens-typography/insert-tokens-import.d.ts +0 -3
  325. package/dist/types-ts4.5/rules/use-tokens-typography/is-code-font-family.d.ts +0 -2
  326. package/dist/types-ts4.5/rules/use-tokens-typography/is-font-family.d.ts +0 -2
  327. package/dist/types-ts4.5/rules/use-tokens-typography/is-font-size-small.d.ts +0 -2
  328. package/dist/types-ts4.5/rules/use-tokens-typography/is-font-size.d.ts +0 -2
  329. package/dist/types-ts4.5/rules/use-tokens-typography/is-typography-property.d.ts +0 -1
  330. package/dist/types-ts4.5/rules/use-tokens-typography/is-valid-property-node.d.ts +0 -2
  331. package/dist/types-ts4.5/rules/use-tokens-typography/is-valid-typography-token.d.ts +0 -36
  332. package/dist/types-ts4.5/rules/use-tokens-typography/not-undefined.d.ts +0 -1
  333. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/banned-properties.d.ts +0 -12
  334. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/font-family.d.ts +0 -13
  335. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/font-weight.d.ts +0 -13
  336. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/restricted-capitalisation.d.ts +0 -12
  337. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/style-object.d.ts +0 -33
  338. package/dist/types-ts4.5/rules/use-tokens-typography/transformers/untokenized-properties.d.ts +0 -12
  339. package/dist/types-ts4.5/rules/use-tokens-typography/types.d.ts +0 -15
  340. package/dist/types-ts4.5/rules/use-tokens-typography/typography-properties.d.ts +0 -1
  341. package/dist/types-ts4.5/rules/use-tokens-typography/typography-value-to-token.d.ts +0 -2
  342. package/dist/types-ts4.5/rules/use-visually-hidden/constants.d.ts +0 -3
  343. package/dist/types-ts4.5/rules/use-visually-hidden/count-matching-key-values.d.ts +0 -6
  344. package/dist/types-ts4.5/rules/use-visually-hidden/fix-jsx.d.ts +0 -3
  345. package/dist/types-ts4.5/rules/use-visually-hidden/fix-vanilla.d.ts +0 -3
  346. package/dist/types-ts4.5/rules/use-visually-hidden/get-first-import.d.ts +0 -5
  347. package/dist/types-ts4.5/rules/use-visually-hidden/get-object-likeness.d.ts +0 -9
  348. package/dist/types-ts4.5/rules/use-visually-hidden/index.d.ts +0 -3
  349. package/dist/types-ts4.5/rules/use-visually-hidden/make-template-literal-into-entries.d.ts +0 -4
  350. package/dist/types-ts4.5/rules/use-visually-hidden/reference-object.d.ts +0 -11
  351. package/dist/types-ts4.5/rules/use-visually-hidden/utils.d.ts +0 -26
  352. package/dist/types-ts4.5/rules/utils/create-lint-rule.d.ts +0 -8
  353. package/dist/types-ts4.5/rules/utils/create-no-exported-rule/check-if-supported-export.d.ts +0 -15
  354. package/dist/types-ts4.5/rules/utils/create-no-exported-rule/is-styled-component.d.ts +0 -14
  355. package/dist/types-ts4.5/rules/utils/create-no-exported-rule/main.d.ts +0 -19
  356. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/create-no-tagged-template-expression-rule.d.ts +0 -5
  357. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/generate.d.ts +0 -2
  358. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/get-tagged-template-expression-offset.d.ts +0 -4
  359. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/index.d.ts +0 -7
  360. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/no-tagged-template-expression-rule-schema.d.ts +0 -2
  361. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/to-arguments.d.ts +0 -4
  362. package/dist/types-ts4.5/rules/utils/create-no-tagged-template-expression-rule/types.d.ts +0 -28
  363. package/dist/types-ts4.5/rules/utils/create-rule.d.ts +0 -11
  364. package/dist/types-ts4.5/rules/utils/error-boundary.d.ts +0 -18
  365. package/dist/types-ts4.5/rules/utils/find-in-parent.d.ts +0 -9
  366. package/dist/types-ts4.5/rules/utils/find-prop.d.ts +0 -2
  367. package/dist/types-ts4.5/rules/utils/get-deprecated-config.d.ts +0 -2
  368. package/dist/types-ts4.5/rules/utils/get-first-supported-import.d.ts +0 -17
  369. package/dist/types-ts4.5/rules/utils/get-import-name.d.ts +0 -2
  370. package/dist/types-ts4.5/rules/utils/get-imported-node-by-source.d.ts +0 -8
  371. package/dist/types-ts4.5/rules/utils/get-is-exception.d.ts +0 -2
  372. package/dist/types-ts4.5/rules/utils/get-jsx-element-by-name.d.ts +0 -6
  373. package/dist/types-ts4.5/rules/utils/get-module-of-identifier.d.ts +0 -10
  374. package/dist/types-ts4.5/rules/utils/get-node-source.d.ts +0 -3
  375. package/dist/types-ts4.5/rules/utils/get-rule-url.d.ts +0 -1
  376. package/dist/types-ts4.5/rules/utils/get-styled-component-call.d.ts +0 -6
  377. package/dist/types-ts4.5/rules/utils/includes-hard-coded-color.d.ts +0 -1
  378. package/dist/types-ts4.5/rules/utils/is-child-of-type.d.ts +0 -2
  379. package/dist/types-ts4.5/rules/utils/is-color-css-property-name.d.ts +0 -1
  380. package/dist/types-ts4.5/rules/utils/is-css-in-js-call-node.d.ts +0 -2
  381. package/dist/types-ts4.5/rules/utils/is-css-in-js-object-node.d.ts +0 -2
  382. package/dist/types-ts4.5/rules/utils/is-css-in-js-template-node.d.ts +0 -2
  383. package/dist/types-ts4.5/rules/utils/is-current-surface-custom-property-name.d.ts +0 -1
  384. package/dist/types-ts4.5/rules/utils/is-decendant-of-global-token.d.ts +0 -2
  385. package/dist/types-ts4.5/rules/utils/is-decendant-of-primitive.d.ts +0 -2
  386. package/dist/types-ts4.5/rules/utils/is-decendant-of-style-block.d.ts +0 -2
  387. package/dist/types-ts4.5/rules/utils/is-decendant-of-style-jsx-attribute.d.ts +0 -2
  388. package/dist/types-ts4.5/rules/utils/is-decendant-of-svg-element.d.ts +0 -2
  389. package/dist/types-ts4.5/rules/utils/is-decendant-of-type.d.ts +0 -2
  390. package/dist/types-ts4.5/rules/utils/is-decendant-of-xcss-block.d.ts +0 -2
  391. package/dist/types-ts4.5/rules/utils/is-deprecated-import-config.d.ts +0 -2
  392. package/dist/types-ts4.5/rules/utils/is-deprecated-jsx-attribute-config.d.ts +0 -2
  393. package/dist/types-ts4.5/rules/utils/is-elevation.d.ts +0 -5
  394. package/dist/types-ts4.5/rules/utils/is-hard-coded-color.d.ts +0 -1
  395. package/dist/types-ts4.5/rules/utils/is-legacy-color.d.ts +0 -1
  396. package/dist/types-ts4.5/rules/utils/is-legacy-named-color.d.ts +0 -1
  397. package/dist/types-ts4.5/rules/utils/is-node.d.ts +0 -6
  398. package/dist/types-ts4.5/rules/utils/is-property-key.d.ts +0 -2
  399. package/dist/types-ts4.5/rules/utils/is-token.d.ts +0 -1
  400. package/dist/types-ts4.5/rules/utils/jsx.d.ts +0 -2
  401. package/dist/types-ts4.5/rules/utils/named-colors.d.ts +0 -1
  402. package/dist/types-ts4.5/rules/utils/types.d.ts +0 -28
@@ -0,0 +1,489 @@
1
+ import tokenDefaultValues from '@atlaskit/tokens/token-default-values';
2
+ import { createLintRule } from '../utils/create-lint-rule';
3
+ const DURATION_TOKEN_NAMES = ['motion.duration.instant', 'motion.duration.xxshort', 'motion.duration.xshort', 'motion.duration.short', 'motion.duration.medium', 'motion.duration.long', 'motion.duration.xlong', 'motion.duration.xxlong'];
4
+ function parseDurationMs(value) {
5
+ const ms = value.match(/^(\d+(?:\.\d+)?)ms$/);
6
+ if (ms) {
7
+ return parseFloat(ms[1]);
8
+ }
9
+ const s = value.match(/^(\d+(?:\.\d+)?)s$/);
10
+ if (s) {
11
+ return parseFloat(s[1]) * 1000;
12
+ }
13
+ return null;
14
+ }
15
+ const DURATION_TOKENS = DURATION_TOKEN_NAMES.map(name => {
16
+ const rawValue = tokenDefaultValues[name];
17
+ const ms = parseDurationMs(rawValue);
18
+ if (ms === null) {
19
+ throw new Error(`use-tokens-motion: could not parse duration for token ${name}: ${rawValue}`);
20
+ }
21
+ return {
22
+ ms,
23
+ token: name
24
+ };
25
+ }).sort((a, b) => a.ms - b.ms);
26
+ const EASING_TOKEN_NAMES = ['motion.easing.in.practical', 'motion.easing.inout.bold', 'motion.easing.out.practical', 'motion.easing.out.bold'];
27
+ function parseCubicBezierParams(value) {
28
+ const match = value.match(/^cubic-bezier\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)$/);
29
+ if (!match) {
30
+ return null;
31
+ }
32
+ return [parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]), parseFloat(match[4])];
33
+ }
34
+ const EASING_TOKENS = EASING_TOKEN_NAMES.map(name => {
35
+ const rawValue = tokenDefaultValues[name];
36
+ const params = parseCubicBezierParams(rawValue);
37
+ if (!params) {
38
+ throw new Error(`use-tokens-motion: could not parse cubic-bezier for token ${name}: ${rawValue}`);
39
+ }
40
+ return {
41
+ value: rawValue,
42
+ token: name,
43
+ params
44
+ };
45
+ });
46
+
47
+ // Splits on top-level commas (outside function parens) — preserves cubic-bezier(...) commas.
48
+ function splitOnTopLevelCommas(value) {
49
+ const parts = [];
50
+ let depth = 0;
51
+ let current = '';
52
+ for (const ch of value) {
53
+ if (ch === '(') {
54
+ depth++;
55
+ current += ch;
56
+ } else if (ch === ')') {
57
+ depth--;
58
+ current += ch;
59
+ } else if (ch === ',' && depth === 0) {
60
+ parts.push(current.trim());
61
+ current = '';
62
+ } else {
63
+ current += ch;
64
+ }
65
+ }
66
+ if (current.trim().length > 0) {
67
+ parts.push(current.trim());
68
+ }
69
+ return parts;
70
+ }
71
+ const DURATION_PROPERTIES = new Set(['transitionDuration', 'animationDuration']);
72
+ const EASING_PROPERTIES = new Set(['transitionTimingFunction', 'animationTimingFunction']);
73
+
74
+ // Explicit semantic mappings for CSS keyword easings to motion tokens.
75
+ // Pinned by design intent, confirmed with design system team (Alex + Akshay).
76
+ const CSS_KEYWORD_EASING_TOKEN_MAP = {
77
+ ease: 'motion.easing.out.practical',
78
+ 'ease-out': 'motion.easing.out.practical',
79
+ 'ease-in': 'motion.easing.in.practical',
80
+ 'ease-in-out': 'motion.easing.inout.bold'
81
+ // linear (0,0,1,1) — warn only, no autofix (per Akshay: too generic, no good token match)
82
+ };
83
+
84
+ // Non-curve easing values with no meaningful cubic-bezier representation — skip entirely
85
+ const SKIP_EASING_VALUES = new Set(['step-start', 'step-end', 'inherit', 'initial', 'unset', 'none']);
86
+ function euclideanDistance(a, b) {
87
+ return Math.sqrt(a.reduce((sum, val, i) => sum + Math.pow(val - b[i], 2), 0));
88
+ }
89
+
90
+ // Maximum Euclidean distance for easing autofix — beyond this threshold, we report-only
91
+ const EASING_AUTOFIX_THRESHOLD = 0.5;
92
+ function findClosestEasingToken(params) {
93
+ let minDist = Infinity;
94
+ let closest = EASING_TOKENS[0];
95
+ for (const entry of EASING_TOKENS) {
96
+ const dist = euclideanDistance(params, entry.params);
97
+ if (dist < minDist) {
98
+ minDist = dist;
99
+ closest = entry;
100
+ }
101
+ }
102
+ if (minDist > EASING_AUTOFIX_THRESHOLD) {
103
+ return null;
104
+ }
105
+ return {
106
+ token: closest.token,
107
+ value: closest.value,
108
+ dist: minDist
109
+ };
110
+ }
111
+ function findClosestDurationTokens(ms) {
112
+ const exact = DURATION_TOKENS.find(t => t.ms === ms);
113
+ if (exact) {
114
+ return [exact];
115
+ }
116
+ let minDist = Infinity;
117
+ for (const entry of DURATION_TOKENS) {
118
+ const dist = Math.abs(entry.ms - ms);
119
+ if (dist < minDist) {
120
+ minDist = dist;
121
+ }
122
+ }
123
+ const closest = DURATION_TOKENS.filter(t => Math.abs(t.ms - ms) === minDist);
124
+ return closest;
125
+ }
126
+ const useTokensMotion = createLintRule({
127
+ meta: {
128
+ name: 'use-tokens-motion',
129
+ type: 'suggestion',
130
+ hasSuggestions: true,
131
+ docs: {
132
+ description: 'Enforces usage of motion design tokens rather than hard-coded duration and easing values.',
133
+ recommended: false,
134
+ severity: 'warn'
135
+ },
136
+ messages: {
137
+ useMotionDurationToken: "Use a motion duration token instead of the hard-coded value '{{ value }}'.",
138
+ useMotionDurationTokenSuggest: 'Replace with {{ suggestion }}.',
139
+ useMotionDurationTokenNearest: "No exact token match for '{{ value }}'. Nearest: {{ suggestion1 }} or {{ suggestion2 }}.",
140
+ useMotionDurationTokenSingleNearest: "No exact token match for '{{ value }}'. Nearest: {{ suggestion }}.",
141
+ useMotionEasingToken: "Use a motion easing token instead of the hard-coded value '{{ value }}'.",
142
+ useMotionEasingTokenSuggest: 'Replace with {{ suggestion }}.',
143
+ useMotionEasingTokenUnknown: "Use a motion easing token from @atlaskit/tokens instead of the hard-coded value '{{ value }}'."
144
+ }
145
+ },
146
+ create(context) {
147
+ let tokensImportNode = null;
148
+ let hasTokenSpecifier = false;
149
+ function buildTokenCall(tokenName, fallback) {
150
+ return `token('${tokenName}', '${fallback}')`;
151
+ }
152
+ function getImportFix(fixer) {
153
+ var _context$sourceCode;
154
+ if (hasTokenSpecifier) {
155
+ return [];
156
+ }
157
+ if (tokensImportNode) {
158
+ // @atlaskit/tokens is imported but without `token` — add `token` to existing import
159
+ const lastSpecifier = tokensImportNode.specifiers[tokensImportNode.specifiers.length - 1];
160
+ if (lastSpecifier) {
161
+ return [fixer.insertTextAfter(lastSpecifier, ', token')];
162
+ }
163
+ // Empty import — replace the whole declaration
164
+ return [fixer.replaceText(tokensImportNode, `import { token } from '@atlaskit/tokens';`)];
165
+ }
166
+ const sourceCode = (_context$sourceCode = context.sourceCode) !== null && _context$sourceCode !== void 0 ? _context$sourceCode : context.getSourceCode();
167
+ const programBody = sourceCode.ast.body;
168
+ // Insert after the last existing import, or at top if no imports exist
169
+ const lastImport = [...programBody].reverse().find(n => n.type === 'ImportDeclaration');
170
+ if (lastImport) {
171
+ return [fixer.insertTextAfter(lastImport, `\nimport { token } from '@atlaskit/tokens';`)];
172
+ }
173
+ if (programBody.length > 0) {
174
+ return [fixer.insertTextBefore(programBody[0], `import { token } from '@atlaskit/tokens';\n`)];
175
+ }
176
+ return [];
177
+ }
178
+
179
+ // Returns autofix string for a single duration value, or null if ambiguous (equidistant)
180
+ function resolveDurationToken(value) {
181
+ const ms = parseDurationMs(value);
182
+ if (ms === null) {
183
+ return null;
184
+ }
185
+ const exact = DURATION_TOKENS.find(t => t.ms === ms);
186
+ if (exact) {
187
+ return buildTokenCall(exact.token, value);
188
+ }
189
+ return null;
190
+ }
191
+ function handleDurationProperty(node, rawValue) {
192
+ const segments = splitOnTopLevelCommas(rawValue);
193
+ if (segments.length === 1) {
194
+ const ms = parseDurationMs(rawValue);
195
+ if (ms === null) {
196
+ return;
197
+ }
198
+ const exactMatch = DURATION_TOKENS.find(t => t.ms === ms);
199
+ if (exactMatch) {
200
+ const suggestion = buildTokenCall(exactMatch.token, rawValue);
201
+ context.report({
202
+ node,
203
+ messageId: 'useMotionDurationToken',
204
+ data: {
205
+ value: rawValue
206
+ },
207
+ suggest: [{
208
+ messageId: 'useMotionDurationTokenSuggest',
209
+ data: {
210
+ suggestion
211
+ },
212
+ fix(fixer) {
213
+ return [...getImportFix(fixer), fixer.replaceText(node.value, suggestion)];
214
+ }
215
+ }]
216
+ });
217
+ } else {
218
+ const result = findClosestDurationTokens(ms);
219
+ if (result.length >= 2) {
220
+ const suggestion1 = buildTokenCall(result[0].token, rawValue);
221
+ const suggestion2 = buildTokenCall(result[1].token, rawValue);
222
+ context.report({
223
+ node,
224
+ messageId: 'useMotionDurationTokenNearest',
225
+ data: {
226
+ value: rawValue,
227
+ suggestion1: `${suggestion1} (${result[0].ms}ms)`,
228
+ suggestion2: `${suggestion2} (${result[1].ms}ms)`
229
+ }
230
+ });
231
+ } else {
232
+ const suggestion = buildTokenCall(result[0].token, rawValue);
233
+ context.report({
234
+ node,
235
+ messageId: 'useMotionDurationTokenSingleNearest',
236
+ data: {
237
+ value: rawValue,
238
+ suggestion: `${suggestion} (${result[0].ms}ms)`
239
+ }
240
+ });
241
+ }
242
+ }
243
+ return;
244
+ }
245
+ const resolved = segments.map(resolveDurationToken);
246
+ if (resolved.some(s => s === null)) {
247
+ return;
248
+ }
249
+ const templateLiteral = '`' + resolved.map(s => `\${${s}}`).join(', ') + '`';
250
+ context.report({
251
+ node,
252
+ messageId: 'useMotionDurationToken',
253
+ data: {
254
+ value: rawValue
255
+ },
256
+ suggest: [{
257
+ messageId: 'useMotionDurationTokenSuggest',
258
+ data: {
259
+ suggestion: templateLiteral
260
+ },
261
+ fix(fixer) {
262
+ return [...getImportFix(fixer), fixer.replaceText(node.value, templateLiteral)];
263
+ }
264
+ }]
265
+ });
266
+ }
267
+
268
+ // Returns autofix string for a single easing value, or null if no token suggestion is possible
269
+ function resolveEasingToken(value) {
270
+ const trimmed = value.trim();
271
+ if (SKIP_EASING_VALUES.has(trimmed)) {
272
+ return null;
273
+ }
274
+ if (trimmed in CSS_KEYWORD_EASING_TOKEN_MAP) {
275
+ return buildTokenCall(CSS_KEYWORD_EASING_TOKEN_MAP[trimmed], trimmed);
276
+ }
277
+ // linear has no curve (0,0,1,1) — warn only, no autofix
278
+ if (trimmed === 'linear') {
279
+ return null;
280
+ }
281
+ if (trimmed.startsWith('linear(')) {
282
+ // linear() is used for spring animations — motion.easing.spring is experimental, skip
283
+ return null;
284
+ }
285
+ const params = parseCubicBezierParams(trimmed);
286
+ if (!params) {
287
+ return null;
288
+ }
289
+ const exact = EASING_TOKENS.find(t => t.value === trimmed);
290
+ if (exact) {
291
+ return buildTokenCall(exact.token, trimmed);
292
+ }
293
+ const closest = findClosestEasingToken(params);
294
+ return closest ? buildTokenCall(closest.token, trimmed) : null;
295
+ }
296
+ function handleEasingProperty(node, rawValue) {
297
+ const segments = splitOnTopLevelCommas(rawValue);
298
+
299
+ // Multi-value path: resolve each segment, autofix only if all resolve cleanly
300
+ if (segments.length > 1) {
301
+ const resolved = segments.map(resolveEasingToken);
302
+ if (resolved.some(s => s === null)) {
303
+ return;
304
+ }
305
+ const templateLiteral = '`' + resolved.map(s => `\${${s}}`).join(', ') + '`';
306
+ context.report({
307
+ node,
308
+ messageId: 'useMotionEasingToken',
309
+ data: {
310
+ value: rawValue
311
+ },
312
+ suggest: [{
313
+ messageId: 'useMotionEasingTokenSuggest',
314
+ data: {
315
+ suggestion: templateLiteral
316
+ },
317
+ fix(fixer) {
318
+ return [...getImportFix(fixer), fixer.replaceText(node.value, templateLiteral)];
319
+ }
320
+ }]
321
+ });
322
+ return;
323
+ }
324
+ const trimmed = rawValue.trim();
325
+ if (SKIP_EASING_VALUES.has(trimmed)) {
326
+ return;
327
+ }
328
+
329
+ // CSS keyword easings: convert to cubic-bezier equivalent and find closest token
330
+ if (trimmed in CSS_KEYWORD_EASING_TOKEN_MAP) {
331
+ const suggestion = buildTokenCall(CSS_KEYWORD_EASING_TOKEN_MAP[trimmed], trimmed);
332
+ context.report({
333
+ node,
334
+ messageId: 'useMotionEasingToken',
335
+ data: {
336
+ value: trimmed
337
+ },
338
+ suggest: [{
339
+ messageId: 'useMotionEasingTokenSuggest',
340
+ data: {
341
+ suggestion
342
+ },
343
+ fix(fixer) {
344
+ return [...getImportFix(fixer), fixer.replaceText(node.value, suggestion)];
345
+ }
346
+ }]
347
+ });
348
+ return;
349
+ }
350
+ // linear has no curve (0,0,1,1) — warn only, no autofix
351
+ if (trimmed === 'linear') {
352
+ context.report({
353
+ node,
354
+ messageId: 'useMotionEasingTokenUnknown',
355
+ data: {
356
+ value: trimmed
357
+ }
358
+ });
359
+ return;
360
+ }
361
+ if (trimmed.startsWith('linear(')) {
362
+ // linear() is used for spring animations — motion.easing.spring is experimental, skip
363
+ return;
364
+ }
365
+ const params = parseCubicBezierParams(trimmed);
366
+ if (!params) {
367
+ context.report({
368
+ node,
369
+ messageId: 'useMotionEasingTokenUnknown',
370
+ data: {
371
+ value: rawValue
372
+ }
373
+ });
374
+ return;
375
+ }
376
+ const exact = EASING_TOKENS.find(t => t.value === trimmed);
377
+ if (exact) {
378
+ const suggestion = buildTokenCall(exact.token, rawValue);
379
+ context.report({
380
+ node,
381
+ messageId: 'useMotionEasingToken',
382
+ data: {
383
+ value: rawValue
384
+ },
385
+ suggest: [{
386
+ messageId: 'useMotionEasingTokenSuggest',
387
+ data: {
388
+ suggestion
389
+ },
390
+ fix(fixer) {
391
+ return [...getImportFix(fixer), fixer.replaceText(node.value, suggestion)];
392
+ }
393
+ }]
394
+ });
395
+ return;
396
+ }
397
+ const closest = findClosestEasingToken(params);
398
+ if (closest) {
399
+ const suggestion = buildTokenCall(closest.token, rawValue);
400
+ context.report({
401
+ node,
402
+ messageId: 'useMotionEasingToken',
403
+ data: {
404
+ value: rawValue
405
+ },
406
+ suggest: [{
407
+ messageId: 'useMotionEasingTokenSuggest',
408
+ data: {
409
+ suggestion
410
+ },
411
+ fix(fixer) {
412
+ return [...getImportFix(fixer), fixer.replaceText(node.value, suggestion)];
413
+ }
414
+ }]
415
+ });
416
+ } else {
417
+ context.report({
418
+ node,
419
+ messageId: 'useMotionEasingTokenUnknown',
420
+ data: {
421
+ value: rawValue
422
+ }
423
+ });
424
+ }
425
+ }
426
+ function handleProperty(node) {
427
+ const key = node.key;
428
+ if (key.type !== 'Identifier') {
429
+ return;
430
+ }
431
+ const isDuration = DURATION_PROPERTIES.has(key.name);
432
+ const isEasing = EASING_PROPERTIES.has(key.name);
433
+ if (!isDuration && !isEasing) {
434
+ return;
435
+ }
436
+ const value = node.value;
437
+ if (value.type === 'TemplateLiteral') {
438
+ // Only handle no-interpolation template literals (e.g. `200ms`) — treat as string
439
+ const tl = value;
440
+ if (tl.expressions.length === 0 && tl.quasis.length === 1) {
441
+ var _tl$quasis$0$value$co;
442
+ const rawValue = (_tl$quasis$0$value$co = tl.quasis[0].value.cooked) !== null && _tl$quasis$0$value$co !== void 0 ? _tl$quasis$0$value$co : tl.quasis[0].value.raw;
443
+ if (isDuration) {
444
+ handleDurationProperty(node, rawValue);
445
+ } else {
446
+ handleEasingProperty(node, rawValue);
447
+ }
448
+ }
449
+ return;
450
+ }
451
+ if (value.type === 'CallExpression') {
452
+ const ce = value;
453
+ if (ce.callee.type === 'Identifier' && ce.callee.name === 'token') {
454
+ return;
455
+ }
456
+ return;
457
+ }
458
+ if (value.type === 'Literal') {
459
+ const lit = value;
460
+ let rawValue;
461
+ if (typeof lit.value === 'string') {
462
+ rawValue = lit.value;
463
+ } else if (typeof lit.value === 'number') {
464
+ // Treat bare numbers as ms
465
+ rawValue = `${lit.value}ms`;
466
+ } else {
467
+ return;
468
+ }
469
+ if (isDuration) {
470
+ handleDurationProperty(node, rawValue);
471
+ } else {
472
+ handleEasingProperty(node, rawValue);
473
+ }
474
+ }
475
+ }
476
+ return {
477
+ ImportDeclaration(node) {
478
+ if (node.source.value === '@atlaskit/tokens') {
479
+ tokensImportNode = node;
480
+ hasTokenSpecifier = node.specifiers.some(s => s.type === 'ImportSpecifier' && s.local.name === 'token');
481
+ }
482
+ },
483
+ Property(node) {
484
+ handleProperty(node);
485
+ }
486
+ };
487
+ }
488
+ });
489
+ export default useTokensMotion;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
- * @codegen <<SignedSource::4cd2dfd73ed3cdd152ee6481087c49ee>>
3
+ * @codegen <<SignedSource::eb0cc6324a0dfa4a3a11b16ab0a6cd4f>>
4
4
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
5
5
  */
6
6
 
@@ -81,6 +81,7 @@ var rules = {
81
81
  '@atlaskit/design-system/use-spotlight-package': 'warn',
82
82
  '@atlaskit/design-system/use-tag-group-label': 'warn',
83
83
  '@atlaskit/design-system/use-textfield-autocomplete': 'warn',
84
+ '@atlaskit/design-system/use-tokens-motion': 'warn',
84
85
  '@atlaskit/design-system/use-tokens-shape': 'error',
85
86
  '@atlaskit/design-system/use-tokens-space': 'error',
86
87
  '@atlaskit/design-system/use-tokens-typography': 'warn',
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
- * @codegen <<SignedSource::8efae2c2e169f84381b978b4bc47433d>>
3
+ * @codegen <<SignedSource::80cbd12c57061c4fb2660da2e808210f>>
4
4
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
5
5
  */
6
6
 
@@ -80,6 +80,7 @@ var rules = {
80
80
  '@atlaskit/design-system/use-spotlight-package': 'warn',
81
81
  '@atlaskit/design-system/use-tag-group-label': 'warn',
82
82
  '@atlaskit/design-system/use-textfield-autocomplete': 'warn',
83
+ '@atlaskit/design-system/use-tokens-motion': 'warn',
83
84
  '@atlaskit/design-system/use-tokens-shape': 'error',
84
85
  '@atlaskit/design-system/use-tokens-space': 'error',
85
86
  '@atlaskit/design-system/use-tokens-typography': 'warn',
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}
3
- * @codegen <<SignedSource::b90bcf0b2fb6429faae59c7a454e3260>>
3
+ * @codegen <<SignedSource::d404a0bd62a78d4bad7ee376df0bd475>>
4
4
  * @codegenCommand yarn workspace @atlaskit/eslint-plugin-design-system codegen
5
5
  */
6
6
 
@@ -78,6 +78,7 @@ import useSimpleForm from './use-simple-form';
78
78
  import useSpotlightPackage from './use-spotlight-package';
79
79
  import useTagGroupLabel from './use-tag-group-label';
80
80
  import useTextfieldAutocomplete from './use-textfield-autocomplete';
81
+ import useTokensMotion from './use-tokens-motion';
81
82
  import useTokensShape from './use-tokens-shape';
82
83
  import useTokensSpace from './use-tokens-space';
83
84
  import useTokensTypography from './use-tokens-typography';
@@ -157,6 +158,7 @@ export var rules = {
157
158
  'use-spotlight-package': useSpotlightPackage,
158
159
  'use-tag-group-label': useTagGroupLabel,
159
160
  'use-textfield-autocomplete': useTextfieldAutocomplete,
161
+ 'use-tokens-motion': useTokensMotion,
160
162
  'use-tokens-shape': useTokensShape,
161
163
  'use-tokens-space': useTokensSpace,
162
164
  'use-tokens-typography': useTokensTypography,