grafana/packages/grafana-eslint-rules
Ashley Harrison 5e74b6962b
Chore: Add lint rule for no-unreduced-motion (#85862)
* add lint rule for no-unreduced-motion

* update to satisfy types
2024-04-15 09:18:56 +01:00
..
rules Chore: Add lint rule for no-unreduced-motion (#85862) 2024-04-15 09:18:56 +01:00
tests Chore: add some basic validation tests for our eslint rules (#75284) 2023-09-22 13:03:21 +01:00
index.cjs Chore: Add lint rule for no-unreduced-motion (#85862) 2024-04-15 09:18:56 +01:00
LICENSE_APACHE2 Chore: eslint rule for preventing e2e selectors in aria-label (#59731) 2023-01-18 15:02:35 +00:00
package.json Chore: Fix custom eslint rule typechecking (#85886) 2024-04-10 17:12:31 +01:00
README.md Chore: Add lint rule for no-unreduced-motion (#85862) 2024-04-15 09:18:56 +01:00
tsconfig.json Chore: Fix custom eslint rule typechecking (#85886) 2024-04-10 17:12:31 +01:00

Grafana ESLint Rules

This package contains custom eslint rules for use within the Grafana codebase only. They're extremely specific to our codebase, and are of little use to anyone else. They're not published to NPM, and are consumed through the Yarn workspace.

Rules

no-aria-label-selectors

Require aria-label JSX properties to not include selectors from the @grafana/e2e-selectors package.

Previously we hijacked the aria-label property to use as E2E selectors as an attempt to "improve accessibility" while making this easier for testing. However, this lead to many elements having poor, verbose, and unnecessary labels.

Now, we prefer using data-testid for E2E selectors.

no-border-radius-literal

Check if border-radius theme tokens are used.

To improve the consistency across Grafana we encourage devs to use tokens instead of custom values. In this case, we want the borderRadius to use the appropriate token such as theme.shape.radius.default, theme.shape.radius.pill or theme.shape.radius.circle.

no-unreduced-motion

Avoid direct use of animation* or transition* properties.

To account for users with motion sensitivities, these should always be wrapped in a prefers-reduced-motion media query.

@grafana/ui exposes a handledReducedMotion utility function that can be used to handle this.

theme-token-usage

Used to find all instances of theme tokens being used in the codebase and emit the counts as metrics. Should not be used as an actual lint rule!