vocs 2.0.0 → 2.0.1
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/dist/react/Head.js +1 -1
- package/dist/react/Head.js.map +1 -1
- package/dist/react/Root.client.d.ts.map +1 -1
- package/dist/react/Root.client.js +6 -2
- package/dist/react/Root.client.js.map +1 -1
- package/dist/react/Root.d.ts.map +1 -1
- package/dist/react/Root.js +3 -1
- package/dist/react/Root.js.map +1 -1
- package/dist/react/internal/ThemeToggle.client.d.ts.map +1 -1
- package/dist/react/internal/ThemeToggle.client.js +3 -1
- package/dist/react/internal/ThemeToggle.client.js.map +1 -1
- package/dist/styles/index.css +13 -0
- package/package.json +1 -1
- package/src/react/Head.tsx +1 -1
- package/src/react/Root.client.tsx +7 -3
- package/src/react/Root.tsx +3 -0
- package/src/react/internal/ThemeToggle.client.tsx +3 -1
- package/src/styles/index.css +13 -0
package/dist/react/Head.js
CHANGED
|
@@ -33,7 +33,7 @@ export function Head() {
|
|
|
33
33
|
return (_jsxs(_Fragment, { children: [!staticScheme && (_jsx("script", {
|
|
34
34
|
// biome-ignore lint/security/noDangerouslySetInnerHtml: blocking script to prevent FOUC
|
|
35
35
|
dangerouslySetInnerHTML: {
|
|
36
|
-
__html: `(function(){try{var t=localStorage.getItem('vocs-theme');if(t==='light'||t==='dark'){
|
|
36
|
+
__html: `(function(){try{var e=document.documentElement;var s=function(t){e.setAttribute('data-vocs-theme',t);e.style.colorScheme=t};var t=localStorage.getItem('vocs-theme');if(t==='light'||t==='dark'){s(t)}else if(window.matchMedia('(prefers-color-scheme:dark)').matches){s('dark')}else if(window.matchMedia('(prefers-color-scheme:light)').matches){s('light')}else{s('dark')}}catch(e){}})()`,
|
|
37
37
|
} })), _jsx("meta", { name: "color-scheme", content: colorScheme }), _jsx("meta", { name: "robots", content: frontmatter?.robots ?? (import.meta.env.PROD ? 'index, follow' : 'noindex, nofollow') }), fullTitle && _jsx("title", { children: fullTitle }, "title"), description && _jsx("meta", { name: "description", content: description }), baseUrl && _jsx("base", { href: baseUrl }), canonicalUrl && _jsx("link", { rel: "canonical", href: canonicalUrl }), iconUrl && typeof iconUrl === 'string' && (_jsx("link", { rel: "icon", href: iconUrl, type: getIconType(iconUrl) })), iconUrl && typeof iconUrl !== 'string' && (_jsx("link", { rel: "icon", href: iconUrl.light, type: getIconType(iconUrl.light) })), iconUrl && typeof iconUrl !== 'string' && (_jsx("link", { rel: "icon", href: iconUrl.dark, type: getIconType(iconUrl.dark), media: "(prefers-color-scheme: dark)" })), frontmatter?.author && _jsx("meta", { name: "author", content: frontmatter.author }), _jsx("meta", { property: "og:type", content: "website" }), title && _jsx("meta", { property: "og:title", content: title }), config.title && _jsx("meta", { property: "og:site_name", content: config.title }), baseUrl && _jsx("meta", { property: "og:url", content: canonicalUrl ?? baseUrl }), description && _jsx("meta", { property: "og:description", content: description }), ogImage && _jsx("meta", { property: "og:image", content: ogImage }), frontmatter?.author && _jsx("meta", { property: "article:author", content: frontmatter.author }), frontmatter?.lastModified && (_jsx("meta", { property: "article:modified_time", content: frontmatter.lastModified })), _jsx("meta", { name: "twitter:card", content: "summary_large_image" }), title && _jsx("meta", { name: "twitter:title", content: title }), description && _jsx("meta", { name: "twitter:description", content: description }), ogImage && _jsx("meta", { property: "twitter:image", content: ogImage })] }));
|
|
38
38
|
}
|
|
39
39
|
function getIconType(iconUrl) {
|
package/dist/react/Head.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Head.js","sourceRoot":"","sources":["../../src/react/Head.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IACtC,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,CAAA;IAE5C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;IAE/F,MAAM,YAAY,GAAG,WAAW,KAAK,YAAY,CAAA;IAEjD,MAAM,KAAK,GAAG,WAAW,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAA;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAA;IACrF,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAE5E,MAAM,WAAW,GAAG,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,CAAA;IAElE,MAAM,YAAY,GAAG,QAAQ,IAAI,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IACvF,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;QAC5B,IAAI,OAAO,UAAU,KAAK,UAAU;YAAE,OAAO,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9E,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAA;QACrD,IAAI,cAAc,KAAK,aAAa;YAAE,OAAO,SAAS,CAAA;QACtD,OAAO,GAAG,OAAO,IAAI,EAAE,+CAA+C,CAAA;IACxE,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,OAAO,GAAG,eAAe;QAC7B,CAAC,CAAC,eAAe;aACZ,OAAO,CACN,OAAO,EACP,GAAG,OAAO,IAAI,EAAE,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,CACnF;aACA,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;aAClD,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,CACL,8BAEG,CAAC,YAAY,IAAI,CAChB;gBACE,wFAAwF;gBACxF,uBAAuB,EAAE;oBACvB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Head.js","sourceRoot":"","sources":["../../src/react/Head.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.client.d.ts","sourceRoot":"","sources":["../../src/react/Root.client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Root.client.d.ts","sourceRoot":"","sources":["../../src/react/Root.client.tsx"],"names":[],"mappings":"AA6CA,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAoCtE"}
|
|
@@ -21,11 +21,13 @@ function getSystemTheme() {
|
|
|
21
21
|
const disableTransitionsCSS = '*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';
|
|
22
22
|
function applyTheme(theme) {
|
|
23
23
|
const resolved = theme === 'system' ? getSystemTheme() : theme;
|
|
24
|
+
const html = document.documentElement;
|
|
24
25
|
// Disable transitions to prevent flash
|
|
25
26
|
const style = document.createElement('style');
|
|
26
27
|
style.appendChild(document.createTextNode(disableTransitionsCSS));
|
|
27
28
|
document.head.appendChild(style);
|
|
28
|
-
|
|
29
|
+
html.setAttribute('data-vocs-theme', resolved);
|
|
30
|
+
html.style.colorScheme = resolved;
|
|
29
31
|
(() => window.getComputedStyle(document.body))();
|
|
30
32
|
requestAnimationFrame(() => {
|
|
31
33
|
requestAnimationFrame(() => {
|
|
@@ -39,8 +41,10 @@ export function Root_client({ children }) {
|
|
|
39
41
|
// React to theme config changes.
|
|
40
42
|
useEffect(() => {
|
|
41
43
|
const html = document.documentElement;
|
|
42
|
-
if (staticScheme)
|
|
44
|
+
if (staticScheme) {
|
|
45
|
+
html.setAttribute('data-vocs-theme', colorScheme);
|
|
43
46
|
html.style.colorScheme = colorScheme;
|
|
47
|
+
}
|
|
44
48
|
else
|
|
45
49
|
applyTheme(getStoredTheme());
|
|
46
50
|
if (html) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.client.js","sourceRoot":"","sources":["../../src/react/Root.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,UAAU,GAAG,YAAY,CAAA;AAE/B,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAA;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC/C,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IACjF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AACrF,CAAC;AAED,MAAM,qBAAqB,GACzB,6KAA6K,CAAA;AAE/K,SAAS,UAAU,CAAC,KAAkC;IACpD,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"Root.client.js","sourceRoot":"","sources":["../../src/react/Root.client.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/Root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../../src/react/Root.tsx"],"names":[],"mappings":"AAQA,wBAAsB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../../src/react/Root.tsx"],"names":[],"mappings":"AAQA,wBAAsB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,oDAwBrE"}
|
package/dist/react/Root.js
CHANGED
|
@@ -8,6 +8,8 @@ import { Root_client } from './Root.client.js';
|
|
|
8
8
|
import { ScrollRestoration } from './ScrollRestoration.js';
|
|
9
9
|
export async function Root({ children }) {
|
|
10
10
|
const { colorScheme, accentColor } = config;
|
|
11
|
-
return (_jsxs("html", { "data-vocs": true,
|
|
11
|
+
return (_jsxs("html", { "data-vocs": true, ...(colorScheme === 'light' || colorScheme === 'dark'
|
|
12
|
+
? { 'data-vocs-theme': colorScheme }
|
|
13
|
+
: {}), lang: "en", style: { colorScheme, '--vocs-color-accent': accentColor }, suppressHydrationWarning: true, children: [_jsxs("head", { children: [_jsx("link", { rel: "stylesheet", href: stylesUrl }), userStylesUrl && _jsx("link", { rel: "stylesheet", href: userStylesUrl }), groupIconsStylesUrl && _jsx("link", { rel: "stylesheet", href: groupIconsStylesUrl }), _jsx(Head, {})] }), _jsxs("body", { "data-version": "1.0", children: [_jsx(Root_client, { children: children }), _jsx(ScrollRestoration, {})] })] }));
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=Root.js.map
|
package/dist/react/Root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/react/Root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,mBAAmB,MAAM,kCAAkC,CAAA;AAClE,OAAO,aAAa,MAAM,0BAA0B,CAAA;AACpD,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAiC;IACpE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC3C,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/react/Root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,mBAAmB,MAAM,kCAAkC,CAAA;AAClE,OAAO,aAAa,MAAM,0BAA0B,CAAA;AACpD,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAiC;IACpE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC3C,OAAO,CACL,sCAEM,CAAC,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,MAAM;YACpD,CAAC,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC,EACP,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAW,EACnE,wBAAwB,mBAExB,2BACE,eAAM,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,SAAS,GAAI,EACzC,aAAa,IAAI,eAAM,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,aAAa,GAAI,EAC/D,mBAAmB,IAAI,eAAM,GAAG,EAAC,YAAY,EAAC,IAAI,EAAE,mBAAmB,GAAI,EAC5E,KAAC,IAAI,KAAG,IACH,EACP,gCAAmB,KAAK,aACtB,KAAC,WAAW,cAAE,QAAQ,GAAe,EACrC,KAAC,iBAAiB,KAAG,IAChB,IACF,CACR,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.client.d.ts","sourceRoot":"","sources":["../../../src/react/internal/ThemeToggle.client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemeToggle.client.d.ts","sourceRoot":"","sources":["../../../src/react/internal/ThemeToggle.client.tsx"],"names":[],"mappings":"AAkDA,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,kDAmDnD;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAY,KAAK,GAAG;QAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/B,CAAA;CACF"}
|
|
@@ -24,11 +24,13 @@ function getSystemTheme() {
|
|
|
24
24
|
const disableTransitionsCSS = '*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}';
|
|
25
25
|
function applyTheme(theme) {
|
|
26
26
|
const resolved = theme === 'system' ? getSystemTheme() : theme;
|
|
27
|
+
const html = document.documentElement;
|
|
27
28
|
// Disable transitions to prevent flash
|
|
28
29
|
const style = document.createElement('style');
|
|
29
30
|
style.appendChild(document.createTextNode(disableTransitionsCSS));
|
|
30
31
|
document.head.appendChild(style);
|
|
31
|
-
|
|
32
|
+
html.setAttribute('data-vocs-theme', resolved);
|
|
33
|
+
html.style.colorScheme = resolved;
|
|
32
34
|
(() => window.getComputedStyle(document.body))();
|
|
33
35
|
requestAnimationFrame(() => {
|
|
34
36
|
requestAnimationFrame(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.client.js","sourceRoot":"","sources":["../../../src/react/internal/ThemeToggle.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,aAAa,MAAM,uBAAuB,CAAA;AACjD,OAAO,UAAU,MAAM,oBAAoB,CAAA;AAC3C,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAEzC,MAAM,UAAU,GAAG,YAAY,CAAA;AAI/B,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAA;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC/C,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IACjF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAA;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AACrF,CAAC;AAED,MAAM,qBAAqB,GACzB,6KAA6K,CAAA;AAE/K,SAAS,UAAU,CAAC,KAAY;IAC9B,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"ThemeToggle.client.js","sourceRoot":"","sources":["../../../src/react/internal/ThemeToggle.client.tsx"],"names":[],"mappings":"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"}
|
package/dist/styles/index.css
CHANGED
|
@@ -31,6 +31,19 @@
|
|
|
31
31
|
-moz-osx-font-smoothing: grayscale;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* Keep Lightning CSS light-dark() output aligned with Vocs' theme toggle. */
|
|
35
|
+
:root[data-vocs-theme="light"] {
|
|
36
|
+
--lightningcss-light: initial;
|
|
37
|
+
--lightningcss-dark: ;
|
|
38
|
+
color-scheme: light;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:root[data-vocs-theme="dark"] {
|
|
42
|
+
--lightningcss-light: ;
|
|
43
|
+
--lightningcss-dark: initial;
|
|
44
|
+
color-scheme: dark;
|
|
45
|
+
}
|
|
46
|
+
|
|
34
47
|
html {
|
|
35
48
|
scroll-padding-top: calc(var(--vocs-spacing-topNav) + var(--vocs-spacing-banner) + 1rem);
|
|
36
49
|
}
|
package/package.json
CHANGED
package/src/react/Head.tsx
CHANGED
|
@@ -46,7 +46,7 @@ export function Head() {
|
|
|
46
46
|
<script
|
|
47
47
|
// biome-ignore lint/security/noDangerouslySetInnerHtml: blocking script to prevent FOUC
|
|
48
48
|
dangerouslySetInnerHTML={{
|
|
49
|
-
__html: `(function(){try{var t=localStorage.getItem('vocs-theme');if(t==='light'||t==='dark'){
|
|
49
|
+
__html: `(function(){try{var e=document.documentElement;var s=function(t){e.setAttribute('data-vocs-theme',t);e.style.colorScheme=t};var t=localStorage.getItem('vocs-theme');if(t==='light'||t==='dark'){s(t)}else if(window.matchMedia('(prefers-color-scheme:dark)').matches){s('dark')}else if(window.matchMedia('(prefers-color-scheme:light)').matches){s('light')}else{s('dark')}}catch(e){}})()`,
|
|
50
50
|
}}
|
|
51
51
|
/>
|
|
52
52
|
)}
|
|
@@ -24,13 +24,15 @@ const disableTransitionsCSS =
|
|
|
24
24
|
|
|
25
25
|
function applyTheme(theme: 'light' | 'dark' | 'system') {
|
|
26
26
|
const resolved = theme === 'system' ? getSystemTheme() : theme
|
|
27
|
+
const html = document.documentElement
|
|
27
28
|
|
|
28
29
|
// Disable transitions to prevent flash
|
|
29
30
|
const style = document.createElement('style')
|
|
30
31
|
style.appendChild(document.createTextNode(disableTransitionsCSS))
|
|
31
32
|
document.head.appendChild(style)
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
html.setAttribute('data-vocs-theme', resolved)
|
|
35
|
+
html.style.colorScheme = resolved
|
|
34
36
|
|
|
35
37
|
// Force reflow and re-enable transitions
|
|
36
38
|
;(() => window.getComputedStyle(document.body))()
|
|
@@ -50,8 +52,10 @@ export function Root_client({ children }: { children: React.ReactNode }) {
|
|
|
50
52
|
useEffect(() => {
|
|
51
53
|
const html = document.documentElement
|
|
52
54
|
|
|
53
|
-
if (staticScheme)
|
|
54
|
-
|
|
55
|
+
if (staticScheme) {
|
|
56
|
+
html.setAttribute('data-vocs-theme', colorScheme)
|
|
57
|
+
html.style.colorScheme = colorScheme
|
|
58
|
+
} else applyTheme(getStoredTheme())
|
|
55
59
|
|
|
56
60
|
if (html) {
|
|
57
61
|
if (!import.meta.env.PROD) html.style.setProperty('--vocs-color-accent', accentColor)
|
package/src/react/Root.tsx
CHANGED
|
@@ -11,6 +11,9 @@ export async function Root({ children }: { children: React.ReactNode }) {
|
|
|
11
11
|
return (
|
|
12
12
|
<html
|
|
13
13
|
data-vocs
|
|
14
|
+
{...(colorScheme === 'light' || colorScheme === 'dark'
|
|
15
|
+
? { 'data-vocs-theme': colorScheme }
|
|
16
|
+
: {})}
|
|
14
17
|
lang="en"
|
|
15
18
|
style={{ colorScheme, '--vocs-color-accent': accentColor } as never}
|
|
16
19
|
suppressHydrationWarning
|
|
@@ -29,13 +29,15 @@ const disableTransitionsCSS =
|
|
|
29
29
|
|
|
30
30
|
function applyTheme(theme: Theme) {
|
|
31
31
|
const resolved = theme === 'system' ? getSystemTheme() : theme
|
|
32
|
+
const html = document.documentElement
|
|
32
33
|
|
|
33
34
|
// Disable transitions to prevent flash
|
|
34
35
|
const style = document.createElement('style')
|
|
35
36
|
style.appendChild(document.createTextNode(disableTransitionsCSS))
|
|
36
37
|
document.head.appendChild(style)
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
html.setAttribute('data-vocs-theme', resolved)
|
|
40
|
+
html.style.colorScheme = resolved
|
|
39
41
|
|
|
40
42
|
// Force reflow and re-enable transitions
|
|
41
43
|
;(() => window.getComputedStyle(document.body))()
|
package/src/styles/index.css
CHANGED
|
@@ -31,6 +31,19 @@
|
|
|
31
31
|
-moz-osx-font-smoothing: grayscale;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* Keep Lightning CSS light-dark() output aligned with Vocs' theme toggle. */
|
|
35
|
+
:root[data-vocs-theme="light"] {
|
|
36
|
+
--lightningcss-light: initial;
|
|
37
|
+
--lightningcss-dark: ;
|
|
38
|
+
color-scheme: light;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:root[data-vocs-theme="dark"] {
|
|
42
|
+
--lightningcss-light: ;
|
|
43
|
+
--lightningcss-dark: initial;
|
|
44
|
+
color-scheme: dark;
|
|
45
|
+
}
|
|
46
|
+
|
|
34
47
|
html {
|
|
35
48
|
scroll-padding-top: calc(var(--vocs-spacing-topNav) + var(--vocs-spacing-banner) + 1rem);
|
|
36
49
|
}
|