@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 CHANGED
@@ -1 +1 @@
1
- :root{--vp-c-bg:var(--instui-color-background-base);--vp-c-bg-alt:var(--instui-color-background-container);--vp-c-bg-soft:var(--instui-color-background-muted);--vp-c-text-1:var(--instui-color-text-base);--vp-c-text-2:var(--instui-color-text-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-border:var(--instui-color-stroke-base);--vp-c-divider:var(--instui-color-stroke-base);--vp-c-gutter:var(--instui-color-stroke-base);--vp-c-success-1:var(--instui-color-background-success);--vp-c-warning-1:var(--instui-color-background-warning);--vp-c-danger-1:var(--instui-color-background-error)}
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
- /** VitePress CSS variable → the Instructure token it resolves to. */
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
- * @param options - {@link ToVitePressCssOptions}.
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
- * const css = toVitePressCss();
31
- * // ":root { --vp-c-bg: var(--instui-color-background-base); }"
32
- * // Write it into .vitepress/theme/custom.css alongside @pantoken/css.
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, vitePressCss as default, vitePressCss, toVitePressCss };
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
- * @param options - {@link ToVitePressCssOptions}.
34
- * @returns The bridging CSS string.
35
+ * Wraps the variable mappings in the specified selector (default `:root`).
35
36
  *
36
- * @example
37
- * ```ts
38
- * import { toVitePressCss } from "@pantoken/vitepress";
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
- return `/* VitePress themed with Instructure tokens (pantoken) */\n${options.selector ?? ":root"} {\n${Object.entries(VITEPRESS_TO_INSTUI).map(([vp, instui]) => ` ${vp}: var(${instui});`).join("\n")}\n}\n`;
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, vitePressCss as default, vitePressCss, toVitePressCss };
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.1.1",
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",