diff --git a/packages/webawesome/docs/_includes/free-badge.njk b/packages/webawesome/docs/_includes/free-badge.njk
new file mode 100644
index 000000000..5ec8823f8
--- /dev/null
+++ b/packages/webawesome/docs/_includes/free-badge.njk
@@ -0,0 +1,7 @@
+{% macro freeBadge(params) %}
+ {% set description = params.description or "This feature is available in the free version of Web Awesome" %}
+ {% set badgeId = params.id or ("free-badge-" + ("" | uniqueId(8))) %}
+ Free
+ {{ description }}
+{% endmacro %}
+
diff --git a/packages/webawesome/docs/_includes/pro-badge.njk b/packages/webawesome/docs/_includes/pro-badge.njk
index d67d37372..6c5b782db 100644
--- a/packages/webawesome/docs/_includes/pro-badge.njk
+++ b/packages/webawesome/docs/_includes/pro-badge.njk
@@ -1,6 +1,6 @@
{% macro proBadge(params) %}
{% set description = params.description or "This requires access to Web Awesome Pro" %}
{% set badgeId = params.id or ("pro-badge-" + ("" | uniqueId(8))) %}
- Pro
+ Pro
{{ description }}
{% endmacro %}
diff --git a/packages/webawesome/docs/_transformers/anchor-headings.js b/packages/webawesome/docs/_transformers/anchor-headings.js
index 5b17f6674..27547f97a 100644
--- a/packages/webawesome/docs/_transformers/anchor-headings.js
+++ b/packages/webawesome/docs/_transformers/anchor-headings.js
@@ -79,7 +79,7 @@ export function anchorHeadingsTransformer(options = {}) {
const anchor = parse(`
- #
+
`);
anchor.querySelector('.wa-visually-hidden').textContent = options.anchorLabel;
diff --git a/packages/webawesome/docs/assets/styles/docs.css b/packages/webawesome/docs/assets/styles/docs.css
index f1ab411b7..c545d9d05 100644
--- a/packages/webawesome/docs/assets/styles/docs.css
+++ b/packages/webawesome/docs/assets/styles/docs.css
@@ -351,26 +351,6 @@ h1.title {
}
}
-/* Anchor headings */
-.anchor-heading a {
- visibility: hidden;
- text-decoration: none;
-}
-
-@media (hover: hover) {
- .anchor-heading:hover a {
- visibility: visible;
- padding: 0 0.125em;
- }
-}
-
-@media print {
- /* Show URLs for printed links */
- a:not(.anchor-heading)[href]::after {
- content: ' (' attr(href) ')';
- }
-}
-
/* Callouts */
.callout {
display: flex;
diff --git a/packages/webawesome/docs/assets/styles/utils.css b/packages/webawesome/docs/assets/styles/utils.css
index 52e56a948..deb71148e 100644
--- a/packages/webawesome/docs/assets/styles/utils.css
+++ b/packages/webawesome/docs/assets/styles/utils.css
@@ -70,9 +70,8 @@
/* #region shared UI */
/* pro badge */
wa-badge.pro {
- color: white;
+ color: var(--wa-color-brand-on-loud);
background-color: var(--wa-brand-orange);
- border-color: var(--wa-brand-orange);
+ wa-tooltip {
font-size: var(--wa-font-size-xs);
@@ -80,6 +79,14 @@
}
}
+ /* free badge */
+ wa-badge.free {
+ + wa-tooltip {
+ font-size: var(--wa-font-size-xs);
+ --max-width: unset;
+ }
+ }
+
/* planned badge */
wa-badge.planned {
background-color: var(--wa-color-neutral-fill-quiet);
@@ -122,6 +129,29 @@
--secondary-color: var(--wa-color-neutral-30);
}
}
+
+ /* anchor headings */
+ .anchor-heading a {
+ opacity: 0;
+ visibility: hidden;
+ text-decoration: none;
+ transition: opacity var(--wa-transition-normal) var(--wa-transition-easing);
+ }
+
+ @media (hover: hover) {
+ .anchor-heading:hover a {
+ opacity: 1;
+ visibility: visible;
+ padding: var(--wa-space-3xs);
+ }
+ }
+
+ @media print {
+ /* show URLs for printed links */
+ a:not(.anchor-heading)[href]::after {
+ content: ' (' attr(href) ')';
+ }
+ }
/* #endregion */
/* #region funsies + cosmetics */
diff --git a/packages/webawesome/docs/docs/themes.njk b/packages/webawesome/docs/docs/themes.njk
index be6e20eae..103ecdb14 100644
--- a/packages/webawesome/docs/docs/themes.njk
+++ b/packages/webawesome/docs/docs/themes.njk
@@ -4,6 +4,9 @@ description: Style (and restyle) your website at will with any of Web Awesome's
layout: page
---
+{% from "pro-badge.njk" import proBadge %}
+{% from "free-badge.njk" import freeBadge %}
+
{{ title }}
Themes are collections of design tokens that give a cohesive look and feel to the entire Web Awesome library. Style and restyle your website at will by loading any pre-built theme.
@@ -64,8 +67,9 @@ to create a project with any one of these themes.
Theme
- FREE
- PRO
+ {{ freeBadge({ id: "free-badge", description: "This theme is available in the free version of Web Awesome." }) }}
+ {{ proBadge({ id: "pro-badge", description: "This theme requires access to Web Awesome Pro." }) }}
+
Description
@@ -162,8 +166,12 @@ Then apply the following classes to the `` element:
const beforeFrame = document.querySelector('wa-zoomable-frame[slot="before"]');
const nameElement = document.querySelector('[data-theme-name]');
const descriptionElement = document.querySelector('[data-theme-description]');
- const freeBadge = document.querySelector('[data-free-badge]');
- const proBadge = document.querySelector('[data-pro-badge]');
+ const freeBadge = document.getElementById('free-badge');
+ const proBadge = document.getElementById('pro-badge');
+
+ // Hide both badges initially
+ if (freeBadge) freeBadge.hidden = true;
+ if (proBadge) proBadge.hidden = true;
function updateFrames(selectedValue, title, description, isPro, palette, brand) {
// Update theme classes on both frames