UI Styling Standard

The eslint plugin to enforce and educate on Atlassian's UI Styling Standard

3.0.3

Patch Changes

3.0.2

Patch Changes

3.0.1

Patch Changes

  • 2a6c8a9e812fc, (opens new window) - no-important-styles now reports !important values wrapped in TypeScript expressions, e.g. color: 'red !important' as const, and values inside wrapped style objects such as css({…} as const) or '&:hover': {…} as const. Previously these were skipped.

3.0.0

Major Changes

  • 947cd9330812c, (opens new window) - Remove the no-top-layer-unsafe-selectors rule from the plugin. It was in the all and all-flat presets only, not in recommended. ESLint reports an unknown rule for any config entry or eslint-disable comment that names @atlaskit/ui-styling-standard/no-top-layer-unsafe-selectors, so delete those references.

2.4.1

Patch Changes

  • 3e2e34bcc2601, (opens new window) - no-imported-style-values: no longer reports imported identifiers used in qualified type positions, such as 'value' satisfies typeof Tokens.COLOR_TEXT or 'value' satisfies Theme.Color. These are erased at runtime and are not imported style values.
  • a5979af0b9045, (opens new window) - no-nested-selectors now lints computed keys wrapped in TypeScript expressions (satisfies, as, type assertions, non-null), e.g. ['.foo' satisfies \.${typeof FOO_CLASS}`]`. Previously these keys were silently skipped.

2.4.0

Minor Changes

  • 187f8c82f1f1e, (opens new window) - Raise no-atlaskit-theme from a warning to an error in the recommended config. Imports from @atlaskit/theme now fail lint unless they are removed or disabled.

Patch Changes

  • 9ca54438f46bf, (opens new window) - no-unsafe-selectors now honours chained pseudos in its allowlist. &:focus:not(:focus-visible) was allowlisted but still reported, because each pseudo was checked on its own and :not is not allowed alone. Other uses of :not, such as &:hover:not(:focus-visible), are still reported.
  • 9ca54438f46bf, (opens new window) - no-unsafe-selectors now allows the vendor pseudo-elements that have no standard equivalent: ::-moz-focus-inner, ::-moz-focus-outer, ::-moz-range-progress, ::-moz-range-thumb, ::-moz-range-track, ::-webkit-slider-runnable-track, and ::-webkit-slider-thumb. Other vendor pseudos, such as ::-webkit-scrollbar and ::-ms-clear, are still reported.

2.3.0

Minor Changes

  • 0418e1c376844, (opens new window) - Add the no-top-layer-unsafe-selectors rule. It reports selectors that a Design System layering surface rendered in the browser top layer can wrongly match or wrongly displace, and autofixes most of them to a guarded form with the same specificity. Positional pseudo-classes such as :first-child are reported without a fix, because no guard form for them survives the build.

    The rule is not in the recommended preset, so recommended users see no change. It is in the all and all-flat presets at error, so users of those presets get new errors.

Patch Changes

  • Updated dependencies

2.2.0

Minor Changes

  • a5d06059c9ac7, (opens new window) - Add the no-atlaskit-theme lint rule and enable it as a warning in the recommended config. Imports from @atlaskit/theme are flagged without failing lint.

2.1.10

Patch Changes

  • 62aaaa3da8184, (opens new window) - Speed up the atlaskit-theme lint rule by skipping files that do not import the banned theme mixins, and by checking each Compiled call once instead of every nested identifier.

2.1.9

Patch Changes

2.1.8

Patch Changes

  • 2808e38fa97f7, (opens new window) - Allow static style keys and values annotated with TypeScript satisfies expressions
  • 98d68443fc958, (opens new window) - Handle TypeScript satisfies and assertion wrappers without rejecting safe inline style values or imported type references. Update the Platform ESLint plugin's Compiled ESLint dependency to ^0.20.2 to fix shorthand-property sorting crashes on inline satisfies expressions.

2.1.7

Patch Changes

2.1.6

Patch Changes

  • eac2b82a415cd, (opens new window) - Allow statically written style keys annotated with TypeScript satisfies expressions. no-unsafe-values no longer reports a computed key that unwraps to a string literal, and no-imported-style-values no longer reports imported identifiers used in type positions.

2.1.5

Patch Changes

2.1.4

Patch Changes

2.1.3

Patch Changes

2.1.2

Patch Changes

2.1.1

Patch Changes

  • Updated dependencies

2.1.0

Minor Changes

Patch Changes

  • Updated dependencies

2.0.0

Major Changes

  • f2dc9097319f0, (opens new window) - ### Dropped support for legacy Typescript 4 types. Typescript 5 is now the new minimum.

    Removes the typesVersions property and dist/types-ts4.5 directory from the dist.

    Types are now exclusively via the "types": "dist/types/index.d.ts" property.

    - "typesVersions": { - ">=4.5 <4.9": { - "*": [ - "dist/types-ts4.5/*", - "dist/types-ts4.5/index.d.ts" - ] - } - },

Patch Changes

  • Updated dependencies

1.6.4

Patch Changes

1.6.3

Patch Changes

  • Updated dependencies

1.6.2

Patch Changes

  • 2c00950ad9e0b, (opens new window) - Align no-unsafe-selectors allowed pseudos with @compiled/react CSSPseudos: add &:popover-open and chained pseudos (e.g. &:hover::after, &:focus::before, &:visited:focus) so the constants tuple type-checks. Rule behavior unchanged; only type-sync with the platform.

1.6.1

Patch Changes

1.6.0

Minor Changes

1.5.1

Patch Changes

1.5.0

Minor Changes

  • d2b1c5a27d84a, (opens new window) - Fix two bugs in the no-unused-cssmap-properties rule:
    • Use getDeclaredVariables() instead of scope-based lookup to properly track references across nested scopes
    • Fix isExported false positive by only checking direct export patterns instead of walking full parent tree

1.4.6

Patch Changes

1.4.5

Patch Changes

1.4.4

Patch Changes

1.4.3

Patch Changes

1.4.2

Patch Changes

1.4.1

Patch Changes

  • Updated dependencies

1.4.0

Minor Changes

1.3.0

Minor Changes

Patch Changes

  • Updated dependencies

1.2.0

Minor Changes

Patch Changes

  • Updated dependencies

1.1.1

Patch Changes

  • Updated dependencies

1.1.0

Minor Changes

1.0.4

Patch Changes

1.0.3

Patch Changes

1.0.2

Patch Changes

  • Updated dependencies

1.0.1

Patch Changes

1.0.0

Major Changes

Patch Changes

0.21.0

Minor Changes

0.20.1

Patch Changes

0.20.0

Minor Changes

0.19.1

Patch Changes

0.19.0

Minor Changes

0.18.4

Patch Changes

0.18.3

Patch Changes

0.18.2

Patch Changes

0.18.1

Patch Changes

0.18.0

Minor Changes

0.17.0

Minor Changes

0.16.6

Patch Changes

0.16.5

Patch Changes

0.16.4

Patch Changes

0.16.3

Patch Changes

0.16.2

Patch Changes

0.16.1

Patch Changes

0.16.0

Minor Changes

0.15.2

Patch Changes

0.15.1

Patch Changes

0.15.0

Minor Changes

Patch Changes

  • Updated dependencies

0.14.2

Patch Changes

0.14.1

Patch Changes

0.14.0

Minor Changes

0.13.0

Minor Changes

0.12.0

Minor Changes

0.11.6

Patch Changes

0.11.5

Patch Changes

0.11.4

Patch Changes

0.11.3

Patch Changes

0.11.2

Patch Changes

0.11.1

Patch Changes

0.11.0

Minor Changes

Patch Changes

  • Updated dependencies

0.10.0

Minor Changes

0.9.1

Patch Changes

0.9.0

Minor Changes

Patch Changes

  • Updated dependencies

0.8.4

Patch Changes

0.8.3

Patch Changes

0.8.2

Patch Changes

0.8.1

Patch Changes

0.8.0

Minor Changes

Patch Changes

0.7.2

Patch Changes

0.7.1

Patch Changes

0.7.0

Minor Changes

  • #83454, (opens new window) be8b7ad6ff8e, (opens new window) - Remove name autofixer from consistent-css-prop-usage. Variables for css / xcss / cssMap functions will no longer be required to end with "Styles".

    [BREAKING] Some rule options have been changed:

    • fixNamesOnly and autoFixNames have been removed, as there is no longer an autofixer that enforces variable names.
      • If you use fixNamesOnly: true, we recommend switching to using autoFix: false.
      • Users of the autoFixNames option should remove this from their configuration.
    • autoFix option has been added. This controls whether the remaining autofixers should run or not (e.g. hoisting css function calls, wrapping objects in css function calls), and is true by default.

0.6.3

Patch Changes

0.6.2

Patch Changes

0.6.1

Patch Changes

0.6.0

Minor Changes

0.5.2

Patch Changes

0.5.1

Patch Changes

0.5.0

Minor Changes

0.4.1

Patch Changes

0.4.0

Minor Changes

0.3.0

Minor Changes

  • #74981, (opens new window) 842300de03a1, (opens new window) - Add the following rules:

    • consistent-css-prop-usage: Ensures consistency with css and xcss prop usages
    • no-empty-styled-expression: Forbids any styled expression to be used when passing empty arguments to styled.div() (or other JSX elements).
    • no-exported-css: Forbid exporting css function calls.
    • no-exported-keyframes: Forbid exporting keyframes function calls.
    • no-invalid-css-map: Checks the validity of a CSS map created through cssMap.
  • #72983, (opens new window) 878065bfc4c0, (opens new window) - Adds the following rules to the recommended preset:

    • @atlaskit/design-system/no-css-tagged-template-expression
    • @atlaskit/design-system/no-keyframes-tagged-template-expression
    • @atlaskit/design-system/no-styled-tagged-template-expression

Patch Changes

0.2.1

Patch Changes

0.2.0

Minor Changes

  • #69723, (opens new window) 06cd0f04fefb, (opens new window) - Adds the following rules to the recommended config:
    • local-cx-xcss - Ensures the cx() function is only used within the xcss prop
    • no-supress-xcss - Disallows supressing type violations when using the xcss prop
    • no-js-xcss - Disallows using xcss prop inside JavaScript files

0.1.0

Minor Changes

Was this page helpful?
We use this feedback to improve our documentation.
© 2026 AtlassianTrademark, (opens new window)Privacy, (opens new window)License