Skip to content

refactor/remove scss dependencies#1187

Draft
Arnold Stoba (arnoldstoba) wants to merge 3 commits into
mainfrom
refactor/remove-scss-dependencies
Draft

refactor/remove scss dependencies#1187
Arnold Stoba (arnoldstoba) wants to merge 3 commits into
mainfrom
refactor/remove-scss-dependencies

Conversation

@arnoldstoba

Copy link
Copy Markdown
Contributor

What?

Removes the SCSS/Sass dependency from the component library and switches the icon kit from a generated SCSS stylesheet to pure CSS. Two commits: a breaking icon-kit change (major) and an internal component-library refactor (patch).

Why?

The design system already moved to CSS custom properties synced from Figma (@shopware-ag/meteor-tokens), so the leftover Sass dependency added build complexity for almost no benefit (only ~1 SCSS variable and a few legacy colors were still used). Dropping it gives us plain, modern CSS and removes a build dependency. The icon kit's generated .css was also buggy (emitted unitless width: 20;), so it got fixed along the way.

How?

icon-kit (breaking, major):

  • Fixed the icon-dimension CSS to emit px units and ship it under a stable filename (meteor-icon-kit.css), dropping the content-hashed name.
  • Stopped generating the SCSS stylesheet entirely. Breaking: consumers must import …/meteor-icon-kit.css instead of …/meteor-icon-kit.scss.

component-library (patch):

  • Converted all SCSS (nesting, variables, lighten()/darken()) to plain CSS using native nesting, meteor semantic tokens, and CSS logical properties.
  • Moved non-Figma-synced values (z-index scale, elevation shadow) into a local assets/css/tokens.css; assets/scss/all.scssassets/css/all.css.
  • Removed the sass dependency, the Vite SCSS preprocessor config, and the *.scss sideEffect; repointed the global + Storybook imports at the CSS entry.

Testing?

  • build, lint:css (0 errors), and unit tests pass in both packages.
  • ✅ Verified no SCSS residue remains and the compiled CSS the component library ships is unchanged.
  • ✅ icon-kit Figma sync flow checked statically — the committed meteor-icon-kit.css is byte-identical to what a fresh sync produces.
  • ✅ Manual Storybook pass (light + dark) on the touched components: drag-and-drop directive, selects, popover items, data table, icons.

Anything Else?

  • shopware/shopware: removing the icon-kit .scss is a breaking change — its import likely needs updating to the .css.
  • A few legacy colors were mapped to the closest-fitting semantic tokens (e.g. brand hover/active → --color-text-brand-hover/-pressed), which also gives these spots automatic dark-mode support they previously lacked — worth a quick visual sanity check.
  • mt-data-table.vue was converted to flat selectors (rather than nested) given its size and JS-coupled sticky/scroll logic; its JS-driven positional properties were intentionally kept physical.

@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
meteor-component-library Ready Ready Preview, Comment Jun 29, 2026 2:06pm

Request Review

- Fix the icon dimension CSS to emit `px` units and ship it under a stable filename (`meteor-icon-kit.css`).
- Stop generating the SCSS stylesheet (BREAKING: import the `.css` instead of the `.scss`).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Convert all SCSS (nesting, variables, lighten/darken) to plain CSS with native nesting, meteor tokens, and logical properties; move z-index/shadow into a local tokens.css.
- Drop the sass dependency, Vite SCSS config, and *.scss sideEffect.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant