@pantoken/vitepress 0.1.1 → 0.2.0
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/custom.css +1 -1
- package/dist/index.d.mts +10 -16
- package/dist/index.mjs +30 -31
- package/dist/vitepress-vars.css +1 -0
- package/package.json +1 -1
package/dist/custom.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--vp-c-bg:var(--instui-color-background-
|
|
1
|
+
:root{--vp-font-family-base:var(--instui-font-family-base);--vp-c-text-1:var(--instui-color-text-base);--vp-c-text-2:var(--instui-color-text-muted);--vp-c-text-3:var(--instui-color-text-interactive-input-placeholder);--vp-c-bg:var(--instui-color-background-page);--vp-c-bg-alt:var(--instui-color-background-container);--vp-c-bg-elv:var(--instui-color-background-container);--vp-c-bg-soft:var(--instui-color-background-container);--vp-c-border:var(--instui-color-stroke-base);--vp-c-divider:var(--instui-color-stroke-base);--vp-c-gutter:var(--instui-color-stroke-base);--vp-c-default-1:var(--instui-color-text-base);--vp-c-default-2:var(--instui-color-text-muted);--vp-c-default-3:var(--instui-color-stroke-base);--vp-c-default-soft:var(--instui-color-background-muted);--vp-c-brand-1:var(--instui-color-text-interactive-navigation-primary-base);--vp-c-brand-2:var(--instui-color-text-interactive-navigation-primary-hover);--vp-c-brand-3:var(--instui-color-background-info);--vp-c-brand-soft:var(--instui-color-background-info);--vp-c-tip-1:var(--instui-color-text-info);--vp-c-tip-2:var(--instui-color-text-info);--vp-c-tip-3:var(--instui-color-background-info);--vp-c-tip-soft:var(--instui-color-background-info);--vp-c-note-1:var(--instui-color-text-info);--vp-c-note-2:var(--instui-color-text-info);--vp-c-note-3:var(--instui-color-background-info);--vp-c-note-soft:var(--instui-color-background-info);--vp-c-success-1:var(--instui-color-text-success);--vp-c-success-2:var(--instui-color-text-success);--vp-c-success-3:var(--instui-color-background-success);--vp-c-success-soft:var(--instui-color-background-success);--vp-c-important-1:var(--instui-color-text-accent-violet);--vp-c-important-2:var(--instui-color-text-accent-violet);--vp-c-important-3:var(--instui-color-background-accent-violet);--vp-c-important-soft:var(--instui-color-background-accent-violet);--vp-c-warning-1:var(--instui-color-text-warning);--vp-c-warning-2:var(--instui-color-text-warning);--vp-c-warning-3:var(--instui-color-background-warning);--vp-c-warning-soft:var(--instui-color-background-warning);--vp-c-danger-1:var(--instui-color-text-error);--vp-c-danger-2:var(--instui-color-text-error);--vp-c-danger-3:var(--instui-color-background-error);--vp-c-danger-soft:var(--instui-color-background-error);--vp-c-caution-1:var(--instui-color-text-error);--vp-c-caution-2:var(--instui-color-text-error);--vp-c-caution-3:var(--instui-color-background-error);--vp-c-caution-soft:var(--instui-color-background-error);--vp-button-brand-border:transparent;--vp-button-brand-text:var(--instui-color-text-on-color);--vp-button-brand-bg:var(--instui-color-background-info);--vp-button-brand-hover-border:transparent;--vp-button-brand-hover-text:var(--instui-color-text-on-color);--vp-button-brand-hover-bg:var(--instui-color-background-info);--vp-button-brand-active-border:transparent;--vp-button-brand-active-text:var(--instui-color-text-on-color);--vp-button-brand-active-bg:var(--instui-color-background-info);--vp-button-alt-border:transparent;--vp-button-alt-text:var(--instui-color-text-base);--vp-button-alt-bg:var(--instui-color-background-muted);--vp-button-alt-hover-border:transparent;--vp-button-alt-hover-text:var(--instui-color-text-base);--vp-button-alt-hover-bg:var(--instui-color-background-muted);--vp-button-alt-active-border:transparent;--vp-button-alt-active-text:var(--instui-color-text-base);--vp-button-alt-active-bg:var(--instui-color-stroke-base);--vp-custom-block-info-text:var(--instui-color-text-base);--vp-custom-block-info-bg:var(--instui-color-background-muted);--vp-custom-block-info-code-bg:var(--instui-color-background-muted);--vp-custom-block-note-text:var(--instui-color-text-base);--vp-custom-block-note-bg:var(--instui-color-background-muted);--vp-custom-block-note-code-bg:var(--instui-color-background-muted);--vp-custom-block-tip-text:var(--instui-color-text-base);--vp-custom-block-tip-bg:var(--instui-color-background-info);--vp-custom-block-tip-code-bg:var(--instui-color-background-info);--vp-custom-block-important-text:var(--instui-color-text-base);--vp-custom-block-important-bg:var(--instui-color-background-accent-violet);--vp-custom-block-important-code-bg:var(--instui-color-background-accent-violet);--vp-custom-block-warning-text:var(--instui-color-text-base);--vp-custom-block-warning-bg:var(--instui-color-background-warning);--vp-custom-block-warning-code-bg:var(--instui-color-background-warning);--vp-custom-block-danger-text:var(--instui-color-text-base);--vp-custom-block-danger-bg:var(--instui-color-background-error);--vp-custom-block-danger-code-bg:var(--instui-color-background-error);--vp-custom-block-caution-text:var(--instui-color-text-base);--vp-custom-block-caution-bg:var(--instui-color-background-error);--vp-custom-block-caution-code-bg:var(--instui-color-background-error);--vp-custom-block-details-text:var(--instui-color-text-base);--vp-custom-block-details-bg:var(--instui-color-background-muted);--vp-custom-block-details-code-bg:var(--instui-color-background-muted);--vp-input-border-color:var(--instui-color-stroke-base);--vp-input-bg-color:var(--instui-color-background-container);--vp-input-switch-bg-color:var(--instui-color-background-muted);--vp-nav-bg-color:var(--instui-color-background-base);--vp-nav-screen-bg-color:var(--instui-color-background-page);--vp-local-nav-bg-color:var(--instui-color-background-page);--vp-sidebar-bg-color:var(--instui-component-view-background-primary);--vp-badge-info-text:var(--instui-color-text-muted);--vp-badge-info-bg:var(--instui-color-background-muted);--vp-badge-tip-text:var(--instui-color-text-info);--vp-badge-tip-bg:var(--instui-color-background-info);--vp-badge-warning-text:var(--instui-color-text-warning);--vp-badge-warning-bg:var(--instui-color-background-warning);--vp-badge-danger-text:var(--instui-color-text-error);--vp-badge-danger-bg:var(--instui-color-background-error);--vp-carbon-ads-text-color:var(--instui-color-text-base);--vp-carbon-ads-poweredby-color:var(--instui-color-text-muted);--vp-carbon-ads-bg-color:var(--instui-color-background-muted);--vp-carbon-ads-hover-text-color:var(--instui-color-text-interactive-navigation-primary-base);--vp-carbon-ads-hover-poweredby-color:var(--instui-color-text-base);--vp-local-search-bg:var(--instui-color-background-page);--vp-local-search-result-bg:var(--instui-color-background-page);--vp-local-search-result-border:var(--instui-color-stroke-base);--vp-local-search-result-selected-bg:var(--instui-color-background-page);--vp-local-search-result-selected-border:var(--instui-color-text-interactive-navigation-primary-base);--vp-local-search-highlight-bg:var(--instui-color-text-interactive-navigation-primary-base);--vp-local-search-highlight-text:var(--instui-color-text-on-color)}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
//#region src/vitepress-vars.d.ts
|
|
2
|
+
/** VitePress CSS variable → the Instructure token it resolves to. */
|
|
3
|
+
declare const VITEPRESS_TO_INSTUI: Readonly<Record<string, string>>;
|
|
4
|
+
//#endregion
|
|
1
5
|
//#region src/index.d.ts
|
|
2
6
|
/**
|
|
3
7
|
* `@pantoken/vitepress` — theme a VitePress site with Instructure tokens.
|
|
@@ -10,9 +14,7 @@
|
|
|
10
14
|
* @module
|
|
11
15
|
* @beta
|
|
12
16
|
*/
|
|
13
|
-
/**
|
|
14
|
-
declare const VITEPRESS_TO_INSTUI: Readonly<Record<string, string>>;
|
|
15
|
-
/** Options for {@link toVitePressCss}. */
|
|
17
|
+
/** Options for `toVitePressCss`. */
|
|
16
18
|
interface ToVitePressCssOptions {
|
|
17
19
|
/** The selector the variables are emitted under (default `":root"`). */
|
|
18
20
|
selector?: string;
|
|
@@ -20,20 +22,12 @@ interface ToVitePressCssOptions {
|
|
|
20
22
|
/**
|
|
21
23
|
* Emit the VitePress → Instructure CSS-variable bridge.
|
|
22
24
|
*
|
|
23
|
-
*
|
|
24
|
-
* @returns The bridging CSS string.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```ts
|
|
28
|
-
* import { toVitePressCss } from "@pantoken/vitepress";
|
|
25
|
+
* Wraps the variable mappings in the specified selector (default `:root`).
|
|
29
26
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* ```
|
|
27
|
+
* @internal
|
|
28
|
+
* @param options - {@link ToVitePressCssOptions}.
|
|
29
|
+
* @returns The bridging CSS string wrapped in the selector.
|
|
34
30
|
*/
|
|
35
31
|
declare function toVitePressCss(options?: ToVitePressCssOptions): string;
|
|
36
|
-
/** The ready-made bridge stylesheet. */
|
|
37
|
-
declare const vitePressCss: string;
|
|
38
32
|
//#endregion
|
|
39
|
-
export { ToVitePressCssOptions, VITEPRESS_TO_INSTUI,
|
|
33
|
+
export { ToVitePressCssOptions, VITEPRESS_TO_INSTUI, toVitePressCss as default, toVitePressCss };
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
/** Raw VitePress CSS variables and documentation. */
|
|
5
|
+
const VITEPRESS_VARS_CSS = readFileSync(join(dirname(fileURLToPath(import.meta.url)), "vitepress-vars.css"), "utf-8");
|
|
6
|
+
/**
|
|
7
|
+
* Parse the VitePress variables CSS and extract the mappings into a Record.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
* @returns A mapping of `--vp-*` to `--instui-*` tokens.
|
|
11
|
+
*/
|
|
12
|
+
function parseCssToMapping() {
|
|
13
|
+
const mappings = {};
|
|
14
|
+
for (const match of VITEPRESS_VARS_CSS.matchAll(/--vp-([a-z0-9-]+):\s*var\((--instui-[a-z0-9-]+)\)/g)) mappings[`--vp-${match[1]}`] = match[2];
|
|
15
|
+
return Object.freeze(mappings);
|
|
16
|
+
}
|
|
17
|
+
/** VitePress CSS variable → the Instructure token it resolves to. */
|
|
18
|
+
const VITEPRESS_TO_INSTUI = parseCssToMapping();
|
|
19
|
+
//#endregion
|
|
1
20
|
//#region src/index.ts
|
|
2
21
|
/**
|
|
3
22
|
* `@pantoken/vitepress` — theme a VitePress site with Instructure tokens.
|
|
@@ -10,42 +29,22 @@
|
|
|
10
29
|
* @module
|
|
11
30
|
* @beta
|
|
12
31
|
*/
|
|
13
|
-
/** VitePress CSS variable → the Instructure token it resolves to. */
|
|
14
|
-
const VITEPRESS_TO_INSTUI = Object.freeze({
|
|
15
|
-
"--vp-c-bg": "--instui-color-background-base",
|
|
16
|
-
"--vp-c-bg-alt": "--instui-color-background-container",
|
|
17
|
-
"--vp-c-bg-soft": "--instui-color-background-muted",
|
|
18
|
-
"--vp-c-text-1": "--instui-color-text-base",
|
|
19
|
-
"--vp-c-text-2": "--instui-color-text-muted",
|
|
20
|
-
"--vp-c-brand-1": "--instui-color-text-interactive-navigation-primary-base",
|
|
21
|
-
"--vp-c-brand-2": "--instui-color-text-interactive-navigation-primary-hover",
|
|
22
|
-
"--vp-c-brand-3": "--instui-color-background-info",
|
|
23
|
-
"--vp-c-border": "--instui-color-stroke-base",
|
|
24
|
-
"--vp-c-divider": "--instui-color-stroke-base",
|
|
25
|
-
"--vp-c-gutter": "--instui-color-stroke-base",
|
|
26
|
-
"--vp-c-success-1": "--instui-color-background-success",
|
|
27
|
-
"--vp-c-warning-1": "--instui-color-background-warning",
|
|
28
|
-
"--vp-c-danger-1": "--instui-color-background-error"
|
|
29
|
-
});
|
|
30
32
|
/**
|
|
31
33
|
* Emit the VitePress → Instructure CSS-variable bridge.
|
|
32
34
|
*
|
|
33
|
-
*
|
|
34
|
-
* @returns The bridging CSS string.
|
|
35
|
+
* Wraps the variable mappings in the specified selector (default `:root`).
|
|
35
36
|
*
|
|
36
|
-
* @
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* const css = toVitePressCss();
|
|
41
|
-
* // ":root { --vp-c-bg: var(--instui-color-background-base); … }"
|
|
42
|
-
* // Write it into .vitepress/theme/custom.css alongside @pantoken/css.
|
|
43
|
-
* ```
|
|
37
|
+
* @internal
|
|
38
|
+
* @param options - {@link ToVitePressCssOptions}.
|
|
39
|
+
* @returns The bridging CSS string wrapped in the selector.
|
|
44
40
|
*/
|
|
45
41
|
function toVitePressCss(options = {}) {
|
|
46
|
-
|
|
42
|
+
const selector = options.selector ?? ":root";
|
|
43
|
+
if (selector === ":root") return VITEPRESS_VARS_CSS;
|
|
44
|
+
return `${selector} {\n ${VITEPRESS_VARS_CSS.split("\n").filter((line) => {
|
|
45
|
+
const trimmed = line.trim();
|
|
46
|
+
return trimmed.startsWith("--vp-") && trimmed.includes(":");
|
|
47
|
+
}).map((line) => line.trim()).join("\n ")}\n}\n`;
|
|
47
48
|
}
|
|
48
|
-
/** The ready-made bridge stylesheet. */
|
|
49
|
-
const vitePressCss = toVitePressCss();
|
|
50
49
|
//#endregion
|
|
51
|
-
export { VITEPRESS_TO_INSTUI,
|
|
50
|
+
export { VITEPRESS_TO_INSTUI, toVitePressCss as default, toVitePressCss };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--vp-font-family-base:var(--instui-font-family-base);--vp-c-text-1:var(--instui-color-text-base);--vp-c-text-2:var(--instui-color-text-muted);--vp-c-text-3:var(--instui-color-text-interactive-input-placeholder);--vp-c-bg:var(--instui-color-background-page);--vp-c-bg-alt:var(--instui-color-background-container);--vp-c-bg-elv:var(--instui-color-background-container);--vp-c-bg-soft:var(--instui-color-background-container);--vp-c-border:var(--instui-color-stroke-base);--vp-c-divider:var(--instui-color-stroke-base);--vp-c-gutter:var(--instui-color-stroke-base);--vp-c-default-1:var(--instui-color-text-base);--vp-c-default-2:var(--instui-color-text-muted);--vp-c-default-3:var(--instui-color-stroke-base);--vp-c-default-soft:var(--instui-color-background-muted);--vp-c-brand-1:var(--instui-color-text-interactive-navigation-primary-base);--vp-c-brand-2:var(--instui-color-text-interactive-navigation-primary-hover);--vp-c-brand-3:var(--instui-color-background-info);--vp-c-brand-soft:var(--instui-color-background-info);--vp-c-tip-1:var(--instui-color-text-info);--vp-c-tip-2:var(--instui-color-text-info);--vp-c-tip-3:var(--instui-color-background-info);--vp-c-tip-soft:var(--instui-color-background-info);--vp-c-note-1:var(--instui-color-text-info);--vp-c-note-2:var(--instui-color-text-info);--vp-c-note-3:var(--instui-color-background-info);--vp-c-note-soft:var(--instui-color-background-info);--vp-c-success-1:var(--instui-color-text-success);--vp-c-success-2:var(--instui-color-text-success);--vp-c-success-3:var(--instui-color-background-success);--vp-c-success-soft:var(--instui-color-background-success);--vp-c-important-1:var(--instui-color-text-accent-violet);--vp-c-important-2:var(--instui-color-text-accent-violet);--vp-c-important-3:var(--instui-color-background-accent-violet);--vp-c-important-soft:var(--instui-color-background-accent-violet);--vp-c-warning-1:var(--instui-color-text-warning);--vp-c-warning-2:var(--instui-color-text-warning);--vp-c-warning-3:var(--instui-color-background-warning);--vp-c-warning-soft:var(--instui-color-background-warning);--vp-c-danger-1:var(--instui-color-text-error);--vp-c-danger-2:var(--instui-color-text-error);--vp-c-danger-3:var(--instui-color-background-error);--vp-c-danger-soft:var(--instui-color-background-error);--vp-c-caution-1:var(--instui-color-text-error);--vp-c-caution-2:var(--instui-color-text-error);--vp-c-caution-3:var(--instui-color-background-error);--vp-c-caution-soft:var(--instui-color-background-error);--vp-button-brand-border:transparent;--vp-button-brand-text:var(--instui-color-text-on-color);--vp-button-brand-bg:var(--instui-color-background-info);--vp-button-brand-hover-border:transparent;--vp-button-brand-hover-text:var(--instui-color-text-on-color);--vp-button-brand-hover-bg:var(--instui-color-background-info);--vp-button-brand-active-border:transparent;--vp-button-brand-active-text:var(--instui-color-text-on-color);--vp-button-brand-active-bg:var(--instui-color-background-info);--vp-button-alt-border:transparent;--vp-button-alt-text:var(--instui-color-text-base);--vp-button-alt-bg:var(--instui-color-background-muted);--vp-button-alt-hover-border:transparent;--vp-button-alt-hover-text:var(--instui-color-text-base);--vp-button-alt-hover-bg:var(--instui-color-background-muted);--vp-button-alt-active-border:transparent;--vp-button-alt-active-text:var(--instui-color-text-base);--vp-button-alt-active-bg:var(--instui-color-stroke-base);--vp-custom-block-info-text:var(--instui-color-text-base);--vp-custom-block-info-bg:var(--instui-color-background-muted);--vp-custom-block-info-code-bg:var(--instui-color-background-muted);--vp-custom-block-note-text:var(--instui-color-text-base);--vp-custom-block-note-bg:var(--instui-color-background-muted);--vp-custom-block-note-code-bg:var(--instui-color-background-muted);--vp-custom-block-tip-text:var(--instui-color-text-base);--vp-custom-block-tip-bg:var(--instui-color-background-info);--vp-custom-block-tip-code-bg:var(--instui-color-background-info);--vp-custom-block-important-text:var(--instui-color-text-base);--vp-custom-block-important-bg:var(--instui-color-background-accent-violet);--vp-custom-block-important-code-bg:var(--instui-color-background-accent-violet);--vp-custom-block-warning-text:var(--instui-color-text-base);--vp-custom-block-warning-bg:var(--instui-color-background-warning);--vp-custom-block-warning-code-bg:var(--instui-color-background-warning);--vp-custom-block-danger-text:var(--instui-color-text-base);--vp-custom-block-danger-bg:var(--instui-color-background-error);--vp-custom-block-danger-code-bg:var(--instui-color-background-error);--vp-custom-block-caution-text:var(--instui-color-text-base);--vp-custom-block-caution-bg:var(--instui-color-background-error);--vp-custom-block-caution-code-bg:var(--instui-color-background-error);--vp-custom-block-details-text:var(--instui-color-text-base);--vp-custom-block-details-bg:var(--instui-color-background-muted);--vp-custom-block-details-code-bg:var(--instui-color-background-muted);--vp-input-border-color:var(--instui-color-stroke-base);--vp-input-bg-color:var(--instui-color-background-container);--vp-input-switch-bg-color:var(--instui-color-background-muted);--vp-nav-bg-color:var(--instui-color-background-base);--vp-nav-screen-bg-color:var(--instui-color-background-page);--vp-local-nav-bg-color:var(--instui-color-background-page);--vp-sidebar-bg-color:var(--instui-component-view-background-primary);--vp-badge-info-text:var(--instui-color-text-muted);--vp-badge-info-bg:var(--instui-color-background-muted);--vp-badge-tip-text:var(--instui-color-text-info);--vp-badge-tip-bg:var(--instui-color-background-info);--vp-badge-warning-text:var(--instui-color-text-warning);--vp-badge-warning-bg:var(--instui-color-background-warning);--vp-badge-danger-text:var(--instui-color-text-error);--vp-badge-danger-bg:var(--instui-color-background-error);--vp-carbon-ads-text-color:var(--instui-color-text-base);--vp-carbon-ads-poweredby-color:var(--instui-color-text-muted);--vp-carbon-ads-bg-color:var(--instui-color-background-muted);--vp-carbon-ads-hover-text-color:var(--instui-color-text-interactive-navigation-primary-base);--vp-carbon-ads-hover-poweredby-color:var(--instui-color-text-base);--vp-local-search-bg:var(--instui-color-background-page);--vp-local-search-result-bg:var(--instui-color-background-page);--vp-local-search-result-border:var(--instui-color-stroke-base);--vp-local-search-result-selected-bg:var(--instui-color-background-page);--vp-local-search-result-selected-border:var(--instui-color-text-interactive-navigation-primary-base);--vp-local-search-highlight-bg:var(--instui-color-text-interactive-navigation-primary-base);--vp-local-search-highlight-text:var(--instui-color-text-on-color)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pantoken/vitepress",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Theme a VitePress site with Instructure tokens: maps VitePress --vp-* CSS variables to var(--instui-*).",
|
|
5
5
|
"homepage": "https://pantoken.iywahl.com",
|
|
6
6
|
"bugs": "https://github.com/thedannywahl/pantoken/issues",
|