diff --git a/eleventy.config.cjs b/eleventy.config.cjs
index 83b4749..5eefcba 100644
--- a/eleventy.config.cjs
+++ b/eleventy.config.cjs
@@ -8,6 +8,7 @@ const markdown = require('markdown-it');
const markdownDefList = require('markdown-it-deflist');
const typogrify = require('typogr');
const sass = require('sass');
+const { getImplStatus } = require('./source/helpers/sass_helpers.ts');
/** @param {import('@11ty/eleventy').UserConfig} eleventyConfig */
module.exports = (eleventyConfig) => {
@@ -65,6 +66,28 @@ module.exports = (eleventyConfig) => {
page.url.startsWith('/documentation/js-api/'),
);
+ eleventyConfig.addLiquidFilter(
+ 'implStatus',
+ (
+ dart = null,
+ libsass = null,
+ ruby = null,
+ node = null,
+ feature = null,
+ markdown = null,
+ ) => {
+ const data = {
+ dart: getImplStatus(dart),
+ libsass: getImplStatus(libsass),
+ ruby: getImplStatus(ruby),
+ node: getImplStatus(node),
+ feature: feature,
+ markdown: markdown,
+ };
+ return data;
+ },
+ );
+
eleventyConfig.addLiquidFilter(
'codeExample',
(contents, autogenCSS = true, syntax = null) => {
diff --git a/source/_includes/impl_status.liquid b/source/_includes/impl_status.liquid
new file mode 100644
index 0000000..7329580
--- /dev/null
+++ b/source/_includes/impl_status.liquid
@@ -0,0 +1,33 @@
+
+Compatibility{% if implStatusData.feature %} ({{ implStatusData.feature }}){% endif %}:
+{% if implStatusData.dart %}
+
+
- Dart Sass
+- {{ implStatusData.dart }}
+
+{% endif %}
+{% if implStatusData.libsass %}
+
+
- LibSass
+- {{ implStatusData.libsass }}
+
+{% endif %}
+{% if implStatusData.ruby %}
+
+
- Ruby Sass
+- {{ implStatusData.ruby }}
+
+{% endif %}
+{% if implStatusData.markdown %}
+
+{% endif %}
+
+
+{% if implStatusData.markdown %}
+
+{% markdown %}
+{{ implStatusData.markdown }}
+{% endmarkdown %}
+
+{% endif %}
+
diff --git a/source/guide.liquid b/source/guide.liquid
index 7c99a9a..50bd644 100644
--- a/source/guide.liquid
+++ b/source/guide.liquid
@@ -191,7 +191,10 @@ nav
{% markdown %}
## Modules
-
+{% assign implStatusData = "1.23.0" | implStatus: false, false, false, false, "Only Dart Sass currently supports `@use`. Users of other implementations must use the [`@import` rule][] instead.
+
+[`@import` rule]: /documentation/at-rules/import" %}
+{% render 'impl_status', implStatusData: implStatusData %}
You don't have to write all your Sass in a single file. You can split it up however you want with the `@use` rule. This rule loads another Sass file as a _module_, which means you can refer to its variables, [mixins][], and [functions][] in your Sass file with a namespace based on the filename. Using a file will also include the CSS it generates in your compiled output!
diff --git a/source/helpers/sass_helpers.ts b/source/helpers/sass_helpers.ts
new file mode 100644
index 0000000..01cb30f
--- /dev/null
+++ b/source/helpers/sass_helpers.ts
@@ -0,0 +1,16 @@
+function getImplStatus(status) {
+ switch (status) {
+ case null:
+ return status;
+ case true:
+ return '✓';
+ case false:
+ return '✗';
+ case 'partial':
+ return 'partial';
+ default:
+ return `since ${status}`;
+ }
+}
+
+module.exports = { getImplStatus };