Skip to content

Styles: lint theme variables for branch duplicates, missing !default and dead declarations - #35049

Open
EugeniyKiyashko wants to merge 8 commits into
DevExpress:mainfrom
EugeniyKiyashko:chore/scss-no-identical-branch-declarations
Open

Styles: lint theme variables for branch duplicates, missing !default and dead declarations#35049
EugeniyKiyashko wants to merge 8 commits into
DevExpress:mainfrom
EugeniyKiyashko:chore/scss-no-identical-branch-declarations

Conversation

@EugeniyKiyashko

Copy link
Copy Markdown
Contributor

No description provided.

@EugeniyKiyashko EugeniyKiyashko self-assigned this Sep 3, 2026
@EugeniyKiyashko EugeniyKiyashko changed the title Styles: lint theme variables for branch duplicates and missing !default Styles: lint theme variables for branch duplicates, missing !default and dead declarations Sep 3, 2026
@EugeniyKiyashko
EugeniyKiyashko marked this pull request as ready for review September 4, 2026 00:51
Copilot AI lite review requested due to automatic review settings September 4, 2026 00:51
@EugeniyKiyashko
EugeniyKiyashko requested review from a team as code owners September 4, 2026 00:51

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The updated unused-variable test logic can incorrectly treat cross-theme reads as “usage”, potentially hiding theme-specific unused variable declarations.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR strengthens SCSS theme-variable hygiene in devextreme-scss by adding custom Stylelint checks and by normalizing many theme/base variable declarations to be safely overrideable via Sass modules (@use ... with(...)).

Changes:

  • Added a fixable Stylelint rule (dx/module-variable-default) to enforce !default on module-level variables (including those inside @if/@else branches).
  • Refactored many SCSS variable declarations across base/generic/material/fluent to add missing !default and remove/hoist dead or duplicated branch declarations.
  • Updated SCSS repository checks and added rule-level tests for the new Stylelint plugin.
File summaries
File Description
packages/devextreme-scss/tools/stylelint/module-variable-default.mjs New fixable Stylelint rule enforcing !default on module-level $... declarations.
packages/devextreme-scss/tests/stylelint-rule.ts Test helper to run Stylelint plugins against SCSS fixtures (lint + --fix).
packages/devextreme-scss/tests/module-variable-default.test.ts Jest coverage for the new dx/module-variable-default rule (reporting + autofix).
packages/devextreme-scss/tests/unused-elements.test.ts Reworked unused-variable detection logic for SCSS files (variable usage collection).
packages/devextreme-scss/.stylelintrc.json Registers/enables dx/module-variable-default and dx/no-identical-branch-declarations.
packages/devextreme-scss/scss/widgets/material/validation/_sizes.scss Removes duplicated/unused size variable declarations in branches.
packages/devextreme-scss/scss/widgets/material/typography/_sizes.scss Hoists a size constant to module scope with !default.
packages/devextreme-scss/scss/widgets/material/treeView/_sizes.scss Removes duplicated branch declarations and adds !default where needed.
packages/devextreme-scss/scss/widgets/material/textEditor/_sizes.scss Adds !default to module-level size variables previously missing it.
packages/devextreme-scss/scss/widgets/material/textEditor/_index.scss Adds !default to module-level variables for safer overrides.
packages/devextreme-scss/scss/widgets/material/textEditor/_colors.scss Adds !default to derived color/transition variables.
packages/devextreme-scss/scss/widgets/material/textBox/_index.scss Adds !default to computed padding/size variables.
packages/devextreme-scss/scss/widgets/material/tagBox/_sizes.scss Hoists duplicated values / adds !default for consistent overrides.
packages/devextreme-scss/scss/widgets/material/tabs/variables/_sizes.scss Hoists common computed padding out of size branches with !default.
packages/devextreme-scss/scss/widgets/material/switch/_sizes.scss Hoists duplicated variables and adds missing !default.
packages/devextreme-scss/scss/widgets/material/switch/_index.scss Adds !default to module-level transition/shadow variables.
packages/devextreme-scss/scss/widgets/material/splitter/_sizes.scss Adds missing !default to module-level size variable.
packages/devextreme-scss/scss/widgets/material/speedDialAction/_sizes.scss Removes dead vars and adds !default where appropriate.
packages/devextreme-scss/scss/widgets/material/speedDialAction/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/material/slider/_sizes.scss Removes dead/duplicated branch vars.
packages/devextreme-scss/scss/widgets/material/slider/_index.scss Adds !default to module-level slider variables.
packages/devextreme-scss/scss/widgets/material/scrollView/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/scrollable/_sizes.scss Adds !default to module-level scrollbar sizes.
packages/devextreme-scss/scss/widgets/material/scheduler/_index.scss Adds !default to module-level scheduler sizing variables.
packages/devextreme-scss/scss/widgets/material/scheduler/_colors.scss Adds !default to module-level derived color variables.
packages/devextreme-scss/scss/widgets/material/recurrenceEditor/_index.scss Adds !default to module-level spacing variables.
packages/devextreme-scss/scss/widgets/material/rangeSlider/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/radioButton/_index.scss Adds !default to module-level transition variable.
packages/devextreme-scss/scss/widgets/material/progressBar/_index.scss Adds !default to module-level progressbar variables.
packages/devextreme-scss/scss/widgets/material/popup/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/pivotGrid/_index.scss Adds !default to module-level sizing/shadow variables.
packages/devextreme-scss/scss/widgets/material/menuBase/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/menuBase/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/menu/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/list/_index.scss Adds !default to module-level border/padding variables.
packages/devextreme-scss/scss/widgets/material/informer/_colors.scss Adds !default to mode-specific derived colors.
packages/devextreme-scss/scss/widgets/material/htmlEditor/_sizes.scss Hoists duplicated size var out of branches with !default.
packages/devextreme-scss/scss/widgets/material/gridBase/layout/aiChat/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/gridBase/_variables.scss Adds !default to module-level derived grid variables.
packages/devextreme-scss/scss/widgets/material/gridBase/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/material/gridBase/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/material/gridBase/_colors.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/material/gantt/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/gantt/_colors.scss Adds !default in conditional color branches.
packages/devextreme-scss/scss/widgets/material/fileUploader/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/fileUploader/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/fileManager/_sizes.scss Adds !default to module-level derived size variable.
packages/devextreme-scss/scss/widgets/material/fileManager/_colors.scss Removes dead declarations.
packages/devextreme-scss/scss/widgets/material/dropDownEditor/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/material/dropDownButton/_sizes.scss Adds missing !default inside size branches.
packages/devextreme-scss/scss/widgets/material/diagram/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/material/dateView/_index.scss Adds !default to module-level derived variable.
packages/devextreme-scss/scss/widgets/material/dateRangeBox/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/common/_mixins.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/colorView/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/material/checkBox/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/chat/_sizes.scss Hoists duplicated var out of branches with !default.
packages/devextreme-scss/scss/widgets/material/button/_sizes.scss Removes dead vars / ensures remaining module-level vars are !default.
packages/devextreme-scss/scss/widgets/material/button/_colors.scss Adds !default to derived color variable.
packages/devextreme-scss/scss/widgets/material/actionSheet/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/material/_colors.scss Hoists repeated derived variables out of mode blocks with !default.
packages/devextreme-scss/scss/widgets/generic/treeView/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/generic/treeView/_colors.scss Removes dead declarations; adds !default where needed.
packages/devextreme-scss/scss/widgets/generic/treeList/_colors.scss Replaces per-color duplication with a single defaulted assignment.
packages/devextreme-scss/scss/widgets/generic/toast/_index.scss Adds !default to module-level shadow variable.
packages/devextreme-scss/scss/widgets/generic/textEditor/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/generic/textEditor/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/textEditor/_colors.scss Adds !default to derived transition/color variables.
packages/devextreme-scss/scss/widgets/generic/tagBox/_colors.scss Hoists duplicated variable out of color branches with !default.
packages/devextreme-scss/scss/widgets/generic/tabs/variables/_sizes.scss Hoists duplicated vars and sets consistent !default values.
packages/devextreme-scss/scss/widgets/generic/tabs/variables/_colors.scss Removes dead vertical hover var; hoists horizontal hover var with !default.
packages/devextreme-scss/scss/widgets/generic/tabPanel/variables/_borders.scss Removes duplicated per-color blocks; keeps shared defaults.
packages/devextreme-scss/scss/widgets/generic/switch/_index.scss Adds !default to module-level derived vars.
packages/devextreme-scss/scss/widgets/generic/switch/_colors.scss Hoists duplicated readonly background variable out of color branches.
packages/devextreme-scss/scss/widgets/generic/splitter/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/speedDialAction/_sizes.scss Adds !default to per-size variables.
packages/devextreme-scss/scss/widgets/generic/speedDialAction/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/generic/slider/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/slider/_colors.scss Hoists duplicated focused-bg var out of color branches with !default.
packages/devextreme-scss/scss/widgets/generic/scrollable/_sizes.scss Adds !default to module-level scrollbar sizes.
packages/devextreme-scss/scss/widgets/generic/scheduler/_index.scss Adds !default to module-level derived scheduler variables.
packages/devextreme-scss/scss/widgets/generic/recurrenceEditor/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/rangeSlider/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/progressBar/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/generic/popup/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/pivotGrid/_sizes.scss Adds missing !default inside size branches.
packages/devextreme-scss/scss/widgets/generic/menuBase/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/list/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/htmlEditor/_sizes.scss Adds !default to size-branch variables.
packages/devextreme-scss/scss/widgets/generic/gridBase/layout/aiChat/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/gridBase/_variables.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/gridBase/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/generic/gridBase/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/gantt/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/filterBuilder/_colors.scss Hoists duplicated var out of color branches with !default.
packages/devextreme-scss/scss/widgets/generic/fileUploader/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/fileManager/_sizes.scss Hoists duplicated variable out of size branches with !default.
packages/devextreme-scss/scss/widgets/generic/fileManager/_colors.scss Removes dead declarations.
packages/devextreme-scss/scss/widgets/generic/fieldset/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/dropDownEditor/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/diagram/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/dateView/_index.scss Adds !default to module-level derived variable.
packages/devextreme-scss/scss/widgets/generic/contextMenu/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/common/_mixins.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/colorView/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/generic/checkBox/_sizes.scss Hoists duplicated var out of size branches with !default.
packages/devextreme-scss/scss/widgets/generic/checkBox/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/generic/chat/_sizes.scss Hoists duplicated typing-indicator var out of size branches with !default.
packages/devextreme-scss/scss/widgets/generic/button/_sizes.scss Removes dead declarations.
packages/devextreme-scss/scss/widgets/generic/_sizes.scss Adds !default to module-level derived variable.
packages/devextreme-scss/scss/widgets/fluent/validation/_sizes.scss Removes duplicated/unused size variable declarations in branches.
packages/devextreme-scss/scss/widgets/fluent/typography/_sizes.scss Hoists a size constant to module scope with !default.
packages/devextreme-scss/scss/widgets/fluent/treeView/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/fluent/tooltip/_sizes.scss Hoists duplicated font-size var out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/textEditor/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/fluent/textEditor/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/fluent/textEditor/_colors.scss Hoists duplicated outlined bg and adds !default to derived vars.
packages/devextreme-scss/scss/widgets/fluent/tagBox/_sizes.scss Hoists duplicated var out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/tabs/variables/_sizes.scss Hoists computed padding out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/switch/_sizes.scss Hoists duplicated vars out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/switch/_index.scss Adds !default to module-level transition/shadow vars.
packages/devextreme-scss/scss/widgets/fluent/splitter/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/splitter/_colors.scss Hoists duplicated vars out of mode branches with !default.
packages/devextreme-scss/scss/widgets/fluent/speedDialAction/_sizes.scss Adds !default to per-size vars.
packages/devextreme-scss/scss/widgets/fluent/speedDialAction/_index.scss Adds !default to module-level vars.
packages/devextreme-scss/scss/widgets/fluent/slider/_sizes.scss Removes dead/duplicated branch vars.
packages/devextreme-scss/scss/widgets/fluent/scrollView/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/scrollable/_sizes.scss Adds !default to module-level scrollbar sizes.
packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss Adds !default to module-level derived scheduler vars.
packages/devextreme-scss/scss/widgets/fluent/scheduler/_colors.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/fluent/recurrenceEditor/_index.scss Adds !default to module-level spacing vars.
packages/devextreme-scss/scss/widgets/fluent/radioGroup/_sizes.scss Removes duplicated var assignments in branches.
packages/devextreme-scss/scss/widgets/fluent/progressBar/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/progressBar/_colors.scss Adds !default to module-level gradient variables.
packages/devextreme-scss/scss/widgets/fluent/popup/_sizes.scss Hoists duplicated shadows out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/popup/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/pivotGrid/_index.scss Adds !default to module-level sizing/shadow vars.
packages/devextreme-scss/scss/widgets/fluent/numberBox/_sizes.scss Removes duplicated size-branch assignments; keeps a single !default.
packages/devextreme-scss/scss/widgets/fluent/menuBase/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/menuBase/_colors.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/list/_index.scss Adds !default to module-level border vars.
packages/devextreme-scss/scss/widgets/fluent/informer/_colors.scss Adds !default to mode-specific derived colors.
packages/devextreme-scss/scss/widgets/fluent/gridBase/layout/aiChat/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/gridBase/_variables.scss Adds !default to module-level derived grid vars.
packages/devextreme-scss/scss/widgets/fluent/gridBase/_sizes.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/fluent/gridBase/_index.scss Adds !default to module-level vars.
packages/devextreme-scss/scss/widgets/fluent/gridBase/_colors.scss Hoists duplicated vars and adds missing !default.
packages/devextreme-scss/scss/widgets/fluent/gantt/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/form/_sizes.scss Hoists duplicated var out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/fileUploader/_sizes.scss Hoists duplicated var out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/fileUploader/_index.scss Adds !default to module-level vars.
packages/devextreme-scss/scss/widgets/fluent/fileManager/_sizes.scss Adds !default to module-level derived variable.
packages/devextreme-scss/scss/widgets/fluent/fileManager/_colors.scss Removes dead declarations.
packages/devextreme-scss/scss/widgets/fluent/dropDownEditor/_index.scss Adds !default to module-level derived vars.
packages/devextreme-scss/scss/widgets/fluent/dropDownButton/_sizes.scss Adds missing !default inside size branches.
packages/devextreme-scss/scss/widgets/fluent/diagram/_index.scss Adds !default to module-level derived vars.
packages/devextreme-scss/scss/widgets/fluent/dateView/_index.scss Adds !default to module-level derived var.
packages/devextreme-scss/scss/widgets/fluent/dateRangeBox/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/common/_mixins.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/colorView/_index.scss Adds !default to module-level derived vars.
packages/devextreme-scss/scss/widgets/fluent/chat/_sizes.scss Hoists duplicated vars out of branches with !default.
packages/devextreme-scss/scss/widgets/fluent/chat/_colors.scss Hoists duplicated var out of mode blocks with !default.
packages/devextreme-scss/scss/widgets/fluent/calendar/_colors.scss Hoists duplicated var out of mode blocks with !default.
packages/devextreme-scss/scss/widgets/fluent/button/_sizes.scss Hoists duplicated vars out of branches with !default.
packages/devextreme-scss/scss/widgets/fluent/badge/_sizes.scss Hoists duplicated var out of branches with !default.
packages/devextreme-scss/scss/widgets/fluent/actionSheet/_sizes.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/fluent/accordion/_sizes.scss Hoists duplicated var out of branches with !default.
packages/devextreme-scss/scss/widgets/fluent/_sizes.scss Hoists duplicated var out of size branches with !default.
packages/devextreme-scss/scss/widgets/fluent/_colors.scss Adds missing !default to derived color variable.
packages/devextreme-scss/scss/widgets/base/treeView/_common.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/treeList/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/base/scheduler/views/timelines/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/scheduler/views/agenda/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/scheduler/views/_index.scss Adds !default to module-level scheduler sizing variables.
packages/devextreme-scss/scss/widgets/base/scheduler/layout/_header.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/scheduler/_common.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/pivotGrid/_index.scss Adds !default to module-level derived variables.
packages/devextreme-scss/scss/widgets/base/list/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/gridBase/layout/aiChat/_variables.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/gridBase/_variables.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/diagram/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/colorView/_index.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/colorBox/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/cardView/header_panel/_index.scss Adds !default to module-level variable.
packages/devextreme-scss/scss/widgets/base/_slider.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_scrollView.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_resizable.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_recurrenceEditor.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_pagination.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_numberBox.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_mixins.scss Adds !default to module-level constants.
packages/devextreme-scss/scss/widgets/base/_loadIndicator.scss Adds !default to module-level variables.
packages/devextreme-scss/scss/widgets/base/_icon_fonts.scss Makes the $icons map defaultable with !default.
packages/devextreme-scss/scss/widgets/base/_htmlEditor.scss Adds !default to module-level variables/constants.
Review details
  • Files reviewed: 212/212 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/devextreme-scss/tests/unused-elements.test.ts
if (char === ')') depth -= 1;
if (char === '$') {
variableRegex.lastIndex = index;
const [variable] = variableRegex.exec(content) ?? [''];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what do you think about guarding the no-match case here - if exec returns nothing, variable is '' and index += variable.length never advances, so a stray $ spins forever? something like if (!variable) { index += 1; continue; }

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added here 8929fae

Copilot AI review requested due to automatic review settings September 4, 2026 07:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The change set is mechanically consistent but touches a very large surface area of theme/base variables where subtle Sass module override/initialization order effects can cause hard-to-detect styling regressions without full human validation.

Review details
  • Files reviewed: 212/212 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants