jamdesk 1.1.115 → 1.1.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.117",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
|
@@ -547,11 +547,23 @@ export type MintlifyLayout = 'sidenav' | 'topnav';
|
|
|
547
547
|
|
|
548
548
|
/**
|
|
549
549
|
* Background configuration
|
|
550
|
+
*
|
|
551
|
+
* `decoration: "none"` disables the theme's default decoration — on Jam this
|
|
552
|
+
* removes the light-mode radial gradient. `color` overrides the theme's
|
|
553
|
+
* `--color-bg-primary` in light and dark mode. `gradient` tunes the Jam
|
|
554
|
+
* gradient (color, size, position, opacity); ignored when `decoration` is
|
|
555
|
+
* anything other than `gradient`, or on themes without a default gradient.
|
|
550
556
|
*/
|
|
551
557
|
export interface BackgroundConfig {
|
|
552
558
|
image?: string | { light: string; dark: string };
|
|
553
|
-
decoration?: 'gradient' | 'grid' | 'windows';
|
|
559
|
+
decoration?: 'gradient' | 'grid' | 'windows' | 'none';
|
|
554
560
|
color?: ColorPair;
|
|
561
|
+
gradient?: {
|
|
562
|
+
color?: string;
|
|
563
|
+
size?: string;
|
|
564
|
+
position?: 'top center' | 'top left' | 'top right' | 'center';
|
|
565
|
+
opacity?: number;
|
|
566
|
+
};
|
|
555
567
|
}
|
|
556
568
|
|
|
557
569
|
/**
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
isPreloadedFont,
|
|
22
22
|
getPrimaryFontFamily,
|
|
23
23
|
} from '@/lib/fonts';
|
|
24
|
-
import type { DocsConfig, FontConfig, LanguageCode } from '@/lib/docs-types';
|
|
24
|
+
import type { BackgroundConfig, DocsConfig, FontConfig, LanguageCode } from '@/lib/docs-types';
|
|
25
25
|
import { LinkPrefixProvider } from '@/lib/link-prefix-context';
|
|
26
26
|
import { ProjectSlugProvider } from '@/lib/project-slug-context';
|
|
27
27
|
import { getAnalyticsScript } from '@/lib/analytics-script';
|
|
@@ -155,6 +155,114 @@ export function generatePrimaryColorVariables(
|
|
|
155
155
|
}`;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
// Matches hex, rgb(), or hsl() — intentionally identical surface to the
|
|
159
|
+
// `colorRegex` inside generatePrimaryColorVariables (and broader than the
|
|
160
|
+
// schema's colorPairSchema, which is hex-only). Drift between these is
|
|
161
|
+
// intentional: docs.json validation rejects rgb/hsl in color.{light,dark},
|
|
162
|
+
// but at runtime we accept anything that looks valid to defend against
|
|
163
|
+
// hand-written configs that bypass the validator.
|
|
164
|
+
const BG_COLOR_REGEX =
|
|
165
|
+
/^(#[0-9a-f]{3}|#[0-9a-f]{6}|rgb\(\s*\d+\s*,\s*\d+\s*,\s*\d+\s*\)|hsl\(\s*\d+\s*,\s*\d+%\s*,\s*\d+%\s*\))$/i;
|
|
166
|
+
const BG_SIZE_REGEX = /^\d+(\.\d+)?(px|rem|em|vh|vw|%)$/;
|
|
167
|
+
const BG_POSITION_ALLOWED = new Set([
|
|
168
|
+
'top center',
|
|
169
|
+
'top left',
|
|
170
|
+
'top right',
|
|
171
|
+
'center',
|
|
172
|
+
]);
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Build a `<style>` body that overrides `--color-bg-primary` (light + dark)
|
|
176
|
+
* and exposes gradient knobs (`--jd-gradient-color/size/position/opacity`)
|
|
177
|
+
* to the Jam theme CSS. Returns `null` when nothing is configured or only
|
|
178
|
+
* invalid values were provided.
|
|
179
|
+
*
|
|
180
|
+
* `decoration: "none"` is NOT rendered here — it's wired through the body's
|
|
181
|
+
* `data-decoration` attribute so the gradient rules can opt out via :not().
|
|
182
|
+
*/
|
|
183
|
+
export function generateBackgroundVariables(
|
|
184
|
+
background: BackgroundConfig | undefined,
|
|
185
|
+
): string | null {
|
|
186
|
+
if (!background) return null;
|
|
187
|
+
|
|
188
|
+
// When the gradient is opted out via decoration: "none", suppress all
|
|
189
|
+
// gradient-related CSS vars so they don't leak into other rules. The
|
|
190
|
+
// body[data-decoration="none"] selector already gates the Jam gradient
|
|
191
|
+
// off, but emitting orphan `--jd-gradient-*` vars on :root would let any
|
|
192
|
+
// future descendant rule pick them up. Keep :root clean.
|
|
193
|
+
const gradientDisabled = background.decoration === 'none';
|
|
194
|
+
|
|
195
|
+
// typeof guards defend the .trim() calls against callers that bypass Ajv
|
|
196
|
+
// (dashboard live-preview, hand-written configs). Contract is silent-drop.
|
|
197
|
+
const validateString = (value: unknown, regex: RegExp): string | null => {
|
|
198
|
+
if (typeof value !== 'string') return null;
|
|
199
|
+
const trimmed = value.trim();
|
|
200
|
+
return regex.test(trimmed) ? trimmed : null;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const validLight = validateString(background.color?.light, BG_COLOR_REGEX);
|
|
204
|
+
const validDark = validateString(background.color?.dark, BG_COLOR_REGEX);
|
|
205
|
+
|
|
206
|
+
const g = gradientDisabled ? undefined : background.gradient;
|
|
207
|
+
const validGradientColor = validateString(g?.color, BG_COLOR_REGEX);
|
|
208
|
+
const validGradientSize = validateString(g?.size, BG_SIZE_REGEX);
|
|
209
|
+
const validGradientPosition =
|
|
210
|
+
g?.position && BG_POSITION_ALLOWED.has(g.position) ? g.position : null;
|
|
211
|
+
const validGradientOpacity =
|
|
212
|
+
typeof g?.opacity === 'number' && g.opacity >= 0 && g.opacity <= 1
|
|
213
|
+
? g.opacity
|
|
214
|
+
: null;
|
|
215
|
+
|
|
216
|
+
const rootLines: string[] = [];
|
|
217
|
+
if (validLight) rootLines.push(` --color-bg-primary: ${validLight};`);
|
|
218
|
+
if (validGradientColor)
|
|
219
|
+
rootLines.push(` --jd-gradient-color: ${validGradientColor};`);
|
|
220
|
+
if (validGradientSize)
|
|
221
|
+
rootLines.push(` --jd-gradient-size: ${validGradientSize};`);
|
|
222
|
+
if (validGradientPosition)
|
|
223
|
+
rootLines.push(` --jd-gradient-position: ${validGradientPosition};`);
|
|
224
|
+
if (validGradientOpacity !== null) {
|
|
225
|
+
// Pre-compute the three stop percentages so the CSS sees integers/clean
|
|
226
|
+
// decimals instead of `calc(0.12 * 66.67%)` → `8.0004%`. Some Blink/WebKit
|
|
227
|
+
// versions clamp fractional percentages on color-mix inputs.
|
|
228
|
+
// Stops scale proportionally from the peak opacity.
|
|
229
|
+
const roundedPct = (multiplier: number) =>
|
|
230
|
+
Math.round(validGradientOpacity * multiplier * 100) / 100; // 2-decimal precision
|
|
231
|
+
rootLines.push(` --jd-gradient-opacity: ${validGradientOpacity};`);
|
|
232
|
+
// Also emit the pre-computed per-stop percentages so CSS doesn't need calc().
|
|
233
|
+
rootLines.push(` --jd-gradient-stop-peak: ${roundedPct(100)}%;`);
|
|
234
|
+
rootLines.push(` --jd-gradient-stop-mid: ${roundedPct(66.67)}%;`);
|
|
235
|
+
rootLines.push(` --jd-gradient-stop-far: ${roundedPct(33.33)}%;`);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const darkLines: string[] = [];
|
|
239
|
+
if (validDark) darkLines.push(` --color-bg-primary: ${validDark};`);
|
|
240
|
+
|
|
241
|
+
// Dev-only warning when both decoration:"none" and gradient:{...} are set —
|
|
242
|
+
// the gradient is silently ignored, which would confuse the customer.
|
|
243
|
+
if (
|
|
244
|
+
gradientDisabled &&
|
|
245
|
+
background.gradient &&
|
|
246
|
+
Object.keys(background.gradient).length > 0 &&
|
|
247
|
+
process.env.NODE_ENV === 'development'
|
|
248
|
+
) {
|
|
249
|
+
console.warn(
|
|
250
|
+
'[bg-config] background.gradient is ignored because background.decoration is "none". Set decoration to "gradient" (or omit) to apply gradient tuning.',
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (rootLines.length === 0 && darkLines.length === 0) return null;
|
|
255
|
+
|
|
256
|
+
const blocks: string[] = [];
|
|
257
|
+
if (rootLines.length > 0) {
|
|
258
|
+
blocks.push(`:root {\n${rootLines.join('\n')}\n}`);
|
|
259
|
+
}
|
|
260
|
+
if (darkLines.length > 0) {
|
|
261
|
+
blocks.push(`.dark {\n${darkLines.join('\n')}\n}`);
|
|
262
|
+
}
|
|
263
|
+
return blocks.join('\n\n');
|
|
264
|
+
}
|
|
265
|
+
|
|
158
266
|
export function getFontClassName(
|
|
159
267
|
themeName: ThemeName | undefined,
|
|
160
268
|
customFonts?: FontConfig,
|
|
@@ -284,6 +392,12 @@ export async function DocsChrome({
|
|
|
284
392
|
config.colors?.light,
|
|
285
393
|
config.colors?.dark,
|
|
286
394
|
);
|
|
395
|
+
const backgroundVariables = generateBackgroundVariables(config.background);
|
|
396
|
+
// 'gradient' | 'grid' | 'windows' | 'none' | undefined. Only "none" currently
|
|
397
|
+
// alters rendering (gates off Jam's light-mode gradient + chrome transparency).
|
|
398
|
+
// The other values are stored on the body as data-decoration="<value>" so future
|
|
399
|
+
// CSS rules can target them, but no rule consumes them yet.
|
|
400
|
+
const decoration = config.background?.decoration;
|
|
287
401
|
|
|
288
402
|
const appearanceDefault = config.appearance?.default || 'system';
|
|
289
403
|
const appearanceStrict = config.appearance?.strict || false;
|
|
@@ -494,6 +608,14 @@ export async function DocsChrome({
|
|
|
494
608
|
{primaryColorVariables}
|
|
495
609
|
</style>
|
|
496
610
|
)}
|
|
611
|
+
{backgroundVariables && (
|
|
612
|
+
<style
|
|
613
|
+
precedence="jd-layout"
|
|
614
|
+
href={`jd-bg-${resolvedProjectSlug}`}
|
|
615
|
+
>
|
|
616
|
+
{backgroundVariables}
|
|
617
|
+
</style>
|
|
618
|
+
)}
|
|
497
619
|
{customCss && (
|
|
498
620
|
<style
|
|
499
621
|
precedence="jd-layout"
|
|
@@ -510,7 +632,7 @@ export async function DocsChrome({
|
|
|
510
632
|
/>
|
|
511
633
|
)}
|
|
512
634
|
</head>
|
|
513
|
-
<body className={fontClassName} data-theme={themeName || 'jam'} suppressHydrationWarning>
|
|
635
|
+
<body className={fontClassName} data-theme={themeName || 'jam'} data-decoration={decoration || undefined} suppressHydrationWarning>
|
|
514
636
|
{config.integrations?.gtm?.tagId && (
|
|
515
637
|
<ConditionalGTM gtmId={config.integrations.gtm.tagId} />
|
|
516
638
|
)}
|
|
@@ -272,17 +272,51 @@
|
|
|
272
272
|
"enum": [
|
|
273
273
|
"gradient",
|
|
274
274
|
"grid",
|
|
275
|
-
"windows"
|
|
275
|
+
"windows",
|
|
276
|
+
"none"
|
|
276
277
|
],
|
|
277
|
-
"description": "
|
|
278
|
+
"description": "Background decoration style. Currently implemented: `gradient` (the default for Jam) and `none` (disables Jam's light-mode radial gradient). `grid` and `windows` are reserved for future Mintlify-compatible decorations and currently render as the theme default (no warning is emitted) — do not rely on them yet."
|
|
278
279
|
},
|
|
279
280
|
"color": {
|
|
280
281
|
"$ref": "#/definitions/colorPairSchema",
|
|
281
|
-
"description": "Customize background colors for light and dark themes"
|
|
282
|
+
"description": "Customize background colors for light and dark themes. Overrides the theme's default `--color-bg-primary`"
|
|
283
|
+
},
|
|
284
|
+
"gradient": {
|
|
285
|
+
"type": "object",
|
|
286
|
+
"properties": {
|
|
287
|
+
"color": {
|
|
288
|
+
"type": "string",
|
|
289
|
+
"pattern": "^(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})|rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)|hsl\\(\\s*\\d+\\s*,\\s*\\d+%\\s*,\\s*\\d+%\\s*\\))$",
|
|
290
|
+
"description": "Gradient color (hex, rgb, or hsl). Defaults to the theme primary color"
|
|
291
|
+
},
|
|
292
|
+
"size": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"pattern": "^\\d+(\\.\\d+)?(px|rem|em|vh|vw|%)$",
|
|
295
|
+
"description": "Gradient radius (e.g. `500px`, `60vh`). Defaults to `500px`"
|
|
296
|
+
},
|
|
297
|
+
"position": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"enum": [
|
|
300
|
+
"top center",
|
|
301
|
+
"top left",
|
|
302
|
+
"top right",
|
|
303
|
+
"center"
|
|
304
|
+
],
|
|
305
|
+
"description": "Gradient origin position. Defaults to `top center`"
|
|
306
|
+
},
|
|
307
|
+
"opacity": {
|
|
308
|
+
"type": "number",
|
|
309
|
+
"minimum": 0,
|
|
310
|
+
"maximum": 1,
|
|
311
|
+
"description": "Peak gradient opacity at the center (0–1). Defaults to 0.12"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"additionalProperties": false,
|
|
315
|
+
"description": "Customize the theme's background gradient. Currently applies only to the Jam theme (light mode). Ignored when `decoration` is `none`"
|
|
282
316
|
}
|
|
283
317
|
},
|
|
284
318
|
"additionalProperties": false,
|
|
285
|
-
"description": "Configure background images, colors, and
|
|
319
|
+
"description": "Configure background images, colors, decorative patterns, and gradient parameters"
|
|
286
320
|
},
|
|
287
321
|
"navbar": {
|
|
288
322
|
"type": "object",
|
|
@@ -169,19 +169,29 @@
|
|
|
169
169
|
|
|
170
170
|
/* ===== JAM THEME BACKGROUND GRADIENT (LIGHT MODE ONLY) ===== */
|
|
171
171
|
/*
|
|
172
|
-
* Radial gradient radiates from
|
|
173
|
-
*
|
|
174
|
-
*
|
|
172
|
+
* Radial gradient radiates from --jd-gradient-position and fades to transparent
|
|
173
|
+
* by --jd-gradient-size. All knobs are tunable via docs.json `background.gradient`.
|
|
174
|
+
* Light mode only — no gradient in dark mode.
|
|
175
175
|
*
|
|
176
|
-
*
|
|
176
|
+
* Scoped to data-theme="jam" so other themes don't inherit this. Gated on
|
|
177
|
+
* :not([data-decoration="none"]) so users can disable via
|
|
178
|
+
* `background.decoration: "none"`.
|
|
177
179
|
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
+
* Defaults (used when docs.json doesn't override):
|
|
181
|
+
* --jd-gradient-color : var(--color-primary, #2266C2)
|
|
182
|
+
* --jd-gradient-size : 500px
|
|
183
|
+
* --jd-gradient-position : top center
|
|
184
|
+
* --jd-gradient-opacity : 0.12
|
|
185
|
+
*
|
|
186
|
+
* Browser support: parametric customization requires color-mix() (Chrome 111+,
|
|
187
|
+
* Firefox 113+, Safari 16.2+). Older browsers fall back to the static rgba
|
|
188
|
+
* gradient block below — they see the original look but cannot customize it.
|
|
180
189
|
*/
|
|
181
|
-
body[data-theme="jam"]:not(
|
|
190
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) {
|
|
182
191
|
/* Override solid background-color from base.css */
|
|
183
192
|
background-color: transparent;
|
|
184
|
-
/* Fallback for browsers
|
|
193
|
+
/* Fallback gradient (static, for browsers without color-mix). Older browsers
|
|
194
|
+
keep the original Jam look even if they ignore docs.json customization. */
|
|
185
195
|
background:
|
|
186
196
|
radial-gradient(
|
|
187
197
|
circle 500px at top center,
|
|
@@ -195,80 +205,81 @@ body[data-theme="jam"]:not(.dark) {
|
|
|
195
205
|
background-attachment: fixed;
|
|
196
206
|
}
|
|
197
207
|
|
|
198
|
-
/* Modern browsers:
|
|
199
|
-
|
|
200
|
-
|
|
208
|
+
/* Modern browsers: parametric gradient consuming the CSS vars.
|
|
209
|
+
Stop percentages come from --jd-gradient-stop-{peak,mid,far} when opacity
|
|
210
|
+
is overridden; otherwise they fall back to the literal default percentages.
|
|
211
|
+
Pre-computing in TS avoids fractional-percentage edge cases in older Blink
|
|
212
|
+
(e.g., `calc(0.12 * 66.67%)` → 8.0004% can be clamped). */
|
|
213
|
+
@supports (background: color-mix(in srgb, red, transparent)) {
|
|
214
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) {
|
|
201
215
|
background:
|
|
202
216
|
radial-gradient(
|
|
203
|
-
circle 500px at top center,
|
|
204
|
-
color-mix(in srgb, var(--color-primary, #2266C2) 12
|
|
205
|
-
color-mix(in srgb, var(--color-primary, #2266C2) 8
|
|
206
|
-
color-mix(in srgb, var(--color-primary, #2266C2) 4
|
|
217
|
+
circle var(--jd-gradient-size, 500px) at var(--jd-gradient-position, top center),
|
|
218
|
+
color-mix(in srgb, var(--jd-gradient-color, var(--color-primary, #2266C2)) var(--jd-gradient-stop-peak, 12%), transparent) 0%,
|
|
219
|
+
color-mix(in srgb, var(--jd-gradient-color, var(--color-primary, #2266C2)) var(--jd-gradient-stop-mid, 8%), transparent) 30%,
|
|
220
|
+
color-mix(in srgb, var(--jd-gradient-color, var(--color-primary, #2266C2)) var(--jd-gradient-stop-far, 4%), transparent) 60%,
|
|
207
221
|
transparent 100%
|
|
208
222
|
),
|
|
209
223
|
var(--color-bg-primary, #ffffff);
|
|
224
|
+
background-repeat: no-repeat;
|
|
225
|
+
background-attachment: fixed;
|
|
210
226
|
}
|
|
211
227
|
}
|
|
212
228
|
|
|
213
|
-
/* Make main content
|
|
214
|
-
|
|
215
|
-
body[data-theme="jam"]:not(
|
|
229
|
+
/* Make main content / wrappers / chrome transparent in light mode SO the gradient shows through.
|
|
230
|
+
Only applies when the gradient is active (gated on :not([data-decoration="none"])). */
|
|
231
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) main {
|
|
216
232
|
background-color: transparent !important;
|
|
217
233
|
}
|
|
218
234
|
|
|
219
|
-
|
|
220
|
-
body[data-theme="jam"]:not(.dark) > div > div.flex:not([role="dialog"]):not(:has([data-chat-panel])) {
|
|
235
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) > div > div.flex:not([role="dialog"]):not(:has([data-chat-panel])) {
|
|
221
236
|
background-color: transparent !important;
|
|
222
237
|
}
|
|
223
238
|
|
|
224
|
-
body[data-theme="jam"]:not(
|
|
239
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) > div > div.flex > main {
|
|
225
240
|
background-color: transparent !important;
|
|
226
241
|
}
|
|
227
242
|
|
|
228
|
-
|
|
229
|
-
body[data-theme="jam"]:not(.dark) div.flex-1.lg\:ml-\[300px\] {
|
|
243
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) div.flex-1.lg\:ml-\[300px\] {
|
|
230
244
|
background-color: transparent !important;
|
|
231
245
|
}
|
|
232
246
|
|
|
233
|
-
|
|
234
|
-
/* Override the bg-[var(--color-bg-primary)]/80 Tailwind class */
|
|
235
|
-
body[data-theme="jam"]:not(.dark) header {
|
|
247
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) header {
|
|
236
248
|
background-color: transparent !important;
|
|
237
249
|
background: transparent !important;
|
|
238
250
|
}
|
|
239
251
|
|
|
240
|
-
/* Make sidebar transparent in light mode so gradient shows through */
|
|
241
|
-
/* Override the bg-[var(--color-bg-primary)] and bg-[var(--color-bg-sidebar)] Tailwind classes */
|
|
242
|
-
/* Only on desktop - mobile needs solid background for overlay menu */
|
|
243
252
|
@media (min-width: 1024px) {
|
|
244
|
-
body[data-theme="jam"]:not(
|
|
253
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) aside {
|
|
245
254
|
background-color: transparent !important;
|
|
246
255
|
background: transparent !important;
|
|
247
256
|
}
|
|
248
257
|
}
|
|
249
258
|
|
|
250
|
-
/* =====
|
|
251
|
-
/*
|
|
259
|
+
/* ===== SOLID-BG MODE (decoration: "none") ===== */
|
|
260
|
+
/* Drop the gradient entirely; use --color-bg-primary as the flat body fill.
|
|
261
|
+
Chrome is left untouched — base.css already paints it with --color-bg-primary
|
|
262
|
+
because the transparent overrides above are gated off in this mode. */
|
|
263
|
+
html:not(.dark) body[data-theme="jam"][data-decoration="none"] {
|
|
264
|
+
background: var(--color-bg-primary, #ffffff);
|
|
265
|
+
}
|
|
252
266
|
|
|
253
|
-
/*
|
|
254
|
-
body[data-theme="jam"]:not(
|
|
267
|
+
/* ===== SCROLL-BASED GRADIENT AND HEADER CHANGES ===== */
|
|
268
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) {
|
|
255
269
|
transition: background 0.3s ease-out;
|
|
256
270
|
}
|
|
257
271
|
|
|
258
|
-
|
|
259
|
-
body[data-theme="jam"]:not(.dark).scrolled {
|
|
272
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]).scrolled {
|
|
260
273
|
background: var(--color-bg-primary, #ffffff) !important;
|
|
261
274
|
}
|
|
262
275
|
|
|
263
|
-
|
|
264
|
-
body[data-theme="jam"]:not(.dark).scrolled header {
|
|
276
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]).scrolled header {
|
|
265
277
|
background-color: var(--color-bg-primary) !important;
|
|
266
278
|
background: var(--color-bg-primary) !important;
|
|
267
279
|
transition: background 0.3s ease-out;
|
|
268
280
|
}
|
|
269
281
|
|
|
270
|
-
|
|
271
|
-
body[data-theme="jam"]:not(.dark) header {
|
|
282
|
+
html:not(.dark) body[data-theme="jam"]:not([data-decoration="none"]) header {
|
|
272
283
|
transition: background 0.3s ease-out;
|
|
273
284
|
}
|
|
274
285
|
|