]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
v6: Detect unused Sass imports (#42121)
authorMark Otto <markd.otto@gmail.com>
Fri, 6 Mar 2026 16:24:57 +0000 (08:24 -0800)
committerGitHub <noreply@github.com>
Fri, 6 Mar 2026 16:24:57 +0000 (08:24 -0800)
* Remove unused imports

* New script

* Fix

* More unused

82 files changed:
build/check-unused-imports.mjs [new file with mode: 0644]
package.json
scss/_accordion.scss
scss/_alert.scss
scss/_avatar.scss
scss/_badge.scss
scss/_breadcrumb.scss
scss/_card.scss
scss/_carousel.scss
scss/_chip.scss
scss/_colors.scss
scss/_datepicker.scss
scss/_dropdown.scss
scss/_list-group.scss
scss/_nav.scss
scss/_navbar.scss
scss/_pagination.scss
scss/_placeholder.scss
scss/_popover.scss
scss/_progress.scss
scss/_root.scss
scss/_spinner.scss
scss/_stepper.scss
scss/_theme.scss
scss/_toasts.scss
scss/_tooltip.scss
scss/_transitions.scss
scss/_utilities.scss
scss/_variables.scss
scss/bootstrap-grid.scss
scss/buttons/_button-group.scss
scss/buttons/_button.scss
scss/buttons/_close.scss
scss/content/_images.scss
scss/content/_prose.scss
scss/content/_reboot.scss
scss/content/_tables.scss
scss/content/_type.scss
scss/forms/_check.scss
scss/forms/_chip-input.scss
scss/forms/_floating-labels.scss
scss/forms/_form-adorn.scss
scss/forms/_form-control.scss
scss/forms/_form-range.scss
scss/forms/_form-text.scss
scss/forms/_form-variables.scss
scss/forms/_input-group.scss
scss/forms/_labels.scss
scss/forms/_otp-input.scss
scss/forms/_radio.scss
scss/forms/_strength.scss
scss/forms/_switch.scss
scss/forms/_validation.scss
scss/helpers/_focus-ring.scss
scss/helpers/_icon-link.scss
scss/helpers/_vr.scss
scss/layout/_grid.scss
scss/mixins/_border-radius.scss
scss/mixins/_caret.scss
scss/mixins/_focus-ring.scss
scss/mixins/_reset-text.scss
scss/mixins/_utilities.scss
scss/tests/mixins/_box-shadow.test.scss
scss/tests/mixins/_media-query-color-mode-full.test.scss
scss/tests/mixins/_utilities.test.scss
scss/tests/utilities/_api.test.scss
scss/utilities/_api.scss
site/src/scss/_ads.scss
site/src/scss/_anchor.scss
site/src/scss/_brand.scss
site/src/scss/_callouts.scss
site/src/scss/_component-examples.scss
site/src/scss/_content.scss
site/src/scss/_details.scss
site/src/scss/_masthead.scss
site/src/scss/_navbar.scss
site/src/scss/_search.scss
site/src/scss/_sidebar.scss
site/src/scss/_syntax.scss
site/src/scss/_variables.scss
site/src/scss/docs.scss
site/src/scss/docs_search.scss

diff --git a/build/check-unused-imports.mjs b/build/check-unused-imports.mjs
new file mode 100644 (file)
index 0000000..6ebfa15
--- /dev/null
@@ -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(`(?<![\\w-])${escapeRegExp(namespace)}\\.`).test(body)
+}
+
+function isGlobImportUsed(moduleExports, body) {
+  for (const name of moduleExports.variables) {
+    if (new RegExp(`\\$${escapeRegExp(name)}(?![\\w-])`).test(body)) {
+      return true
+    }
+  }
+
+  for (const name of moduleExports.mixins) {
+    if (new RegExp(`@include\\s+${escapeRegExp(name)}(?![\\w-])`).test(body)) {
+      return true
+    }
+  }
+
+  for (const name of moduleExports.functions) {
+    if (new RegExp(`(?<![\\w-])${escapeRegExp(name)}\\s*\\(`).test(body)) {
+      return true
+    }
+  }
+
+  return false
+}
+
+function getBody(content) {
+  const lines = content.split('\n')
+  const filtered = []
+  let inBlockComment = false
+
+  for (const line of lines) {
+    const trimmed = line.trim()
+    if (!inBlockComment && trimmed.startsWith('@use ')) {
+      continue
+    }
+
+    if (!inBlockComment && trimmed.startsWith('@forward ')) {
+      continue
+    }
+
+    let current = line
+    if (inBlockComment) {
+      const end = current.indexOf('*/')
+      if (end === -1) {
+        continue
+      }
+
+      current = current.slice(end + 2)
+      inBlockComment = false
+    }
+
+    for (;;) {
+      const start = current.indexOf('/*')
+      if (start === -1) {
+        break
+      }
+
+      const end = current.indexOf('*/', start + 2)
+      if (end === -1) {
+        current = current.slice(0, start)
+        inBlockComment = true
+        break
+      }
+
+      current = `${current.slice(0, start)}${current.slice(end + 2)}`
+    }
+
+    const singleCommentStart = current.indexOf('//')
+    if (singleCommentStart !== -1) {
+      current = current.slice(0, singleCommentStart)
+    }
+
+    filtered.push(current)
+  }
+
+  return filtered.join('\n')
+}
+
+function isUseUnused(use, body, file) {
+  if (use.isBuiltin) {
+    const name = use.modulePath.split(':')[1]
+    return !isNamespaceUsed(name, body)
+  }
+
+  if (!use.isGlob) {
+    return !isNamespaceUsed(use.namespace, body)
+  }
+
+  const resolved = resolveModule(use.modulePath, file)
+  if (!resolved) {
+    return false
+  }
+
+  const moduleExports = getModuleExports(resolved)
+  const hasExports =
+    moduleExports.variables.size > 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 <dir1> [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()
index 736209f048a81db1f4dfaf06cfae9c1aa8ae71e2..a47a7c383002e9aed150678ff0557ddced787c71 100644 (file)
@@ -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",
index 5105ab7315c09bb7fd02e9f223f20c925b39ece8..f5c2cba8ef991cd8bd3630d12e2bf6e12d146eea 100644 (file)
@@ -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 *;
index 224d97ecad486e2536068a03f47726948df44861..ede03afeb2c4f09988ac78dc60317d967dab8625 100644 (file)
@@ -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 *;
index 01ec65bdf95342c8b37643c03e58f9fd515f64c3..e1171d09c4e3834b3eba08e1add52eb2875699ad 100644 (file)
@@ -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 *;
index 105d3dcf6a74379efb5d08db2cb62eaec7392b0d..5679e54c8d301e60a6c7b0d6372e3608d5f6fd09 100644 (file)
@@ -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 *;
index 1f4bb9f1e1b728b033b1289f3ce37e8b71917276..1f49d6b020e8833c7df54e58a8ecb24f56fd1b29 100644 (file)
@@ -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 *;
index b2e51ccf3b2c6027f4335ce63b6d2e97c22acb15..1548d13a5bca152895a4b6d10d37eaa591bfae00 100644 (file)
@@ -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;
 
index db3efc2eb1f81038f6cff72e9efa42926ceed2bd..99bd8e9c14ff1c7457422414afbea65023657b9f 100644 (file)
@@ -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
   //
   //
index 013262d9230660061dc151ca39167576b36d233e..dae2f8dbf84294b3c88c98d8119a0dd96024c9f7 100644 (file)
@@ -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 *;
index af7f03ce415126b37b63d03086808b21bbec911b..662f8b23a3195c23009fc006a85c5a1dba7550b6 100644 (file)
@@ -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/
index f606e0579e89aaaf3709300b990e093343f565ae..94b2c86386db662ac1e3a32c901492756d9fd9e0 100644 (file)
@@ -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] {
index 4f7794720144f26a8500db63ccd2e8c7aa733c48..6a918d66e26ab53f2e7075cbe5819d2f460d9502 100644 (file)
@@ -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;
 
index dca7665b4bed67006c9724e0ff67a88240689c0b..1d78eadac5fc71c517e2cdce6113abda9b8b6031 100644 (file)
@@ -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
index 1d1c366f1bff25443e331b8c73df1d2263c6ac6c..4feeaa48c217dd9719c8312d5d4e1869fa167362 100644 (file)
@@ -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`
index 2aeb88d44d057b9697008eca983196e76c52b285..19936b642136c5431b7176b8447a90de88c2476d 100644 (file)
@@ -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.
index 55a677c892111a53daaa986b33439b01cab1ce6a..807e3f2dacbe21b36c281c0316bedc31dd7578da 100644 (file)
@@ -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
   //
index 5638c81a4be8ca74760e8ba6a206b3a7967319f9..d15e984618038589af2e9c754a32ed9c6a8019c8 100644 (file)
@@ -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;
index 1653b5945a6902e54eb69a0967e0b7c032ae4fbf..f54d3b4aa2e1d5201adc498088e367fd4010cfad 100644 (file)
@@ -1,4 +1,3 @@
-@use "sass:map";
 @use "config" as *;
 @use "functions" as *;
 @use "variables" as *;
index d232d932cd200649933fd596881aef013aa21dc7..7e905fad5db0810b9d480142861f4c20532fc385 100644 (file)
@@ -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 {
index cfc32d9e2b656db4fe25e3c05d6f29a77058147f..294e170c6bb3a609ade8c3d85ecbc9f1c0d96d64 100644 (file)
@@ -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 *;
 
index 3a2f8488897362923e05ff193daeb019c44c46e5..5520c469264a8fe03103db372ae6a4ce7760a0b5 100644 (file)
@@ -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
index b8794133ccfef527770e02b59061c7fe324689af..bd2bf4e0faf6d7b462863271389bda644b4c0f86 100644 (file)
@@ -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;
index 42b46710936d304cc51b510c01e3b6fec9d526ed..7378f22fe372b5e14ad2d2b49f25ff96dcc0a4c8 100644 (file)
@@ -1,7 +1,5 @@
 @use "sass:meta";
 @use "sass:map";
-@use "config" as *;
-@use "colors" as *;
 
 @function theme-color-values($key) {
   $result: ();
index ba8d4eb4e0693d6274c2edb2f8f6ab6878eed992..20c8ebcef8a3ad9fc30a2451adb4b22303c89153 100644 (file)
@@ -1,4 +1,3 @@
-@use "sass:map";
 @use "config" as *;
 @use "functions" as *;
 @use "variables" as *;
index ba6e034f08967644fef8bc8a7892b66dcc39a3bd..0ee7fcff507e5280bb7e3514e8c0cc326d57e27d 100644 (file)
@@ -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
index de779ea6b2354df6f5576be62df1e20bdbc15f43..04f5ba152cbfedc26a697e5ac18e157b7b89fa82 100644 (file)
@@ -1,4 +1,3 @@
-@use "config" as *;
 @use "variables" as *;
 @use "mixins/transition" as *;
 
index 99a3eb15dcd6c37447ba86b7c98a548168b8d1a4..4aadac103301884154d688f990659016d0b02dd9 100644 (file)
@@ -1,6 +1,5 @@
 @use "sass:map";
 @use "config" as *;
-@use "colors" as *;
 @use "variables" as *;
 @use "functions" as *;
 @use "theme" as *;
index 82eda4a4113db7c63ae7105b6fe4cd76e20c3bce..552d0ddc9c3168670684fd78b9d8980d8f6c280a 100644 (file)
@@ -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.
index 0b3abbaddf54f7571091d16c65d835a5ad0fb716..75b291e71b5e494466879539579d01cd392fa4fd 100644 (file)
@@ -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";
index ff988813309036a16436da02d6eb972268691cde..68d6634db49a601c0e9a7fc51194008116cf6e7c 100644 (file)
@@ -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
index 55b41bd890a81e788b51bc4720ecca837b60ab9c..58ffe2e2f33a947835bc331f4ed07c25458c0136 100644 (file)
@@ -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
   //
index 25bbd5b728efc5d563ac4bb2cb7ee6e2b2fd5afc..96f08a7cf81b1575cf3c34903b566d0453e42971 100644 (file)
@@ -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 *;
 
index 31dec660c7feeca7a66f82e54029a444204065e7..efad765dde2cb2782743634e06b611e50edc255a 100644 (file)
@@ -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 *;
index 4e42dc8617d24dc62ad29954e0d76f37af9fcd95..e1f549cab219a4b6375e445f8d0e1ea6f98410e9 100644 (file)
@@ -1,5 +1,3 @@
-@use "sass:map";
-@use "../config" as *;
 @use "../functions" as *;
 @use "../mixins/tokens" as *;
 @use "../mixins/transition" as *;
index 43a8dc296135e9c88e41c719563a5ec1c6af4cf5..c6e547325c7f836dd5b96bf1a8df9c0b327cb383 100644 (file)
@@ -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 `<p>`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.
index 0121d40dbc8aa70409ef4a4066f8555e5be6a157..a817ac3a17e42d40c375e764f4282e04eb31255f 100644 (file)
@@ -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.
index 6aa06e325a6f36a2c927f3a796549e421a04bfe1..fec15e147e60e700011e5654fd537532023718e1 100644 (file)
@@ -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
   //
index 92a0e04d7b01eade0824e834358ce507833afce1..c63221381181a8dc492b2f9e9e54a9b79acbfd57 100644 (file)
@@ -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;
index c53f084da79fa44ea570a87b0fdabe3c19ec937c..b6798093a947cbfc66cad32f2f9d57f05a0ebfef 100644 (file)
@@ -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;
 
index b562e3fc6682292d99ab734d868201b4e3bad8f2..8a751960b6a48ef59cc1735768f34e511b657dcb 100644 (file)
@@ -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;
 
index 5aa26a15d44f43b1326d4d9b22506749930342e6..bd33d923af6c0383f39a982797c0465d11697291 100644 (file)
@@ -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;
 
index 5c73b380c18aa0150e116556098f7e32781c6ed6..134160e2f1884989abab6e4f8df1a5baf9940720 100644 (file)
@@ -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;
 
index b40fdfe01101f4367418c119c7a2591d907ea448..19a1b5c5a61b642abd06a72f1f0dce67fa246f27 100644 (file)
@@ -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);
index 79b5298f2f48dbdb4c27082b65e9393293d40472..b2d1b3f76dc6d7dea33c319844582be591b561db 100644 (file)
@@ -1,5 +1,3 @@
-@use "sass:map";
-@use "../config" as *;
 @use "../functions" as *;
 @use "../mixins/tokens" as *;
 
index 6c970530fb59931a63223e8e5f5129cfe78f4dde..c24a20f5aa59c44364324121924417ac45d6f12f 100644 (file)
@@ -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;
index 7f8a170e9e7e203b98df89e39ea7591b1230aa53..bf21654e36b38fcb4c483e1635ad7be772aa8f23 100644 (file)
@@ -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
index f573b5b7700c69be78d9dabec6aba42a0368967b..a9a4cd9053a8ba2b742fa6319ab51edca74daf1b 100644 (file)
@@ -1,7 +1,4 @@
-@use "sass:map";
-@use "../variables" as *;
 @use "../functions" as *;
-@use "form-variables" as *;
 
 $form-label-tokens: () !default;
 
index aea7495e62f433a1900d8fd7f5df1d4d13c48e42..a77772feba8862a51fd56ecbb0ce7bcb8a32b8b5 100644 (file)
@@ -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 *;
 
index 5c5b26058fe50cdcebe55e12c07ab44b51150b50..f92d53eb3fde597fb7716c45de86dbea86399c83 100644 (file)
@@ -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;
index 72523424319dc1f983a1afa5e0ce9eeb65293530..61b2f14821773bbe408b3fd4d636cc93258e7d8a 100644 (file)
@@ -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;
index 59bbe89fb85bca99f05fcd95450171aa415c9023..50d07d82e35e6f8c16908a9954fe74fdcc3adb7b 100644 (file)
@@ -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;
index 87f0a1473bf03a06fcb8711506f46186dfaf7481..423b4171ac03b3db645ca354a983f7c3b35cc7a6 100644 (file)
@@ -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
index 602c033365965939a8e649bbcb7292a943fd6148..949715689323d609740f4cd2b9f837db6dc933d0 100644 (file)
@@ -1,5 +1,3 @@
-@use "../config" as *;
-
 @layer helpers {
   .focus-ring:focus-visible {
     outline: var(--focus-ring);
index 591be0260c37e85bd4768a08cfb1cb1bf3d506be..05ea763e9d891865ca12d21fce272b55e57cf1db 100644 (file)
@@ -1,4 +1,3 @@
-@use "../config" as *;
 @use "../variables" as *;
 @use "../mixins/transition" as *;
 
index f59cbaec25a02417970055b241da5fc5e40de602..56b57c97b9f1f49d9ab997342feaeb00d68edd16 100644 (file)
@@ -1,5 +1,3 @@
-@use "../variables" as *;
-
 @layer helpers {
   .vr {
     display: inline-block;
index 8f068e3cfbdfe30debe652252734cd7bd0ce1b35..b2aadaf0bff65fac346c7619db33fd6fdb25735d 100644 (file)
@@ -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
index 8b305cc6df49677fd388ecb1af25931080666876..69de12ff0353a22ce2af0a7c278c416dbb794337 100644 (file)
@@ -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
index 3ab770252eebb21ced958ca2b34266f4491a84a4..f227dcec312bfb83b950319588cc0baebe943f3d 100644 (file)
@@ -1,5 +1,4 @@
 @use "../config" as *;
-@use "../variables" as *;
 
 // scss-docs-start caret-variables
 $caret-width:                 .3em !default;
index fd39eadef69852a41ea4f056226d71e9fb9a4a49..156a2173087f2140a0a03b0bae89485fc90b2c65 100644 (file)
@@ -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};
index e3f5c0e6cd5eda1a08d94ed754061b9d34523888..4dac3c7e6aabc379a0daaea7865d3f70c6971ab9 100644 (file)
@@ -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.
index aaa214b20822a013377078da06f81e6116e11bc3..6aa2cbc7201b17554efdb61d239ef3fac3984ff1 100644 (file)
@@ -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
 
index 748ab21a7f674158298fe5c506f060215c83dfe8..c8737e99fa14e26d1fc2e464f78df0c8e151fab7 100644 (file)
@@ -1,3 +1,4 @@
+// check-unused-imports-disable — test infrastructure imports.
 @use "../../functions" as *;
 @use "../../variables" as *;
 @use "../../mixins" as *;
index a5ce2864470012ce4b1c9b01fd18d827769fb68d..490d7ee1c82919c05c0f1a6409fcb7c467f353ae 100644 (file)
@@ -1,3 +1,4 @@
+// check-unused-imports-disable — test infrastructure imports.
 $color-mode-type: media-query;
 $true-terminal-output: false;
 
index 0927641e449e0bd590dc96c515a9cfc83e2aa7b4..9ca6c926774088701498810af4858d1ddaa402ab 100644 (file)
@@ -1,3 +1,4 @@
+// check-unused-imports-disable — test infrastructure imports.
 @use "../../variables" as *;
 @use "../../functions" as *;
 @use "../../mixins/utilities" as *;
index 4020b2217b5952a1ce13f9c70fd8bedaa307bf12..abd1c10d632b93e8486d58cc8c0648fdfb24b431 100644 (file)
@@ -1,3 +1,4 @@
+// check-unused-imports-disable — test infrastructure imports.
 @use "../../functions";
 @use "../../variables";
 @use "../../maps";
index 595948e2ba5c08caf82a5edbcffb5f5c295e5f52..9f12172a4e95d75d139fbbd95517e43efee1320d 100644 (file)
@@ -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 {
index dc19871d9566a3b90ba0205a2eca1affddf95b9f..9b304fb02e01e5cea1c7b2c53fc8e377953bda51 100644 (file)
@@ -1,4 +1,3 @@
-@use "../../../scss/layout/breakpoints" as *;
 @use "../../../scss/mixins/border-radius" as *;
 
 // stylelint-disable declaration-no-important, selector-max-id
index 4d4f445a5e4777bb0762734a0d8b3606368f9bac..0e0e19219b3b9456805c809f3e094b7199f89543 100644 (file)
@@ -1,5 +1,3 @@
-@use "../../../scss/config" as *;
-@use "../../../scss/variables" as *;
 @use "../../../scss/mixins/transition" as *;
 
 @layer custom {
index e95b24cc4b02eea15e67c640a99df6c2fd42b5ca..1c9baa024a3b052a2d257ee86262723fc0137793 100644 (file)
@@ -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
   //
index 7e66e9dc2ed2adfd334ea2a113aec3d06c2c5191..c4bd4166b162edf8caf5b6efd0ba008fa5977b48 100644 (file)
@@ -1,5 +1,3 @@
-@use "../../../scss/config" as *;
-@use "../../../scss/colors" as *;
 @use "../../../scss/mixins/border-radius" as *;
 @use "variables" as *;
 
index 15c3d09844b9ce70c7108c1afad75df2144fe429..09741954df62c333e929a411706b9f0150477880 100644 (file)
@@ -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 *;
 
 //
     }
   }
 
-
   .bd-example-offcanvas {
     .offcanvas {
       position: static;
index cad480366ab0041a85657f41a2bf3de070fbf5d9..b7bd3f71077050b1e30984cabaca95fbd7a778da 100644 (file)
@@ -1,7 +1,3 @@
-@use "sass:color";
-@use "../../../scss/colors" as *;
-@use "../../../scss/config" as *;
-@use "../../../scss/variables" as *;
 @use "../../../scss/layout/breakpoints" as *;
 
 //
index d81b2999200f39b5fdd9527a2e39f11e1bab9c4f..347285e255fb0fd3e25833098e9d64e2b1a90749 100644 (file)
@@ -1,5 +1,3 @@
-@use "../../../scss/config" as *;
-@use "../../../scss/colors" as *;
 @use "../../../scss/mixins/border-radius" as *;
 @use "../../../scss/mixins/transition" as *;
 
index ce192cf1ea7130158fa293b1fd2da9cecf018866..8e297804e5418c72ca80b64292af1019dac80fa1 100644 (file)
@@ -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 {
index 01ff85f23537bb8870859a1f9bc39fed38b95549..9e3b02d41f1803ddf50103615740ae9d581955d4 100644 (file)
@@ -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 *;
index a7959b9467400a56839e5fad7f04a10591521f95..40525ea9fa4dabcf96446e5e6006558404d4326b 100644 (file)
@@ -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
 
index 1d17decfc2b9eb4a23e12414c788a545c8b7f508..6c461eca23d00eaa44e16790b8525ba9aae4b0af 100644 (file)
@@ -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 {
index d2cbb16e8bf883c7ba6c5d5af5fb6debb6c86df8..e7590635e3d5a53b78fe3d4ef1108d7ad9bea7ab 100644 (file)
@@ -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
index d5030ed8aea026dc76335e07446fc74fe18c050f..b6c6a09864e9c5594262cc30c05c82ed76f47fa8 100644 (file)
@@ -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;
index fc8c34d63c2cac2a336e69692c02ecde5d519213..26789d9672058247a91aba82b121acc5f4e171b3 100644 (file)
@@ -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.
index 2a4593d11418c70d0b6a9285f68d84d13e10247f..d724f0bac4ca68885a95d8ebd109a1d8ef769bad 100644 (file)
@@ -1,3 +1,5 @@
+// check-unused-imports-disable — side-effect CSS imports.
+
 /*!
  * Bootstrap Docs (https://getbootstrap.com/)
  * Copyright 2024-2026 The Bootstrap Authors