From: Mark Otto Date: Fri, 6 Mar 2026 16:24:57 +0000 (-0800) Subject: v6: Detect unused Sass imports (#42121) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=be1553ea061d47fe598370bd2019d9e8a3216462;p=thirdparty%2Fbootstrap.git v6: Detect unused Sass imports (#42121) * Remove unused imports * New script * Fix * More unused --- diff --git a/build/check-unused-imports.mjs b/build/check-unused-imports.mjs new file mode 100644 index 0000000000..6ebfa15705 --- /dev/null +++ b/build/check-unused-imports.mjs @@ -0,0 +1,345 @@ +#!/usr/bin/env node + +/*! + * Script to detect unused SCSS @use statements. + * + * Copyright 2017-2026 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ + +import { readFileSync, readdirSync, existsSync } from 'node:fs' +import path from 'node:path' + +const DISABLE_FILE = 'check-unused-imports-disable' +const DISABLE_NEXT_LINE = 'check-unused-imports-disable-next-line' +const DISABLE_LINE = 'check-unused-imports-disable-line' + +function findScssFiles(dirs) { + const files = [] + for (const dir of dirs) { + const resolvedDir = path.resolve(dir) + if (!existsSync(resolvedDir)) { + throw new Error(`Directory does not exist: ${dir}`) + } + + walk(resolvedDir, files) + } + + return files.sort() +} + +function walk(dir, results) { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name) + if (entry.isDirectory()) { + walk(full, results) + } else if (entry.name.endsWith('.scss')) { + results.push(full) + } + } +} + +function parseUseStatements(content) { + const lines = content.split('\n') + const uses = [] + + for (const line of lines) { + const trimmed = line.trim() + if (trimmed === '' || trimmed.startsWith('//')) { + if (trimmed.includes(DISABLE_FILE)) { + return [] + } + + continue + } + + break + } + + for (let i = 0; i < lines.length; i++) { + const trimmed = lines[i].trim() + if (!trimmed.startsWith('@use ')) { + continue + } + + // Suppression comments + if (trimmed.includes(DISABLE_LINE)) { + continue + } + + if (i > 0 && lines[i - 1].trim().includes(DISABLE_NEXT_LINE)) { + continue + } + + if (/\bwith\s*\(/.test(trimmed)) { + continue + } + + const match = trimmed.match(/^@use\s+["']([^"']+)["'](?:\s+as\s+(\*|[\w-]+))?/) + if (!match) { + continue + } + + const modulePath = match[1] + const asClause = match[2] + + let namespace + let isGlob = false + + if (asClause === '*') { + isGlob = true + namespace = '*' + } else if (asClause) { + namespace = asClause + } else { + namespace = modulePath.split('/').at(-1).replace(/^_/, '') + } + + uses.push({ + line: i + 1, + modulePath, + namespace, + isGlob, + isBuiltin: modulePath.startsWith('sass:') + }) + } + + return uses +} + +function resolveModule(modulePath, fromFile) { + if (modulePath.startsWith('sass:')) { + return null + } + + const fromDir = path.dirname(fromFile) + const target = path.resolve(fromDir, modulePath) + const dir = path.dirname(target) + const base = path.basename(target) + + const candidates = [ + path.join(dir, `_${base}.scss`), + `${target}.scss`, + path.join(target, '_index.scss'), + path.join(target, 'index.scss') + ] + + for (const c of candidates) { + if (existsSync(c)) { + return c + } + } + + return null +} + +const exportCache = new Map() + +function getModuleExports(filePath) { + if (!filePath || !existsSync(filePath)) { + return { variables: new Set(), mixins: new Set(), functions: new Set() } + } + + const real = path.resolve(filePath) + if (exportCache.has(real)) { + return exportCache.get(real) + } + + const exports = { variables: new Set(), mixins: new Set(), functions: new Set() } + exportCache.set(real, exports) + + const content = readFileSync(real, 'utf8') + const lines = content.split('\n') + + for (const line of lines) { + const v = line.match(/^\$([a-zA-Z][\w-]*)\s*:/) + if (v) { + exports.variables.add(v[1]) + } + + const m = line.match(/^@mixin\s+([a-zA-Z][\w-]*)/) + if (m) { + exports.mixins.add(m[1]) + } + + const f = line.match(/^@function\s+([a-zA-Z][\w-]*)/) + if (f) { + exports.functions.add(f[1]) + } + } + + for (const line of lines) { + const fwd = line.trim().match(/^@forward\s+["']([^"']+)["']/) + if (fwd) { + const resolved = resolveModule(fwd[1], real) + if (resolved) { + const fwdExports = getModuleExports(resolved) + for (const variable of fwdExports.variables) { + exports.variables.add(variable) + } + + for (const mixin of fwdExports.mixins) { + exports.mixins.add(mixin) + } + + for (const fn of fwdExports.functions) { + exports.functions.add(fn) + } + } + } + } + + return exports +} + +function escapeRegExp(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + +function isNamespaceUsed(namespace, body) { + return new RegExp(`(? 0 || + moduleExports.mixins.size > 0 || + moduleExports.functions.size > 0 + + if (!hasExports) { + return false + } + + return !isGlobImportUsed(moduleExports, body) +} + +function main() { + const args = process.argv.slice(2) + if (args.length === 0) { + console.error('Usage: node check-unused-imports.mjs [dir2] ...') + process.exit(2) + } + + let files + try { + files = findScssFiles(args) + } catch (error) { + console.error(error.message) + process.exit(2) + } + + let total = 0 + for (const file of files) { + const content = readFileSync(file, 'utf8') + const uses = parseUseStatements(content) + if (uses.length === 0) { + continue + } + + const body = getBody(content) + for (const use of uses) { + if (isUseUnused(use, body, file)) { + const rel = path.relative(process.cwd(), file) + console.log(`${rel}:${use.line}\tUnused @use "${use.modulePath}"`) + total++ + } + } + } + + if (total > 0) { + console.log(`\nFound ${total} unused @use statement${total === 1 ? '' : 's'}`) + process.exit(1) + } +} + +main() diff --git a/package.json b/package.json index 736209f048..a47a7c3830 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "css-docs": "node build/generate-utilities-json.mjs", "css-lint": "npm-run-all --aggregate-output --continue-on-error --parallel css-lint-*", "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache", + "css-lint-imports": "node build/check-unused-imports.mjs scss/ site/src/scss/", "css-lint-vars": "fusv scss/ site/src/scss/", "css-minify": "npm-run-all --aggregate-output --parallel css-minify-*", "css-minify-main": "node build/css-minify.mjs", diff --git a/scss/_accordion.scss b/scss/_accordion.scss index 5105ab7315..f5c2cba8ef 100644 --- a/scss/_accordion.scss +++ b/scss/_accordion.scss @@ -1,6 +1,3 @@ -@use "sass:map"; -@use "config" as *; -@use "variables" as *; @use "functions" as *; @use "mixins/border-radius" as *; @use "mixins/transition" as *; diff --git a/scss/_alert.scss b/scss/_alert.scss index 224d97ecad..ede03afeb2 100644 --- a/scss/_alert.scss +++ b/scss/_alert.scss @@ -1,7 +1,5 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; -@use "theme" as *; @use "variables" as *; @use "mixins/border-radius" as *; @use "mixins/tokens" as *; diff --git a/scss/_avatar.scss b/scss/_avatar.scss index 01ec65bdf9..e1171d09c4 100644 --- a/scss/_avatar.scss +++ b/scss/_avatar.scss @@ -1,7 +1,5 @@ @use "sass:map"; @use "functions" as *; -@use "variables" as *; -@use "theme" as *; @use "mixins/border-radius" as *; @use "mixins/transition" as *; @use "mixins/tokens" as *; diff --git a/scss/_badge.scss b/scss/_badge.scss index 105d3dcf6a..5679e54c8d 100644 --- a/scss/_badge.scss +++ b/scss/_badge.scss @@ -1,8 +1,4 @@ -@use "sass:map"; -@use "colors" as *; @use "functions" as *; -@use "variables" as *; -@use "theme" as *; @use "mixins/border-radius" as *; @use "mixins/gradients" as *; @use "mixins/tokens" as *; diff --git a/scss/_breadcrumb.scss b/scss/_breadcrumb.scss index 1f4bb9f1e1..1f49d6b020 100644 --- a/scss/_breadcrumb.scss +++ b/scss/_breadcrumb.scss @@ -1,7 +1,3 @@ -@use "sass:map"; -@use "sass:string"; -@use "config" as *; -@use "variables" as *; @use "functions" as *; @use "mixins/border-radius" as *; @use "mixins/transition" as *; diff --git a/scss/_card.scss b/scss/_card.scss index b2e51ccf3b..1548d13a5b 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -1,4 +1,3 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; @use "variables" as *; @@ -191,7 +190,6 @@ $card-tokens: defaults( @include border-bottom-radius(var(--card-inner-border-radius)); } - .card-row { flex-direction: row; diff --git a/scss/_carousel.scss b/scss/_carousel.scss index db3efc2eb1..99bd8e9c14 100644 --- a/scss/_carousel.scss +++ b/scss/_carousel.scss @@ -1,10 +1,7 @@ -@use "sass:map"; @use "config" as *; @use "colors" as *; @use "functions" as *; -@use "variables" as *; @use "mixins/transition" as *; -@use "mixins/gradients" as *; @use "mixins/color-mode" as *; @use "mixins/tokens" as *; @@ -112,7 +109,6 @@ $carousel-dark-tokens: defaults( transform: translateX(-100%); } - // // Alternate transitions // @@ -139,7 +135,6 @@ $carousel-dark-tokens: defaults( } } - // // Left/right controls for nav // @@ -249,7 +244,6 @@ $carousel-dark-tokens: defaults( } } - // Optional captions // // diff --git a/scss/_chip.scss b/scss/_chip.scss index 013262d923..dae2f8dbf8 100644 --- a/scss/_chip.scss +++ b/scss/_chip.scss @@ -1,8 +1,4 @@ -@use "sass:map"; -@use "colors" as *; @use "functions" as *; -@use "variables" as *; -@use "theme" as *; @use "mixins/border-radius" as *; @use "mixins/focus-ring" as *; @use "mixins/tokens" as *; diff --git a/scss/_colors.scss b/scss/_colors.scss index af7f03ce41..662f8b23a3 100644 --- a/scss/_colors.scss +++ b/scss/_colors.scss @@ -1,5 +1,3 @@ -@use "config" as *; - // stylelint-disable hue-degree-notation, @stylistic/number-leading-zero // Easily convert colors to oklch() with https://oklch.com/ diff --git a/scss/_datepicker.scss b/scss/_datepicker.scss index f606e0579e..94b2c86386 100644 --- a/scss/_datepicker.scss +++ b/scss/_datepicker.scss @@ -1,8 +1,5 @@ // stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection -@use "sass:map"; -@use "config" as *; -@use "colors" as *; @use "functions" as *; @use "variables" as *; @use "mixins/border-radius" as *; @@ -206,7 +203,6 @@ $datepicker-tokens: defaults( } } - [data-vc="content"] { display: flex; flex-grow: 1; @@ -356,7 +352,6 @@ $datepicker-tokens: defaults( background-color: var(--datepicker-day-today-bg); } - // Outside month [data-vc-date-month="next"] [data-vc-date-btn], [data-vc-date-month="prev"] [data-vc-date-btn] { diff --git a/scss/_dropdown.scss b/scss/_dropdown.scss index 4f77947201..6a918d66e2 100644 --- a/scss/_dropdown.scss +++ b/scss/_dropdown.scss @@ -1,13 +1,10 @@ -@use "sass:map"; @use "config" as *; -@use "colors" as *; @use "functions" as *; @use "variables" as *; @use "mixins/border-radius" as *; @use "mixins/box-shadow" as *; @use "mixins/gradients" as *; @use "mixins/tokens" as *; -@use "mixins/transition" as *; $dropdown-tokens: () !default; diff --git a/scss/_list-group.scss b/scss/_list-group.scss index dca7665b4b..1d78eadac5 100644 --- a/scss/_list-group.scss +++ b/scss/_list-group.scss @@ -1,6 +1,4 @@ @use "sass:map"; -@use "colors" as *; -@use "theme" as *; @use "config" as *; @use "functions" as *; @use "variables" as *; @@ -176,7 +174,6 @@ $list-group-tokens: defaults( } } - // Flush list items // // Remove borders and border-radius to keep list group items edge-to-edge. Most diff --git a/scss/_nav.scss b/scss/_nav.scss index 1d1c366f1b..4feeaa48c2 100644 --- a/scss/_nav.scss +++ b/scss/_nav.scss @@ -1,5 +1,3 @@ -@use "sass:map"; -@use "config" as *; @use "functions" as *; @use "variables" as *; @use "mixins/border-radius" as *; @@ -184,7 +182,6 @@ $nav-underline-tokens: defaults( } } - // // Pills // @@ -201,7 +198,6 @@ $nav-underline-tokens: defaults( } } - // // Underline // @@ -230,7 +226,6 @@ $nav-underline-tokens: defaults( } } - // // Justified variants // @@ -259,7 +254,6 @@ $nav-underline-tokens: defaults( } } - // Tabbable tabs // // Hide tabbable panes to start, show them when `.active` diff --git a/scss/_navbar.scss b/scss/_navbar.scss index 2aeb88d44d..19936b6421 100644 --- a/scss/_navbar.scss +++ b/scss/_navbar.scss @@ -1,6 +1,5 @@ @use "sass:map"; @use "config" as *; -@use "colors" as *; @use "functions" as *; @use "variables" as *; @use "layout/breakpoints" as *; @@ -99,7 +98,6 @@ $navbar-dark-tokens: defaults( } } - // Navbar brand // // Used for brand, project, or site names. @@ -119,7 +117,6 @@ $navbar-dark-tokens: defaults( } } - // Navbar nav // // Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`). @@ -154,7 +151,6 @@ $navbar-dark-tokens: defaults( // } } - // Navbar text // // @@ -172,7 +168,6 @@ $navbar-dark-tokens: defaults( } } - // Responsive navbar // // Custom styles for responsive collapsing and toggling of navbar contents. diff --git a/scss/_pagination.scss b/scss/_pagination.scss index 55a677c892..807e3f2dac 100644 --- a/scss/_pagination.scss +++ b/scss/_pagination.scss @@ -1,7 +1,4 @@ -@use "sass:map"; -@use "config" as *; @use "functions" as *; -@use "variables" as *; @use "mixins/lists" as *; @use "mixins/border-radius" as *; @use "mixins/focus-ring" as *; @@ -120,7 +117,6 @@ $pagination-sizes: defaults( } } - // // Sizing // diff --git a/scss/_placeholder.scss b/scss/_placeholder.scss index 5638c81a4b..d15e984618 100644 --- a/scss/_placeholder.scss +++ b/scss/_placeholder.scss @@ -1,8 +1,5 @@ -@use "sass:map"; @use "colors" as *; -@use "config" as *; @use "functions" as *; -@use "variables" as *; @use "mixins/tokens" as *; $placeholder-tokens: () !default; diff --git a/scss/_popover.scss b/scss/_popover.scss index 1653b5945a..f54d3b4aa2 100644 --- a/scss/_popover.scss +++ b/scss/_popover.scss @@ -1,4 +1,3 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; @use "variables" as *; diff --git a/scss/_progress.scss b/scss/_progress.scss index d232d932cd..7e905fad5d 100644 --- a/scss/_progress.scss +++ b/scss/_progress.scss @@ -1,8 +1,5 @@ -@use "sass:map"; @use "config" as *; -@use "colors" as *; @use "functions" as *; -@use "variables" as *; @use "mixins/transition" as *; @use "mixins/gradients" as *; @use "mixins/border-radius" as *; @@ -29,7 +26,6 @@ $progress-tokens: defaults( ); // scss-docs-end progress-tokens - // Disable animation if transitions are disabled @layer components { diff --git a/scss/_root.scss b/scss/_root.scss index cfc32d9e2b..294e170c6b 100644 --- a/scss/_root.scss +++ b/scss/_root.scss @@ -1,12 +1,9 @@ -@use "sass:meta"; @use "sass:map"; @use "colors" as *; -@use "config" as *; @use "functions" as *; @use "variables" as *; @use "theme" as *; // @use "maps" as *; -@use "mixins/color-mode" as *; @use "mixins/tokens" as *; @use "forms/form-variables" as *; diff --git a/scss/_spinner.scss b/scss/_spinner.scss index 3a2f848889..5520c46926 100644 --- a/scss/_spinner.scss +++ b/scss/_spinner.scss @@ -1,7 +1,5 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; -@use "variables" as *; @use "mixins/tokens" as *; // stylelint-disable custom-property-no-missing-var-function diff --git a/scss/_stepper.scss b/scss/_stepper.scss index b8794133cc..bd2bf4e0fa 100644 --- a/scss/_stepper.scss +++ b/scss/_stepper.scss @@ -1,13 +1,9 @@ @use "sass:map"; @use "config" as *; @use "functions" as *; -@use "variables" as *; @use "layout/breakpoints" as *; @use "mixins/border-radius" as *; -@use "mixins/box-shadow" as *; -@use "mixins/gradients" as *; @use "mixins/tokens" as *; -@use "mixins/transition" as *; $stepper-tokens: () !default; @@ -79,7 +75,6 @@ $stepper-tokens: defaults( text-align: center; text-decoration: none; - // The counter &::before { position: relative; diff --git a/scss/_theme.scss b/scss/_theme.scss index 42b4671093..7378f22fe3 100644 --- a/scss/_theme.scss +++ b/scss/_theme.scss @@ -1,7 +1,5 @@ @use "sass:meta"; @use "sass:map"; -@use "config" as *; -@use "colors" as *; @function theme-color-values($key) { $result: (); diff --git a/scss/_toasts.scss b/scss/_toasts.scss index ba8d4eb4e0..20c8ebcef8 100644 --- a/scss/_toasts.scss +++ b/scss/_toasts.scss @@ -1,4 +1,3 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; @use "variables" as *; diff --git a/scss/_tooltip.scss b/scss/_tooltip.scss index ba6e034f08..0ee7fcff50 100644 --- a/scss/_tooltip.scss +++ b/scss/_tooltip.scss @@ -1,13 +1,10 @@ -@use "sass:map"; @use "config" as *; @use "functions" as *; @use "variables" as *; @use "mixins/border-radius" as *; -@use "mixins/deprecate" as *; @use "mixins/reset-text" as *; @use "mixins/tokens" as *; - $tooltip-tokens: () !default; // scss-docs-start tooltip-tokens diff --git a/scss/_transitions.scss b/scss/_transitions.scss index de779ea6b2..04f5ba152c 100644 --- a/scss/_transitions.scss +++ b/scss/_transitions.scss @@ -1,4 +1,3 @@ -@use "config" as *; @use "variables" as *; @use "mixins/transition" as *; diff --git a/scss/_utilities.scss b/scss/_utilities.scss index 99a3eb15dc..4aadac1033 100644 --- a/scss/_utilities.scss +++ b/scss/_utilities.scss @@ -1,6 +1,5 @@ @use "sass:map"; @use "config" as *; -@use "colors" as *; @use "variables" as *; @use "functions" as *; @use "theme" as *; diff --git a/scss/_variables.scss b/scss/_variables.scss index 82eda4a411..552d0ddc9c 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -1,6 +1,3 @@ -@use "sass:color"; -@use "sass:map"; -@use "sass:string"; @use "colors" as *; @use "config" as *; @use "functions" as *; @@ -92,7 +89,6 @@ $icon-link-icon-transform: translate3d(.25em, 0, 0) !default; $paragraph-margin-bottom: 1rem !default; - // Components // // Define common padding and border radius sizes and more. diff --git a/scss/bootstrap-grid.scss b/scss/bootstrap-grid.scss index 0b3abbaddf..75b291e71b 100644 --- a/scss/bootstrap-grid.scss +++ b/scss/bootstrap-grid.scss @@ -2,10 +2,7 @@ $file: "Grid" ); -@use "sass:map"; -@use "colors" as *; @use "config" as *; -@use "variables" as *; @use "functions" as *; // @use "maps" as *; @@ -56,4 +53,5 @@ $utilities: map-get-multiple( ) ); +// check-unused-imports-disable-next-line — side-effect import: generates utility CSS. @use "utilities/api"; diff --git a/scss/buttons/_button-group.scss b/scss/buttons/_button-group.scss index ff98881330..68d6634db4 100644 --- a/scss/buttons/_button-group.scss +++ b/scss/buttons/_button-group.scss @@ -1,7 +1,4 @@ -@use "../config" as *; -@use "../variables" as *; @use "../mixins/border-radius" as *; -@use "../mixins/box-shadow" as *; @layer components { // Make the div behave like a button diff --git a/scss/buttons/_button.scss b/scss/buttons/_button.scss index 55b41bd890..58ffe2e2f3 100644 --- a/scss/buttons/_button.scss +++ b/scss/buttons/_button.scss @@ -1,17 +1,12 @@ -@use "sass:color"; @use "sass:list"; @use "sass:map"; @use "sass:meta"; @use "sass:string"; -@use "../colors" as *; @use "../config" as *; -@use "../theme" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/box-shadow" as *; @use "../mixins/focus-ring" as *; -@use "../mixins/gradients" as *; @use "../mixins/tokens" as *; @use "../mixins/transition" as *; @@ -166,7 +161,6 @@ $button-variants: defaults( // scss-docs-end btn-variants // stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default - // // Base styles // @@ -238,7 +232,6 @@ $btn-variant-selectors: () !default; } } - // Main button style generator mixin // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.) // scss-docs-start btn-variant-mixin @@ -269,7 +262,6 @@ $btn-variant-selectors: () !default; } } - &:hover { @each $property, $value in map.get($button-variants, $variant, "hover") { @if $value == "transparent" { @@ -346,7 +338,6 @@ $btn-variant-selectors: () !default; // No need for an active state here } - // // Button Sizes // diff --git a/scss/buttons/_close.scss b/scss/buttons/_close.scss index 25bbd5b728..96f08a7cf8 100644 --- a/scss/buttons/_close.scss +++ b/scss/buttons/_close.scss @@ -1,10 +1,5 @@ -@use "sass:map"; -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; -@use "../mixins/color-mode" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; diff --git a/scss/content/_images.scss b/scss/content/_images.scss index 31dec660c7..efad765dde 100644 --- a/scss/content/_images.scss +++ b/scss/content/_images.scss @@ -1,7 +1,4 @@ -@use "sass:map"; -@use "../config" as *; @use "../functions" as *; -@use "../variables" as *; @use "../mixins/image" as *; @use "../mixins/border-radius" as *; @use "../mixins/box-shadow" as *; diff --git a/scss/content/_prose.scss b/scss/content/_prose.scss index 4e42dc8617..e1f549cab2 100644 --- a/scss/content/_prose.scss +++ b/scss/content/_prose.scss @@ -1,5 +1,3 @@ -@use "sass:map"; -@use "../config" as *; @use "../functions" as *; @use "../mixins/tokens" as *; @use "../mixins/transition" as *; diff --git a/scss/content/_reboot.scss b/scss/content/_reboot.scss index 43a8dc2961..c6e547325c 100644 --- a/scss/content/_reboot.scss +++ b/scss/content/_reboot.scss @@ -1,4 +1,3 @@ -@use "sass:map"; @use "../colors" as *; @use "../config" as *; @use "../functions" as *; @@ -47,7 +46,6 @@ $reboot-mark-tokens: defaults( // // Normalize is licensed MIT. https://github.com/necolas/normalize.css - // Document // // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. @@ -58,7 +56,6 @@ $reboot-mark-tokens: defaults( box-sizing: border-box; } - // Root // // Ability to the value of the root font sizes, affecting the value of `rem`. @@ -75,7 +72,6 @@ $reboot-mark-tokens: defaults( } } - // Body // // 1. Remove the margin in all browsers. @@ -104,7 +100,6 @@ $reboot-mark-tokens: defaults( border-block-start: var(--border-width) solid var(--hr-border-color); } - // Typography // // 1. Remove top margins from headings @@ -157,7 +152,6 @@ $reboot-mark-tokens: defaults( font-size: $h6-font-size; } - // Reset margins on paragraphs // // Similarly, the top margin on `

`s get reset. However, we also reset the @@ -168,7 +162,6 @@ $reboot-mark-tokens: defaults( margin-bottom: $paragraph-margin-bottom; } - // Abbreviations // // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari. @@ -181,7 +174,6 @@ $reboot-mark-tokens: defaults( text-decoration-skip-ink: none; // 3 } - // Address address { @@ -190,7 +182,6 @@ $reboot-mark-tokens: defaults( line-height: inherit; } - // Lists ol, @@ -223,7 +214,6 @@ $reboot-mark-tokens: defaults( margin-bottom: .5rem; } - // Blockquote blockquote { @@ -233,7 +223,6 @@ $reboot-mark-tokens: defaults( } } - // Strong // // Add the correct font weight in Chrome, Edge, and Safari @@ -243,7 +232,6 @@ $reboot-mark-tokens: defaults( font-weight: $font-weight-bolder; } - // Small // // Add the correct font size in all browsers @@ -253,7 +241,6 @@ $reboot-mark-tokens: defaults( font-size: var(--small-font-size, var(--font-size-sm)); } - // Mark mark, @@ -264,7 +251,6 @@ $reboot-mark-tokens: defaults( background-color: var(--mark-bg); } - // Sub and Sup // // Prevent `sub` and `sup` elements from affecting the line height in @@ -281,7 +267,6 @@ $reboot-mark-tokens: defaults( sub { bottom: -.25em; } sup { top: -.5em; } - // Links a { @@ -310,7 +295,6 @@ $reboot-mark-tokens: defaults( } } - // Code pre, @@ -367,7 +351,6 @@ $reboot-mark-tokens: defaults( } } - // Figures // // Apply a consistent margin strategy (matches our type styles). @@ -376,7 +359,6 @@ $reboot-mark-tokens: defaults( margin: 0 0 1rem; } - // Images and content img, @@ -384,7 +366,6 @@ $reboot-mark-tokens: defaults( vertical-align: middle; } - // Tables // // Prevent double borders @@ -424,7 +405,6 @@ $reboot-mark-tokens: defaults( border-width: 0; } - // Forms // // 1. Allow labels to use `margin` for spacing. @@ -613,7 +593,6 @@ $reboot-mark-tokens: defaults( padding: 0; } - // 1. Inherit font family and line height for file input buttons // 2. Correct the inability to style clickable types in iOS and Safari. @@ -643,7 +622,6 @@ $reboot-mark-tokens: defaults( cursor: pointer; } - // Progress // // Add the correct vertical alignment in Chrome, Firefox, and Opera. @@ -652,7 +630,6 @@ $reboot-mark-tokens: defaults( vertical-align: baseline; } - // Hidden attribute // // Always hide an element with the `hidden` HTML attribute. diff --git a/scss/content/_tables.scss b/scss/content/_tables.scss index 0121d40dbc..a817ac3a17 100644 --- a/scss/content/_tables.scss +++ b/scss/content/_tables.scss @@ -1,8 +1,5 @@ -@use "sass:color"; @use "sass:map"; @use "../config" as *; -@use "../colors" as *; -@use "../theme" as *; @use "../variables" as *; @use "../functions" as *; @use "../layout/breakpoints" as *; @@ -97,7 +94,6 @@ $table-striped-columns-order: even !default; caption-side: top; } - // // Condensed table w/ half padding // @@ -110,7 +106,6 @@ $table-striped-columns-order: even !default; } } - // Border versions // // Add or remove borders all around the table and between all the columns. diff --git a/scss/content/_type.scss b/scss/content/_type.scss index 6aa06e325a..fec15e147e 100644 --- a/scss/content/_type.scss +++ b/scss/content/_type.scss @@ -1,7 +1,4 @@ -@use "sass:map"; -@use "../config" as *; @use "../functions" as *; -@use "../variables" as *; @use "../mixins/lists" as *; @use "../mixins/tokens" as *; @@ -45,7 +42,6 @@ $blockquote-tokens: defaults( } } - // // Misc // diff --git a/scss/forms/_check.scss b/scss/forms/_check.scss index 92a0e04d7b..c632213811 100644 --- a/scss/forms/_check.scss +++ b/scss/forms/_check.scss @@ -1,14 +1,6 @@ -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; -@use "sass:map"; -@use "../mixins/border-radius" as *; -@use "../mixins/color-mode" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; -@use "../mixins/transition" as *; -@use "form-variables" as *; // stylelint-disable custom-property-no-missing-var-function $check-tokens: () !default; diff --git a/scss/forms/_chip-input.scss b/scss/forms/_chip-input.scss index c53f084da7..b6798093a9 100644 --- a/scss/forms/_chip-input.scss +++ b/scss/forms/_chip-input.scss @@ -1,14 +1,7 @@ -@use "sass:map"; -@use "../config" as *; -@use "../variables" as *; @use "../functions" as *; -@use "../theme" as *; @use "../mixins/border-radius" as *; -@use "../mixins/box-shadow" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; -@use "../mixins/transition" as *; -@use "form-variables" as *; $chip-input-tokens: () !default; diff --git a/scss/forms/_floating-labels.scss b/scss/forms/_floating-labels.scss index b562e3fc66..8a751960b6 100644 --- a/scss/forms/_floating-labels.scss +++ b/scss/forms/_floating-labels.scss @@ -1,13 +1,7 @@ -@use "sass:map"; -@use "sass:math"; -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/tokens" as *; @use "../mixins/transition" as *; -@use "form-variables" as *; $form-floating-tokens: () !default; diff --git a/scss/forms/_form-adorn.scss b/scss/forms/_form-adorn.scss index 5aa26a15d4..bd33d923af 100644 --- a/scss/forms/_form-adorn.scss +++ b/scss/forms/_form-adorn.scss @@ -1,13 +1,6 @@ -@use "sass:map"; -@use "../config" as *; -@use "../variables" as *; @use "../functions" as *; -@use "../mixins/border-radius" as *; -@use "../mixins/box-shadow" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; -@use "../mixins/transition" as *; -@use "form-variables" as *; $form-adorn-tokens: () !default; diff --git a/scss/forms/_form-control.scss b/scss/forms/_form-control.scss index 5c73b380c1..134160e2f1 100644 --- a/scss/forms/_form-control.scss +++ b/scss/forms/_form-control.scss @@ -1,16 +1,10 @@ -@use "sass:map"; -@use "sass:math"; -@use "../config" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/box-shadow" as *; -@use "../mixins/color-mode" as *; @use "../mixins/focus-ring" as *; @use "../mixins/gradients" as *; @use "../mixins/tokens" as *; @use "../mixins/transition" as *; -@use "form-variables" as *; $form-control-tokens: () !default; diff --git a/scss/forms/_form-range.scss b/scss/forms/_form-range.scss index b40fdfe011..19a1b5c5a6 100644 --- a/scss/forms/_form-range.scss +++ b/scss/forms/_form-range.scss @@ -1,6 +1,4 @@ -@use "../config" as *; @use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/box-shadow" as *; @@ -8,8 +6,6 @@ @use "../mixins/transition" as *; @use "../mixins/gradients" as *; @use "../mixins/tokens" as *; -@use "sass:map"; -@use "form-variables" as *; $range-tokens: () !default; @@ -80,7 +76,6 @@ $range-tokens: defaults( &:focus { outline: 0; - // Pseudo-elements must be split across multiple rulesets to have an effect. &::-webkit-slider-thumb { @include focus-ring(true); diff --git a/scss/forms/_form-text.scss b/scss/forms/_form-text.scss index 79b5298f2f..b2d1b3f76d 100644 --- a/scss/forms/_form-text.scss +++ b/scss/forms/_form-text.scss @@ -1,5 +1,3 @@ -@use "sass:map"; -@use "../config" as *; @use "../functions" as *; @use "../mixins/tokens" as *; diff --git a/scss/forms/_form-variables.scss b/scss/forms/_form-variables.scss index 6c970530fb..c24a20f5aa 100644 --- a/scss/forms/_form-variables.scss +++ b/scss/forms/_form-variables.scss @@ -1,7 +1,3 @@ -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; - // scss-docs-start form-feedback-variables $form-feedback-margin-top: .5rem !default; $form-feedback-font-size: var(--font-size-xs) !default; diff --git a/scss/forms/_input-group.scss b/scss/forms/_input-group.scss index 7f8a170e9e..bf21654e36 100644 --- a/scss/forms/_input-group.scss +++ b/scss/forms/_input-group.scss @@ -1,8 +1,5 @@ @use "sass:map"; @use "sass:string"; -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/tokens" as *; @@ -72,7 +69,6 @@ $input-group-sizes: defaults( } } - // Textual addons // // Serves as a catch-all element for any text or radio/checkbox input you wish @@ -93,7 +89,6 @@ $input-group-sizes: defaults( @include border-radius(var(--btn-input-border-radius)); } - // Sizing // // Remix the default form control sizing classes into new ones for easier diff --git a/scss/forms/_labels.scss b/scss/forms/_labels.scss index f573b5b770..a9a4cd9053 100644 --- a/scss/forms/_labels.scss +++ b/scss/forms/_labels.scss @@ -1,7 +1,4 @@ -@use "sass:map"; -@use "../variables" as *; @use "../functions" as *; -@use "form-variables" as *; $form-label-tokens: () !default; diff --git a/scss/forms/_otp-input.scss b/scss/forms/_otp-input.scss index aea7495e62..a77772feba 100644 --- a/scss/forms/_otp-input.scss +++ b/scss/forms/_otp-input.scss @@ -1,8 +1,4 @@ -@use "../config" as *; -@use "../variables" as *; @use "../functions" as *; -@use "sass:map"; -@use "form-variables" as *; @use "../mixins/border-radius" as *; @use "../mixins/tokens" as *; diff --git a/scss/forms/_radio.scss b/scss/forms/_radio.scss index 5c5b26058f..f92d53eb3f 100644 --- a/scss/forms/_radio.scss +++ b/scss/forms/_radio.scss @@ -1,14 +1,6 @@ -@use "../config" as *; -@use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; -@use "sass:map"; -@use "../mixins/border-radius" as *; -@use "../mixins/color-mode" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; -@use "../mixins/transition" as *; -@use "form-variables" as *; // stylelint-disable custom-property-no-missing-var-function $radio-tokens: () !default; diff --git a/scss/forms/_strength.scss b/scss/forms/_strength.scss index 7252342431..61b2f14821 100644 --- a/scss/forms/_strength.scss +++ b/scss/forms/_strength.scss @@ -1,12 +1,8 @@ @use "sass:list"; -@use "sass:map"; -@use "../config" as *; -@use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; @use "../mixins/tokens" as *; @use "../mixins/transition" as *; -@use "form-variables" as *; // stylelint-disable custom-property-no-missing-var-function $strength-tokens: () !default; diff --git a/scss/forms/_switch.scss b/scss/forms/_switch.scss index 59bbe89fb8..50d07d82e3 100644 --- a/scss/forms/_switch.scss +++ b/scss/forms/_switch.scss @@ -1,15 +1,7 @@ -@use "../config" as *; @use "../colors" as *; -@use "../variables" as *; @use "../functions" as *; -@use "sass:map"; -@use "../mixins/border-radius" as *; -@use "../mixins/box-shadow" as *; -@use "../mixins/color-mode" as *; @use "../mixins/focus-ring" as *; @use "../mixins/tokens" as *; -@use "../mixins/transition" as *; -@use "form-variables" as *; // stylelint-disable custom-property-no-missing-var-function $switch-tokens: () !default; diff --git a/scss/forms/_validation.scss b/scss/forms/_validation.scss index 87f0a1473b..423b4171ac 100644 --- a/scss/forms/_validation.scss +++ b/scss/forms/_validation.scss @@ -2,7 +2,6 @@ @use "../variables" as *; @use "../functions" as *; @use "../mixins/border-radius" as *; -@use "../mixins/box-shadow" as *; @use "../mixins/focus-ring" as *; @use "form-variables" as *; @use "../tooltip" as *; // bring in tooltip variables diff --git a/scss/helpers/_focus-ring.scss b/scss/helpers/_focus-ring.scss index 602c033365..9497156893 100644 --- a/scss/helpers/_focus-ring.scss +++ b/scss/helpers/_focus-ring.scss @@ -1,5 +1,3 @@ -@use "../config" as *; - @layer helpers { .focus-ring:focus-visible { outline: var(--focus-ring); diff --git a/scss/helpers/_icon-link.scss b/scss/helpers/_icon-link.scss index 591be0260c..05ea763e9d 100644 --- a/scss/helpers/_icon-link.scss +++ b/scss/helpers/_icon-link.scss @@ -1,4 +1,3 @@ -@use "../config" as *; @use "../variables" as *; @use "../mixins/transition" as *; diff --git a/scss/helpers/_vr.scss b/scss/helpers/_vr.scss index f59cbaec25..56b57c97b9 100644 --- a/scss/helpers/_vr.scss +++ b/scss/helpers/_vr.scss @@ -1,5 +1,3 @@ -@use "../variables" as *; - @layer helpers { .vr { display: inline-block; diff --git a/scss/layout/_grid.scss b/scss/layout/_grid.scss index 8f068e3cfb..b2aadaf0bf 100644 --- a/scss/layout/_grid.scss +++ b/scss/layout/_grid.scss @@ -1,7 +1,5 @@ -@use "sass:map"; @use "../config" as *; @use "../mixins/grid" as *; -@use "breakpoints" as *; // mdo-do // - check gap utilities as replacement for gutter classes from v5 diff --git a/scss/mixins/_border-radius.scss b/scss/mixins/_border-radius.scss index 8b305cc6df..69de12ff03 100644 --- a/scss/mixins/_border-radius.scss +++ b/scss/mixins/_border-radius.scss @@ -2,7 +2,6 @@ @use "sass:math"; @use "sass:meta"; @use "../config" as *; -@use "../variables" as *; // stylelint-disable property-disallowed-list // Single side border-radius diff --git a/scss/mixins/_caret.scss b/scss/mixins/_caret.scss index 3ab770252e..f227dcec31 100644 --- a/scss/mixins/_caret.scss +++ b/scss/mixins/_caret.scss @@ -1,5 +1,4 @@ @use "../config" as *; -@use "../variables" as *; // scss-docs-start caret-variables $caret-width: .3em !default; diff --git a/scss/mixins/_focus-ring.scss b/scss/mixins/_focus-ring.scss index fd39eadef6..156a217308 100644 --- a/scss/mixins/_focus-ring.scss +++ b/scss/mixins/_focus-ring.scss @@ -1,6 +1,3 @@ -@use "../config" as *; -@use "../variables" as *; - @mixin focus-ring($offset: false, $color: null) { @if $color != null { outline: var(--focus-ring-width) solid #{$color}; diff --git a/scss/mixins/_reset-text.scss b/scss/mixins/_reset-text.scss index e3f5c0e6cd..4dac3c7e6a 100644 --- a/scss/mixins/_reset-text.scss +++ b/scss/mixins/_reset-text.scss @@ -1,5 +1,3 @@ -@use "../variables" as *; - @mixin reset-text { font-family: var(--body-font-family); // We deliberately do NOT reset font-size or overflow-wrap / word-wrap. diff --git a/scss/mixins/_utilities.scss b/scss/mixins/_utilities.scss index aaa214b208..6aa2cbc720 100644 --- a/scss/mixins/_utilities.scss +++ b/scss/mixins/_utilities.scss @@ -1,8 +1,6 @@ @use "sass:list"; @use "sass:map"; @use "sass:meta"; -@use "sass:string"; -@use "../config" as *; // stylelint-disable scss/dollar-variable-pattern diff --git a/scss/tests/mixins/_box-shadow.test.scss b/scss/tests/mixins/_box-shadow.test.scss index 748ab21a7f..c8737e99fa 100644 --- a/scss/tests/mixins/_box-shadow.test.scss +++ b/scss/tests/mixins/_box-shadow.test.scss @@ -1,3 +1,4 @@ +// check-unused-imports-disable — test infrastructure imports. @use "../../functions" as *; @use "../../variables" as *; @use "../../mixins" as *; diff --git a/scss/tests/mixins/_media-query-color-mode-full.test.scss b/scss/tests/mixins/_media-query-color-mode-full.test.scss index a5ce286447..490d7ee1c8 100644 --- a/scss/tests/mixins/_media-query-color-mode-full.test.scss +++ b/scss/tests/mixins/_media-query-color-mode-full.test.scss @@ -1,3 +1,4 @@ +// check-unused-imports-disable — test infrastructure imports. $color-mode-type: media-query; $true-terminal-output: false; diff --git a/scss/tests/mixins/_utilities.test.scss b/scss/tests/mixins/_utilities.test.scss index 0927641e44..9ca6c92677 100644 --- a/scss/tests/mixins/_utilities.test.scss +++ b/scss/tests/mixins/_utilities.test.scss @@ -1,3 +1,4 @@ +// check-unused-imports-disable — test infrastructure imports. @use "../../variables" as *; @use "../../functions" as *; @use "../../mixins/utilities" as *; diff --git a/scss/tests/utilities/_api.test.scss b/scss/tests/utilities/_api.test.scss index 4020b2217b..abd1c10d63 100644 --- a/scss/tests/utilities/_api.test.scss +++ b/scss/tests/utilities/_api.test.scss @@ -1,3 +1,4 @@ +// check-unused-imports-disable — test infrastructure imports. @use "../../functions"; @use "../../variables"; @use "../../maps"; diff --git a/scss/utilities/_api.scss b/scss/utilities/_api.scss index 595948e2ba..9f12172a4e 100644 --- a/scss/utilities/_api.scss +++ b/scss/utilities/_api.scss @@ -1,7 +1,6 @@ @use "sass:map"; @use "sass:meta"; @use "../config" as *; -@use "../variables" as *; @use "../layout/breakpoints" as *; @use "../mixins/utilities" as *; @use "../utilities" as *; @@ -25,7 +24,6 @@ } } - // Print utilities @media print { @each $key, $utility in $utilities { diff --git a/site/src/scss/_ads.scss b/site/src/scss/_ads.scss index dc19871d95..9b304fb02e 100644 --- a/site/src/scss/_ads.scss +++ b/site/src/scss/_ads.scss @@ -1,4 +1,3 @@ -@use "../../../scss/layout/breakpoints" as *; @use "../../../scss/mixins/border-radius" as *; // stylelint-disable declaration-no-important, selector-max-id diff --git a/site/src/scss/_anchor.scss b/site/src/scss/_anchor.scss index 4d4f445a5e..0e0e19219b 100644 --- a/site/src/scss/_anchor.scss +++ b/site/src/scss/_anchor.scss @@ -1,5 +1,3 @@ -@use "../../../scss/config" as *; -@use "../../../scss/variables" as *; @use "../../../scss/mixins/transition" as *; @layer custom { diff --git a/site/src/scss/_brand.scss b/site/src/scss/_brand.scss index e95b24cc4b..1c9baa024a 100644 --- a/site/src/scss/_brand.scss +++ b/site/src/scss/_brand.scss @@ -1,4 +1,3 @@ -@use "../../../scss/config" as *; @use "../../../scss/colors" as *; @use "../../../scss/layout/breakpoints" as *; @use "variables" as *; @@ -32,7 +31,6 @@ } } - // // Color swatches // diff --git a/site/src/scss/_callouts.scss b/site/src/scss/_callouts.scss index 7e66e9dc2e..c4bd4166b1 100644 --- a/site/src/scss/_callouts.scss +++ b/site/src/scss/_callouts.scss @@ -1,5 +1,3 @@ -@use "../../../scss/config" as *; -@use "../../../scss/colors" as *; @use "../../../scss/mixins/border-radius" as *; @use "variables" as *; diff --git a/site/src/scss/_component-examples.scss b/site/src/scss/_component-examples.scss index 15c3d09844..09741954df 100644 --- a/site/src/scss/_component-examples.scss +++ b/site/src/scss/_component-examples.scss @@ -2,7 +2,6 @@ @use "../../../scss/variables" as *; @use "../../../scss/layout/breakpoints" as *; @use "../../../scss/mixins/border-radius" as *; -@use "../../../scss/mixins/box-shadow" as *; @use "variables" as *; // @@ -220,7 +219,6 @@ } } - .bd-example-offcanvas { .offcanvas { position: static; diff --git a/site/src/scss/_content.scss b/site/src/scss/_content.scss index cad480366a..b7bd3f7107 100644 --- a/site/src/scss/_content.scss +++ b/site/src/scss/_content.scss @@ -1,7 +1,3 @@ -@use "sass:color"; -@use "../../../scss/colors" as *; -@use "../../../scss/config" as *; -@use "../../../scss/variables" as *; @use "../../../scss/layout/breakpoints" as *; // diff --git a/site/src/scss/_details.scss b/site/src/scss/_details.scss index d81b299920..347285e255 100644 --- a/site/src/scss/_details.scss +++ b/site/src/scss/_details.scss @@ -1,5 +1,3 @@ -@use "../../../scss/config" as *; -@use "../../../scss/colors" as *; @use "../../../scss/mixins/border-radius" as *; @use "../../../scss/mixins/transition" as *; diff --git a/site/src/scss/_masthead.scss b/site/src/scss/_masthead.scss index ce192cf1ea..8e297804e5 100644 --- a/site/src/scss/_masthead.scss +++ b/site/src/scss/_masthead.scss @@ -1,11 +1,7 @@ @use "sass:math"; -@use "../../../scss/config" as *; -@use "../../../scss/colors" as *; -@use "../../../scss/variables" as *; @use "../../../scss/layout/breakpoints" as *; @use "../../../scss/mixins/border-radius" as *; @use "../../../scss/mixins/transition" as *; -@use "../../../scss/mixins/color-mode" as *; @layer custom { .bd-masthead { diff --git a/site/src/scss/_navbar.scss b/site/src/scss/_navbar.scss index 01ff85f235..9e3b02d41f 100644 --- a/site/src/scss/_navbar.scss +++ b/site/src/scss/_navbar.scss @@ -1,6 +1,5 @@ @use "../../../scss/config" as *; @use "../../../scss/colors" as *; -@use "../../../scss/functions" as *; @use "../../../scss/mixins" as *; @use "../../../scss/variables" as *; @use "../../../scss/layout/breakpoints" as *; diff --git a/site/src/scss/_search.scss b/site/src/scss/_search.scss index a7959b9467..40525ea9fa 100644 --- a/site/src/scss/_search.scss +++ b/site/src/scss/_search.scss @@ -1,9 +1,6 @@ -@use "variables" as *; -@use "../../../scss/colors" as *; @use "../../../scss/layout/breakpoints" as *; @use "../../../scss/mixins/color-mode" as *; @use "../../../scss/mixins/border-radius" as *; -@use "../../../scss/mixins/focus-ring" as *; // stylelint-disable selector-class-pattern diff --git a/site/src/scss/_sidebar.scss b/site/src/scss/_sidebar.scss index 1d17decfc2..6c461eca23 100644 --- a/site/src/scss/_sidebar.scss +++ b/site/src/scss/_sidebar.scss @@ -1,7 +1,4 @@ -@use "../../../scss/variables" as *; @use "../../../scss/layout/breakpoints" as *; -@use "../../../scss/mixins/border-radius" as *; -@use "../../../scss/mixins/focus-ring" as *; @layer custom { .bd-sidebar { diff --git a/site/src/scss/_syntax.scss b/site/src/scss/_syntax.scss index d2cbb16e8b..e7590635e3 100644 --- a/site/src/scss/_syntax.scss +++ b/site/src/scss/_syntax.scss @@ -1,9 +1,4 @@ -@use "sass:color"; -@use "../../../scss/config" as *; -@use "../../../scss/colors" as *; -@use "../../../scss/variables" as *; @use "../../../scss/mixins/border-radius" as *; -@use "../../../scss/mixins/color-mode" as *; @use "../../../scss/mixins/transition" as *; // Shell prompt colors for light mode diff --git a/site/src/scss/_variables.scss b/site/src/scss/_variables.scss index d5030ed8ae..b6c6a09864 100644 --- a/site/src/scss/_variables.scss +++ b/site/src/scss/_variables.scss @@ -1,8 +1,4 @@ @use "sass:color"; -@use "../../../scss/config" as *; -@use "../../../scss/colors" as *; -@use "../../../scss/functions" as *; -@use "../../../scss/mixins/color-mode" as *; // Local docs variables $bd-purple: #4c0bce; diff --git a/site/src/scss/docs.scss b/site/src/scss/docs.scss index fc8c34d63c..26789d9672 100644 --- a/site/src/scss/docs.scss +++ b/site/src/scss/docs.scss @@ -1,3 +1,5 @@ +// check-unused-imports-disable — all @use statements load component CSS (side-effect imports). + /* Bootstrap Docs (https://getbootstrap.com/) * Copyright 2011-2026 The Bootstrap Authors * Licensed under the Creative Commons Attribution 3.0 Unported License. diff --git a/site/src/scss/docs_search.scss b/site/src/scss/docs_search.scss index 2a4593d114..d724f0bac4 100644 --- a/site/src/scss/docs_search.scss +++ b/site/src/scss/docs_search.scss @@ -1,3 +1,5 @@ +// check-unused-imports-disable — side-effect CSS imports. + /*! * Bootstrap Docs (https://getbootstrap.com/) * Copyright 2024-2026 The Bootstrap Authors