@publier/shell 0.2.0 → 0.4.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/index.d.mts CHANGED
@@ -11,7 +11,7 @@
11
11
  * '@publier/shell/plugins/remark-structure' → search-index structure collector
12
12
  * '@publier/shell/plugins/remark-asides' → :::note / :::tip / :::caution / :::danger
13
13
  */
14
- import { g as docsShell, i as DocsShellOptions } from "./integration-Dvp9zu_X.mjs";
14
+ import { i as DocsShellOptions, v as docsShell } from "./integration-DGNkCfVa.mjs";
15
15
  import "astro/zod";
16
16
  /**
17
17
  * Cache-control + security headers emitted by `docsShell()` during
@@ -167,6 +167,19 @@ interface NavItem {
167
167
  href: string;
168
168
  external?: boolean;
169
169
  description?: string;
170
+ /** Mega menu: local path or https URL of a small decorative image. */
171
+ icon?: string;
172
+ }
173
+ /** Mega menu: a titled sub-group of a group; sub-groups nest up to three levels. */
174
+ interface NavGroup {
175
+ label: string;
176
+ items?: NavItem[];
177
+ groups?: NavGroup[];
178
+ }
179
+ /** Mega menu: the column shared by every group's panel (featured links). */
180
+ interface NavAside {
181
+ label?: string;
182
+ items: NavItem[];
170
183
  }
171
184
  /** A plain link, or a labelled group of one-level navigation items. */
172
185
  interface NavLink {
@@ -174,6 +187,14 @@ interface NavLink {
174
187
  href?: string;
175
188
  external?: boolean;
176
189
  items?: NavItem[];
190
+ /** Mega menu: titled sub-groups (a tree). */
191
+ groups?: NavGroup[];
192
+ /** Mega menu: sub-group columns on desktop, 1 to 4 (default 2). */
193
+ columns?: 1 | 2 | 3 | 4;
194
+ /** Mega menu: links under the group's body. */
195
+ footer?: NavItem[];
196
+ /** Mega menu: show a filter field in the group's panel. */
197
+ search?: boolean;
177
198
  }
178
199
  interface NavCta {
179
200
  label: string;
@@ -206,6 +227,8 @@ interface NavVariant {
206
227
  tabs: NavLink[];
207
228
  links: NavLink[];
208
229
  cta: NavCta | null;
230
+ /** Mega menu: featured links shown in every group's panel. */
231
+ aside?: NavAside;
209
232
  }
210
233
  interface NavPathRule {
211
234
  path: string;
@@ -220,4 +243,4 @@ interface NavConfig {
220
243
  searchHotkey: string;
221
244
  }
222
245
  declare function docsShell(options?: DocsShellOptions): AstroIntegration;
223
- export { hoistMediaOutOfUtilitiesLayer as _, DocsSidebarMetaOverride as a, NavCta as c, NavPathRule as d, NavProduct as f, docsShell as g, SiteConfig as h, DocsShellOptions as i, NavItem as l, SidebarAnchorConfig as m, DocVersionConfig as n, LlmsConfig as o, NavVariant as p, DocsConfig as r, NavConfig as s, AnnouncementConfig as t, NavLink as u, publierCascadeHoistPlugin as v };
246
+ export { SiteConfig as _, DocsSidebarMetaOverride as a, publierCascadeHoistPlugin as b, NavConfig as c, NavItem as d, NavLink as f, SidebarAnchorConfig as g, NavVariant as h, DocsShellOptions as i, NavCta as l, NavProduct as m, DocVersionConfig as n, LlmsConfig as o, NavPathRule as p, DocsConfig as r, NavAside as s, AnnouncementConfig as t, NavGroup as u, docsShell as v, hoistMediaOutOfUtilitiesLayer as y };
@@ -6,5 +6,5 @@
6
6
  * `injectScript`, `injectRoute`). The planner returns JSON "plans" the body
7
7
  * below iterates over and dispatches.
8
8
  */
9
- import { _ as hoistMediaOutOfUtilitiesLayer, a as DocsSidebarMetaOverride, c as NavCta, d as NavPathRule, f as NavProduct, g as docsShell, h as SiteConfig, i as DocsShellOptions, l as NavItem, m as SidebarAnchorConfig, n as DocVersionConfig, o as LlmsConfig, p as NavVariant, r as DocsConfig, s as NavConfig, t as AnnouncementConfig, u as NavLink, v as publierCascadeHoistPlugin } from "./integration-Dvp9zu_X.mjs";
10
- export { AnnouncementConfig, DocVersionConfig, DocsConfig, DocsShellOptions, DocsSidebarMetaOverride, LlmsConfig, NavConfig, NavCta, NavItem, NavLink, NavPathRule, NavProduct, NavVariant, SidebarAnchorConfig, SiteConfig, docsShell, hoistMediaOutOfUtilitiesLayer, publierCascadeHoistPlugin };
9
+ import { _ as SiteConfig, a as DocsSidebarMetaOverride, b as publierCascadeHoistPlugin, c as NavConfig, d as NavItem, f as NavLink, g as SidebarAnchorConfig, h as NavVariant, i as DocsShellOptions, l as NavCta, m as NavProduct, n as DocVersionConfig, o as LlmsConfig, p as NavPathRule, r as DocsConfig, s as NavAside, t as AnnouncementConfig, u as NavGroup, v as docsShell, y as hoistMediaOutOfUtilitiesLayer } from "./integration-DGNkCfVa.mjs";
10
+ export { AnnouncementConfig, DocVersionConfig, DocsConfig, DocsShellOptions, DocsSidebarMetaOverride, LlmsConfig, NavAside, NavConfig, NavCta, NavGroup, NavItem, NavLink, NavPathRule, NavProduct, NavVariant, SidebarAnchorConfig, SiteConfig, docsShell, hoistMediaOutOfUtilitiesLayer, publierCascadeHoistPlugin };
@@ -0,0 +1 @@
1
+ const e=/* @__PURE__ */ `almond.aspen.atrium.broadsheet.canopy.catppuccin.dark.dusk.emerald.enterprise.folio.hearth.lattice.light.maple.marigold.meridian.monolith.neutral.nocturne.ocean.prism.purple.ruby.solar.vitepress`.split(`.`);function t(){return e}function n(t){return e.includes(t)}const r=[`display-xl`,`display-lg`,`display-md`,`heading-lg`,`heading-md`,`heading-sm`,`title`,`body-lg`,`body-md`,`body-sm`,`caption`,`label`,`button`,`code`],i=[`size`,`weight`,`line-height`,`tracking`];export{t as a,n as i,i as n,r,e as t};
@@ -5,7 +5,7 @@
5
5
  * Node-side introspection (reading CSS files, computing contrast) lives in
6
6
  * `./loader.ts` to keep `node:fs` out of the browser bundle path.
7
7
  */
8
- declare const AVAILABLE_THEMES: readonly ['almond', 'aspen', 'catppuccin', 'dark', 'dusk', 'emerald', 'enterprise', 'light', 'maple', 'neutral', 'ocean', 'purple', 'ruby', 'solar', 'vitepress'];
8
+ declare const AVAILABLE_THEMES: readonly ['almond', 'aspen', 'atrium', 'broadsheet', 'canopy', 'catppuccin', 'dark', 'dusk', 'emerald', 'enterprise', 'folio', 'hearth', 'lattice', 'light', 'maple', 'marigold', 'meridian', 'monolith', 'neutral', 'nocturne', 'ocean', 'prism', 'purple', 'ruby', 'solar', 'vitepress'];
9
9
  type ThemePreset = (typeof AVAILABLE_THEMES)[number];
10
10
  /** Return a read-only copy of the built-in preset list. */
11
11
  declare function listPresets(): readonly ThemePreset[];
@@ -1 +1 @@
1
- import"@github/details-menu-element";const e=matchMedia(`(min-width: 1024px)`),t=matchMedia(`(hover: hover) and (pointer: fine)`),n=matchMedia(`(prefers-reduced-motion: reduce)`);let r,i,a;function o(){return i||=import(`motion/mini`).then(e=>{r=e.animate}).catch(()=>{i=void 0}),i}function s(){a?.();let i=Array.from(document.querySelectorAll(`[data-publier-top-nav]:not([data-publier-docs-header]) details.dropdown[data-publier-nav-group]:not([data-publier-docs-selector])`));if(!i.length)return;let s=new AbortController,c={signal:s.signal},l=/* @__PURE__ */ new Set;e.matches&&!n.matches&&o();for(let a of i){let i=a.querySelector(`:scope > summary`),u=a.querySelector(`:scope > details-menu`);if(!i||!u)continue;let d,f,p=0,m=!1,h=()=>{clearTimeout(d),d=void 0},g=()=>{p+=1,f?.cancel(),f=void 0},_=()=>{h(),g(),m=!1,a.open=!1};l.add(_),a.addEventListener(`pointerenter`,n=>{n.pointerType!==`touch`&&e.matches&&t.matches&&(h(),a.open||=(a.dispatchEvent(new MouseEvent(`mousedown`)),m=!0,!0))},c),a.addEventListener(`pointerleave`,e=>{e.pointerType!==`touch`&&(h(),d=setTimeout(()=>{u.contains(document.activeElement)||_()},160))},c),i.addEventListener(`click`,e=>{e.detail>0&&m&&a.open&&e.preventDefault(),m=!1},c),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.defaultPrevented&&a.open&&!a.contains(document.activeElement)&&(_(),e.preventDefault())},c),a.addEventListener(`focusout`,()=>{queueMicrotask(()=>{!a.contains(document.activeElement)&&!a.matches(`:hover`)&&_()})},c),a.addEventListener(`toggle`,()=>{if(g(),!a.open){m=!1;return}if(n.matches||!e.matches)return;let t=p;o().then(()=>{t!==p||s.signal.aborted||a.isConnected&&a.open&&!n.matches&&e.matches&&(f=r?.(u,{opacity:[0,1],transform:[`translateY(6px)`,`translateY(0)`]},{duration:.18,ease:[.16,1,.3,1]}))})},c),n.addEventListener(`change`,g,c)}e.addEventListener(`change`,()=>{for(let e of l)e()},c),t.addEventListener(`change`,()=>{for(let e of l)e()},c),a=()=>{s.abort();for(let e of l)e();a=void 0}}s(),document.addEventListener(`astro:before-swap`,()=>a?.()),document.addEventListener(`astro:after-swap`,s);export{};
1
+ import"@github/details-menu-element";function e(e){return e.normalize(`NFKC`).toLowerCase().replace(/\s+/gu,``)}function t(n,r,i){let a=i||r!==``&&e(n.title).includes(r),o=n.items.map(t=>r===``||a||e(t.title).includes(r)||e(t.description).includes(r)),s=n.sections.map(e=>t(e,r,a));return{visible:o.some(Boolean)||s.some(e=>e.visible),items:o,sections:s}}function n(n,r,i){let a=e(i),o=a!==``&&e(n).includes(a),s=r.map(e=>t(e,a,o));return{sections:s,empty:a!==``&&!s.some(e=>e.visible)}}const r=`[data-publier-nav-trigger]`,i=`[data-publier-nav-search]`,a=matchMedia(`(min-width: 1024px)`),o=matchMedia(`(hover: hover) and (pointer: fine)`),s=matchMedia(`(prefers-reduced-motion: reduce)`);let c,l,u;function d(){return l||=import(`motion/mini`).then(e=>{c=e.animate}).catch(()=>{l=void 0}),l}const f=e=>!e.closest(`dialog`),p=e=>e.querySelector(`:scope > summary`),m=e=>e.querySelector(`:scope > [data-publier-nav-panel]`);function h(e){return e?.textContent?.trim()??``}function g(e){return{title:h(e.querySelector(`:scope > [data-publier-nav-title]`)),items:Array.from(e.querySelectorAll(`:scope > ul > li[data-publier-nav-item]`)).map(e=>({title:h(e.querySelector(`[data-publier-nav-item-title]`)),description:h(e.querySelector(`[data-publier-nav-description]`))})),sections:Array.from(e.querySelectorAll(`:scope > [data-publier-nav-section]`)).map(g)}}function _(e){return Array.from(e.querySelectorAll(`[data-publier-nav-section]`)).filter(e=>e.parentElement?.closest(`[data-publier-nav-section]`)==null)}function v(e,t){e.hidden=!t.visible,e.querySelectorAll(`:scope > ul > li[data-publier-nav-item]`).forEach((e,n)=>{e.hidden=!(t.items[n]??!0)}),e.querySelectorAll(`:scope > [data-publier-nav-section]`).forEach((e,n)=>{let r=t.sections[n];r&&v(e,r)})}function y(e){e.hidden=!1;for(let t of e.querySelectorAll(`li[data-publier-nav-item]`))t.hidden=!1;for(let t of e.querySelectorAll(`[data-publier-nav-section]`))t.hidden=!1}const b=/* @__PURE__ */ new WeakMap;function x(e){let t=e.closest(`[data-publier-nav-panel]`),r=t?.querySelector(`[data-publier-nav-main]`);if(!t||!r)return;let i=_(r),a=b.get(r);a||(a=i.map(g),b.set(r,a));let o=n(t.closest(`[data-publier-nav-group]`)?.getAttribute(`data-publier-nav-group`)??``,a,e.value);if(e.value.trim()===``)for(let e of i)y(e);else i.forEach((e,t)=>{let n=o.sections[t];n&&v(e,n)});let s=r.querySelector(`[data-publier-nav-empty]`);s&&(s.hidden=!o.empty)}function S(e){let t=e.querySelector(i);t&&t.value!==``&&(t.value=``,x(t))}function C(e){let t=p(e),n=m(e);if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();n.style.setProperty(`--publier-nav-mega-notch-x`,`${Math.round(r.left+r.width/2-i.left)}px`)}function w(){u?.();let e=Array.from(document.querySelectorAll(`details[data-publier-nav-mega-group]`));if(!e.length)return;let t=new AbortController,n={signal:t.signal},l=e.filter(f),h=/* @__PURE__ */ new Set,g=!1;a.matches&&!s.matches&&l.length&&d();let _=()=>l.filter(e=>e.open),v=e=>{g=_().some(t=>t!==e);for(let t of l)t!==e&&(t.open=!1);e.open=!0};for(let r of e){let e=p(r),i=m(r);if(!e||!i)continue;let l=f(r),u,y,b=0,x=!1,w=()=>{clearTimeout(u),u=void 0},T=()=>{b+=1,y?.cancel(),y=void 0},E=()=>{w(),T(),x=!1,r.open=!1};h.add(E),l&&(r.addEventListener(`pointerenter`,e=>{e.pointerType!==`touch`&&a.matches&&o.matches&&(w(),r.open||(x=!0,v(r)))},n),r.addEventListener(`pointerleave`,e=>{e.pointerType!==`touch`&&(w(),x&&(u=setTimeout(()=>{i.contains(document.activeElement)||E()},150)))},n),r.addEventListener(`focusout`,e=>{let t=e.relatedTarget;t instanceof Node&&r.contains(t)||setTimeout(()=>{r.open&&!r.contains(document.activeElement)&&(r.matches(`:hover`)||E())},0)},n)),e.addEventListener(`click`,e=>{e.detail>0&&x&&r.open?e.preventDefault():l&&!r.open&&(g=_().some(e=>e!==r)),x=!1},{...n,capture:!0}),r.addEventListener(`toggle`,()=>{if(T(),!r.open){x=!1,S(r);return}let e=g;if(g=!1,!l||(C(r),e||s.matches||!a.matches))return;let n=b;d().then(()=>{n!==b||t.signal.aborted||r.isConnected&&r.open&&!s.matches&&(y=c?.(i,{opacity:[0,1]},{duration:.15,ease:`easeOut`}))})},n),s.addEventListener(`change`,T,n)}let y=new Set(l.map(e=>e.closest(`[data-publier-top-nav]`)).filter(e=>e!==null));for(let e of y)e.addEventListener(`keydown`,t=>{let n=t.target instanceof Element?t.target.closest(r):null;if(!n||t.altKey||t.ctrlKey||t.metaKey)return;let a=Array.from(e.querySelectorAll(r)).filter(e=>e.offsetParent!==null),o=a.indexOf(n),s=n.parentElement instanceof HTMLDetailsElement?n.parentElement:null;if(t.key===`ArrowRight`||t.key===`ArrowLeft`){let e=a[(o+(t.key===`ArrowRight`?1:-1)+a.length)%a.length];if(!e)return;let n=_().length>0;e.focus();let r=e.parentElement instanceof HTMLDetailsElement?e.parentElement:null;if(n&&r&&l.includes(r))v(r);else if(n)for(let e of _())e.open=!1;t.preventDefault()}else t.key===`ArrowDown`&&s&&l.includes(s)&&(v(s),s.querySelector(`${i}, a[href]`)?.focus(),t.preventDefault())},n);document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=(e.target instanceof Element?e.target:null)?.closest(i);if(t&&t.value!==``){t.value=``,x(t),e.preventDefault();return}let n=_()[0];if(!n)return;let r=n.contains(document.activeElement);for(let e of _())e.open=!1;r&&p(n)?.focus(),e.preventDefault()},n),document.addEventListener(`input`,e=>{let t=e.target instanceof Element?e.target.closest(i):null;t instanceof HTMLInputElement&&x(t)},n),document.addEventListener(`pointerdown`,e=>{if(e.target instanceof Element&&!e.target.closest(r))for(let t of _())t.contains(e.target)||(t.open=!1)},n),document.addEventListener(`click`,e=>{let t=e.target instanceof Element?e.target.closest(`[data-publier-nav-empty] [data-publier-search-button]`):null;if(t){for(let e of _())e.open=!1;t.closest(`dialog[data-publier-nav-dialog]`)?.close()}},n);let b=()=>{for(let e of h)e()};a.addEventListener(`change`,b,n),o.addEventListener(`change`,b,n),window.addEventListener(`resize`,()=>{for(let e of _())C(e)},n),u=()=>{t.abort(),b(),u=void 0}}function T(){w()}function E(){u?.()}const D=matchMedia(`(min-width: 1024px)`),O=matchMedia(`(hover: hover) and (pointer: fine)`),k=matchMedia(`(prefers-reduced-motion: reduce)`);let A,j,M;function N(){return j||=import(`motion/mini`).then(e=>{A=e.animate}).catch(()=>{j=void 0}),j}function P(){M?.();let e=Array.from(document.querySelectorAll(`[data-publier-top-nav]:not([data-publier-docs-header]) details.dropdown[data-publier-nav-group]:not([data-publier-docs-selector])`));if(!e.length)return;let t=new AbortController,n={signal:t.signal},r=/* @__PURE__ */ new Set;D.matches&&!k.matches&&N();for(let i of e){let e=i.querySelector(`:scope > summary`),a=i.querySelector(`:scope > details-menu`);if(!e||!a)continue;let o,s,c=0,l=!1,u=()=>{clearTimeout(o),o=void 0},d=()=>{c+=1,s?.cancel(),s=void 0},f=()=>{u(),d(),l=!1,i.open=!1};r.add(f),i.addEventListener(`pointerenter`,e=>{e.pointerType!==`touch`&&D.matches&&O.matches&&(u(),i.open||=(i.dispatchEvent(new MouseEvent(`mousedown`)),l=!0,!0))},n),i.addEventListener(`pointerleave`,e=>{e.pointerType!==`touch`&&(u(),o=setTimeout(()=>{a.contains(document.activeElement)||f()},160))},n),e.addEventListener(`click`,e=>{e.detail>0&&l&&i.open&&e.preventDefault(),l=!1},n),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&!e.defaultPrevented&&i.open&&!i.contains(document.activeElement)&&(f(),e.preventDefault())},n),i.addEventListener(`focusout`,()=>{queueMicrotask(()=>{!i.contains(document.activeElement)&&!i.matches(`:hover`)&&f()})},n),i.addEventListener(`toggle`,()=>{if(d(),!i.open){l=!1;return}if(k.matches||!D.matches)return;let e=c;N().then(()=>{e!==c||t.signal.aborted||i.isConnected&&i.open&&!k.matches&&D.matches&&(s=A?.(a,{opacity:[0,1],transform:[`translateY(6px)`,`translateY(0)`]},{duration:.18,ease:[.16,1,.3,1]}))})},n),k.addEventListener(`change`,d,n)}D.addEventListener(`change`,()=>{for(let e of r)e()},n),O.addEventListener(`change`,()=>{for(let e of r)e()},n),M=()=>{t.abort();for(let e of r)e();M=void 0}}P(),T(),document.addEventListener(`astro:before-swap`,()=>{M?.(),E()}),document.addEventListener(`astro:after-swap`,()=>{P(),T()});export{};
@@ -1,3 +1,3 @@
1
- import { i as listPresets, n as ThemePreset, r as isValidPreset, t as AVAILABLE_THEMES } from "../presets-Bk89M8E_.mjs";
1
+ import { i as listPresets, n as ThemePreset, r as isValidPreset, t as AVAILABLE_THEMES } from "../presets-Cl3HtWjB.mjs";
2
2
  export declare const PRESET_CSS_PATH: '@publier/shell/tailwind/preset.css';
3
3
  export { AVAILABLE_THEMES, type ThemePreset, isValidPreset, listPresets };
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"../presets-CYFX0GLA.mjs";const r=`@publier/shell/tailwind/preset.css`;export{n as AVAILABLE_THEMES,r as PRESET_CSS_PATH,e as isValidPreset,t as listPresets};
1
+ import{a as e,i as t,t as n}from"../presets-BHvXbtBH.mjs";const r=`@publier/shell/tailwind/preset.css`;export{n as AVAILABLE_THEMES,r as PRESET_CSS_PATH,t as isValidPreset,e as listPresets};
@@ -4,7 +4,7 @@
4
4
  * Reads built-in preset files from disk. Node-only (uses `node:fs` via native).
5
5
  * Theme resolution / override composition lives in `./override.ts`.
6
6
  */
7
- import { i as listPresets, n as ThemePreset, r as isValidPreset, t as AVAILABLE_THEMES } from "../presets-Bk89M8E_.mjs";
7
+ import { i as listPresets, n as ThemePreset, r as isValidPreset, t as AVAILABLE_THEMES } from "../presets-Cl3HtWjB.mjs";
8
8
  /** Shape of a parsed `theme.yaml`. Fields match `content-spec/theme.schema.json`. */
9
9
  interface ThemeYaml {
10
10
  /**
@@ -25,6 +25,11 @@ interface ThemeYaml {
25
25
  layout?: Record<string, string>;
26
26
  prose?: Record<string, string>;
27
27
  code?: Record<string, string>;
28
+ spacing?: Record<string, string>;
29
+ radius?: Record<string, string>;
30
+ elevation?: Record<string, string>;
31
+ motion?: Record<string, string>;
32
+ variants?: Record<string, string>;
28
33
  logo?: {
29
34
  light?: string;
30
35
  dark?: string;
@@ -32,7 +37,7 @@ interface ThemeYaml {
32
37
  favicon?: string;
33
38
  }
34
39
  /** Allow-listed override sections — parallel to the JSON Schema. */
35
- export declare const THEME_SECTIONS: readonly ['colors', 'typography', 'layout', 'prose', 'code'];
40
+ export declare const THEME_SECTIONS: readonly ['colors', 'typography', 'layout', 'prose', 'code', 'spacing', 'radius', 'elevation', 'motion', 'variants'];
36
41
  type ThemeSection = (typeof THEME_SECTIONS)[number];
37
42
  /**
38
43
  * Keys accepted under each section. Mirrors content-spec/theme.schema.json.
@@ -1,2 +1,2 @@
1
- import{n as e,r as t,t as n}from"../presets-CYFX0GLA.mjs";import{tailwindComposeThemeCss as r,tailwindReadPresetCss as i,tailwindResolveTheme as a}from"@publier/native";import{fileURLToPath as o}from"node:url";const s=[`colors`,`typography`,`layout`,`prose`,`code`],c={colors:[`primary`,`primary-content`,`secondary`,`secondary-content`,`accent`,`accent-content`,`neutral`,`neutral-content`,`base-100`,`base-200`,`base-300`,`base-content`,`info`,`info-content`,`success`,`success-content`,`warning`,`warning-content`,`error`,`error-content`],typography:[`heading`,`body`,`mono`,`body-weight`,`heading-weight`],layout:[`nav-height`,`sidebar-width`,`toc-width`,`page-max-width`],prose:[`content-gap-y`,`line-height`,`heading-line-height`],code:[`block-radius`,`inline-radius`,`inline-padding-y`,`inline-padding-x`]};function l(e){if(!e||typeof e!=`object`||Array.isArray(e))return{preset:void 0,overrides:{},overrideCss:``,errors:[]};let t=a(JSON.stringify(e));return{preset:t.preset??void 0,overrides:t.overrides,overrideCss:t.overrideCss,errors:t.errors.map(e=>({code:e.code,message:e.message,path:e.path}))}}function u(e){let t=Object.keys(e).sort();return t.length===0?``:`:root[data-theme="light"], :root[data-theme="dark"] {\n${t.map(t=>`\t${t}: ${e[t]};`).join(`
2
- `)}\n}\n`}function d(e,t){let n=l(e),r=t.defaultPreset;return n.preset!==void 0&&(t.isValidPreset(n.preset)?r=n.preset:n.errors.push({code:`unknown-preset`,message:`Unknown preset "${n.preset}". Theme will fall back to "${t.defaultPreset}".`,path:`preset`})),{...n,preset:r}}function f(e,t){return r(e,t)}const p=o(new URL(`./themes/`,import.meta.url));function m(e){return`${p}${e}.css`}async function h(e){return i(p,e)}export{n as AVAILABLE_THEMES,c as THEME_KEYS,s as THEME_SECTIONS,f as composeThemeCss,e as isValidPreset,t as listPresets,h as loadPresetCss,m as presetPath,u as renderOverrideCss,l as resolveTheme,d as resolveThemeWithPreset};
1
+ import{a as e,i as t,n,r,t as i}from"../presets-BHvXbtBH.mjs";import{tailwindComposeThemeCss as a,tailwindReadPresetCss as o,tailwindResolveTheme as s}from"@publier/native";import{fileURLToPath as c}from"node:url";const l=[`colors`,`typography`,`layout`,`prose`,`code`,`spacing`,`radius`,`elevation`,`motion`,`variants`],u={colors:[`primary`,`primary-content`,`secondary`,`secondary-content`,`accent`,`accent-content`,`neutral`,`neutral-content`,`base-100`,`base-200`,`base-300`,`base-content`,`info`,`info-content`,`success`,`success-content`,`warning`,`warning-content`,`error`,`error-content`],typography:[`heading`,`body`,`mono`,`body-weight`,`heading-weight`,...r.flatMap(e=>n.map(t=>`scale-${e}-${t}`))],layout:[`nav-height`,`sidebar-width`,`toc-width`,`page-max-width`],prose:[`content-gap-y`,`line-height`,`heading-line-height`],code:[`block-radius`,`inline-radius`,`inline-padding-y`,`inline-padding-x`],spacing:[`xxs`,`xs`,`sm`,`md`,`base`,`lg`,`xl`,`xxl`,`section`],radius:[`button`,`control`,`card`,`panel`,`chip`],elevation:[`flat`,`raised`,`overlay`],motion:[`duration-fast`,`duration-base`,`duration-slow`,`easing`],variants:[`nav`,`button`,`card`,`hero`,`section`]};function d(e){if(!e||typeof e!=`object`||Array.isArray(e))return{preset:void 0,overrides:{},overrideCss:``,errors:[]};let t=s(JSON.stringify(e));return{preset:t.preset??void 0,overrides:t.overrides,overrideCss:t.overrideCss,errors:t.errors.map(e=>({code:e.code,message:e.message,path:e.path}))}}function f(e){let t=Object.keys(e).sort();return t.length===0?``:`:root[data-theme="light"], :root[data-theme="dark"] {\n${t.map(t=>`\t${t}: ${e[t]};`).join(`
2
+ `)}\n}\n`}function p(e,t){let n=d(e),r=t.defaultPreset;return n.preset!==void 0&&(t.isValidPreset(n.preset)?r=n.preset:n.errors.push({code:`unknown-preset`,message:`Unknown preset "${n.preset}". Theme will fall back to "${t.defaultPreset}".`,path:`preset`})),{...n,preset:r}}function m(e,t){return a(e,t)}const h=c(new URL(`./themes/`,import.meta.url));function g(e){return`${h}${e}.css`}async function _(e){return o(h,e)}export{i as AVAILABLE_THEMES,u as THEME_KEYS,l as THEME_SECTIONS,m as composeThemeCss,t as isValidPreset,e as listPresets,_ as loadPresetCss,g as presetPath,f as renderOverrideCss,d as resolveTheme,p as resolveThemeWithPreset};
@@ -0,0 +1,223 @@
1
+ :root, [data-theme="light"] {
2
+ color-scheme: light;
3
+
4
+ --color-base-100: #ffffff;
5
+ --color-base-200: #f5f5f7;
6
+ --color-base-300: #f0f0f0;
7
+ --color-base-content: #1d1d1f;
8
+ --color-primary: #06726e;
9
+ --color-primary-content: #ffffff;
10
+ --color-secondary: #1d1d1f;
11
+ --color-secondary-content: #ffffff;
12
+ --color-accent: #06726e;
13
+ --color-accent-content: #ffffff;
14
+ --color-neutral: #1d1d1f;
15
+ --color-neutral-content: #ffffff;
16
+ --color-error: #c4001a;
17
+ --color-error-content: #ffffff;
18
+
19
+ --radius-selector: 9999px;
20
+ --radius-field: 8px;
21
+ --radius-box: 18px;
22
+ --border: 1px;
23
+ --depth: 0;
24
+ --noise: 0;
25
+ }
26
+
27
+ [data-theme="dark"] {
28
+ color-scheme: dark;
29
+
30
+ --color-base-100: #000000;
31
+ --color-base-200: #272729;
32
+ --color-base-300: #38383a;
33
+ --color-base-content: #f5f5f7;
34
+ --color-primary: #60ccc5;
35
+ --color-primary-content: #071f1e;
36
+ --color-secondary: #a1a1a6;
37
+ --color-secondary-content: #000000;
38
+ --color-accent: #60ccc5;
39
+ --color-accent-content: #071f1e;
40
+ --color-neutral: #f5f5f7;
41
+ --color-neutral-content: #000000;
42
+ --color-error: #ff6961;
43
+ --color-error-content: #000000;
44
+
45
+ --radius-selector: 9999px;
46
+ --radius-field: 8px;
47
+ --radius-box: 18px;
48
+ --border: 1px;
49
+ --depth: 0;
50
+ --noise: 0;
51
+ }
52
+
53
+ @media (prefers-color-scheme: dark) {
54
+ :root:not([data-theme]) {
55
+ color-scheme: dark;
56
+
57
+ --color-base-100: #000000;
58
+ --color-base-200: #272729;
59
+ --color-base-300: #38383a;
60
+ --color-base-content: #f5f5f7;
61
+ --color-primary: #60ccc5;
62
+ --color-primary-content: #071f1e;
63
+ --color-secondary: #a1a1a6;
64
+ --color-secondary-content: #000000;
65
+ --color-accent: #60ccc5;
66
+ --color-accent-content: #071f1e;
67
+ --color-neutral: #f5f5f7;
68
+ --color-neutral-content: #000000;
69
+ --color-error: #ff6961;
70
+ --color-error-content: #000000;
71
+
72
+ --radius-selector: 9999px;
73
+ --radius-field: 8px;
74
+ --radius-box: 18px;
75
+ --border: 1px;
76
+ --depth: 0;
77
+ --noise: 0;
78
+ }
79
+ }
80
+
81
+ :root {
82
+
83
+ --publier-scale-display-xl-size: 4rem;
84
+ --publier-scale-display-xl-weight: 600;
85
+ --publier-scale-display-xl-line-height: 1.05;
86
+ --publier-scale-display-xl-tracking: -0.02em;
87
+ --publier-scale-display-lg-size: 3rem;
88
+ --publier-scale-display-lg-weight: 600;
89
+ --publier-scale-display-lg-line-height: 1.08;
90
+ --publier-scale-display-lg-tracking: -0.02em;
91
+ --publier-scale-display-md-size: 2.125rem;
92
+ --publier-scale-display-md-weight: 600;
93
+ --publier-scale-display-md-line-height: 1.15;
94
+ --publier-scale-display-md-tracking: -0.015em;
95
+ --publier-scale-heading-lg-size: 1.75rem;
96
+ --publier-scale-heading-lg-weight: 600;
97
+ --publier-scale-heading-lg-line-height: 1.2;
98
+ --publier-scale-heading-lg-tracking: -0.01em;
99
+ --publier-scale-heading-md-size: 1.3125rem;
100
+ --publier-scale-heading-md-weight: 500;
101
+ --publier-scale-heading-md-line-height: 1.25;
102
+ --publier-scale-heading-md-tracking: -0.01em;
103
+ --publier-scale-heading-sm-size: 1.1875rem;
104
+ --publier-scale-heading-sm-weight: 600;
105
+ --publier-scale-heading-sm-line-height: 1.25;
106
+ --publier-scale-heading-sm-tracking: 0;
107
+ --publier-scale-title-size: 1.0625rem;
108
+ --publier-scale-title-weight: 600;
109
+ --publier-scale-title-line-height: 1.3;
110
+ --publier-scale-title-tracking: 0;
111
+ --publier-scale-body-lg-size: 1.3125rem;
112
+ --publier-scale-body-lg-weight: 400;
113
+ --publier-scale-body-lg-line-height: 1.5;
114
+ --publier-scale-body-lg-tracking: 0;
115
+ --publier-scale-body-md-size: 1.0625rem;
116
+ --publier-scale-body-md-weight: 400;
117
+ --publier-scale-body-md-line-height: 1.5;
118
+ --publier-scale-body-md-tracking: 0;
119
+ --publier-scale-body-sm-size: 0.875rem;
120
+ --publier-scale-body-sm-weight: 400;
121
+ --publier-scale-body-sm-line-height: 1.45;
122
+ --publier-scale-body-sm-tracking: 0;
123
+ --publier-scale-caption-size: 0.8125rem;
124
+ --publier-scale-caption-weight: 400;
125
+ --publier-scale-caption-line-height: 1.35;
126
+ --publier-scale-caption-tracking: 0;
127
+ --publier-scale-label-size: 0.875rem;
128
+ --publier-scale-label-weight: 500;
129
+ --publier-scale-label-line-height: 1.3;
130
+ --publier-scale-label-tracking: 0;
131
+ --publier-scale-button-size: 1.0625rem;
132
+ --publier-scale-button-weight: 500;
133
+ --publier-scale-button-line-height: 1.2;
134
+ --publier-scale-button-tracking: 0;
135
+ --publier-scale-code-size: 0.875rem;
136
+ --publier-scale-code-weight: 400;
137
+ --publier-scale-code-line-height: 1.6;
138
+ --publier-scale-code-tracking: 0;
139
+
140
+ --publier-font-weight-body: 400;
141
+ --publier-font-weight-heading: 600;
142
+
143
+ --publier-space-xxs: 0.25rem;
144
+ --publier-space-xs: 0.5rem;
145
+ --publier-space-sm: 0.75rem;
146
+ --publier-space-md: 1rem;
147
+ --publier-space-base: 1.25rem;
148
+ --publier-space-lg: 1.5rem;
149
+ --publier-space-xl: 2rem;
150
+ --publier-space-xxl: 3rem;
151
+ --publier-space-section: 5rem;
152
+
153
+ --publier-radius-button: 9999px;
154
+ --publier-radius-control: 8px;
155
+ --publier-radius-card: 18px;
156
+ --publier-radius-panel: 28px;
157
+ --publier-radius-chip: 9999px;
158
+ --publier-control-radius: 8px;
159
+ --publier-surface-radius: 18px;
160
+ --publier-card-radius: 18px;
161
+ --publier-nav-item-radius: 9999px;
162
+ --publier-code-block-radius: 8px;
163
+ --publier-code-inline-radius: 6px;
164
+
165
+ --publier-elevation-flat: none;
166
+ --publier-elevation-raised: 0 0 0 1px rgb(0 0 0 / 0.02), 0 6px 20px rgb(0 0 0 / 0.08);
167
+ --publier-elevation-overlay: 0 0 0 1px rgb(0 0 0 / 0.02), 0 6px 20px rgb(0 0 0 / 0.08);
168
+
169
+ --publier-motion-duration-fast: 120ms;
170
+ --publier-motion-duration-base: 180ms;
171
+ --publier-motion-duration-slow: 300ms;
172
+ --publier-motion-easing: cubic-bezier(0.25, 0.1, 0.25, 1);
173
+
174
+ --publier-nav-height: 4.5rem;
175
+ --publier-page-max-width: 75rem;
176
+ --publier-layout-width: 1200px;
177
+ --publier-shadow-color: 0 0 0;
178
+ }
179
+
180
+ :root,
181
+ :root[data-theme="light"] {
182
+ --color-pl-muted: #6e6e73;
183
+ --color-pl-muted-bg: #e8e8ed;
184
+ --color-pl-subtle: #6e6e73;
185
+ --color-pl-card: #ffffff;
186
+ --color-pl-card-hover: #ffffff;
187
+ --color-pl-popover: #ffffff;
188
+ --color-pl-border: #e0e0e0;
189
+ --color-pl-border-strong: #d2d2d7;
190
+ --color-pl-ring: #1d1d1f;
191
+ --color-pl-sidebar-accent: #f5f5f7;
192
+ --color-pl-sidebar-active: #e8fbfa;
193
+ --color-pl-sidebar-active-fg: #06726e;
194
+
195
+ --menu-active-bg: var(--color-pl-sidebar-active);
196
+ --menu-active-color: var(--color-pl-sidebar-active-fg);
197
+ --menu-hover-bg: var(--color-pl-sidebar-accent);
198
+ --menu-hover-color: var(--color-pl-sidebar-accent-fg);
199
+ }
200
+
201
+ :root[data-theme="dark"],
202
+ .dark {
203
+ --color-pl-muted: #a1a1a6;
204
+ --color-pl-muted-bg: #272729;
205
+ --color-pl-subtle: #a1a1a6;
206
+ --color-pl-card: #272729;
207
+ --color-pl-card-hover: #272729;
208
+ --color-pl-popover: #272729;
209
+ --color-pl-border: #38383a;
210
+ --color-pl-border-strong: #4a4a4d;
211
+ --color-pl-ring: #f5f5f7;
212
+ --color-pl-sidebar-accent: #272729;
213
+ --color-pl-sidebar-active: color-mix(in oklch, #60ccc5 14%, transparent);
214
+ --color-pl-sidebar-active-fg: #60ccc5;
215
+
216
+ --publier-elevation-raised: 0 0 0 1px #38383a, 0 6px 20px rgb(0 0 0 / 0.5);
217
+ --publier-elevation-overlay: 0 0 0 1px #38383a, 0 6px 20px rgb(0 0 0 / 0.5);
218
+
219
+ --menu-active-bg: var(--color-pl-sidebar-active);
220
+ --menu-active-color: var(--color-pl-sidebar-active-fg);
221
+ --menu-hover-bg: var(--color-pl-sidebar-accent);
222
+ --menu-hover-color: var(--color-pl-sidebar-accent-fg);
223
+ }
@@ -0,0 +1,223 @@
1
+ :root, [data-theme="light"] {
2
+ color-scheme: light;
3
+
4
+ --color-base-100: #ffffff;
5
+ --color-base-200: #f5f5f5;
6
+ --color-base-300: #e0e0e0;
7
+ --color-base-content: #000000;
8
+ --color-primary: #af004e;
9
+ --color-primary-content: #ffffff;
10
+ --color-secondary: #333333;
11
+ --color-secondary-content: #ffffff;
12
+ --color-accent: #af004e;
13
+ --color-accent-content: #ffffff;
14
+ --color-neutral: #000000;
15
+ --color-neutral-content: #ffffff;
16
+ --color-error: #b3261e;
17
+ --color-error-content: #ffffff;
18
+
19
+ --radius-selector: 0px;
20
+ --radius-field: 0px;
21
+ --radius-box: 0px;
22
+ --border: 1px;
23
+ --depth: 0;
24
+ --noise: 0;
25
+ }
26
+
27
+ [data-theme="dark"] {
28
+ color-scheme: dark;
29
+
30
+ --color-base-100: #121212;
31
+ --color-base-200: #1c1c1c;
32
+ --color-base-300: #3a3a3a;
33
+ --color-base-content: #f5f5f5;
34
+ --color-primary: #fe85a4;
35
+ --color-primary-content: #121212;
36
+ --color-secondary: #a3a3a3;
37
+ --color-secondary-content: #121212;
38
+ --color-accent: #fe85a4;
39
+ --color-accent-content: #121212;
40
+ --color-neutral: #f5f5f5;
41
+ --color-neutral-content: #121212;
42
+ --color-error: #ff8a80;
43
+ --color-error-content: #121212;
44
+
45
+ --radius-selector: 0px;
46
+ --radius-field: 0px;
47
+ --radius-box: 0px;
48
+ --border: 1px;
49
+ --depth: 0;
50
+ --noise: 0;
51
+ }
52
+
53
+ @media (prefers-color-scheme: dark) {
54
+ :root:not([data-theme]) {
55
+ color-scheme: dark;
56
+
57
+ --color-base-100: #121212;
58
+ --color-base-200: #1c1c1c;
59
+ --color-base-300: #3a3a3a;
60
+ --color-base-content: #f5f5f5;
61
+ --color-primary: #fe85a4;
62
+ --color-primary-content: #121212;
63
+ --color-secondary: #a3a3a3;
64
+ --color-secondary-content: #121212;
65
+ --color-accent: #fe85a4;
66
+ --color-accent-content: #121212;
67
+ --color-neutral: #f5f5f5;
68
+ --color-neutral-content: #121212;
69
+ --color-error: #ff8a80;
70
+ --color-error-content: #121212;
71
+
72
+ --radius-selector: 0px;
73
+ --radius-field: 0px;
74
+ --radius-box: 0px;
75
+ --border: 1px;
76
+ --depth: 0;
77
+ --noise: 0;
78
+ }
79
+ }
80
+
81
+ :root {
82
+
83
+ --publier-scale-display-xl-size: 4rem;
84
+ --publier-scale-display-xl-weight: 700;
85
+ --publier-scale-display-xl-line-height: 1;
86
+ --publier-scale-display-xl-tracking: -0.03em;
87
+ --publier-scale-display-lg-size: 3rem;
88
+ --publier-scale-display-lg-weight: 700;
89
+ --publier-scale-display-lg-line-height: 1.02;
90
+ --publier-scale-display-lg-tracking: -0.03em;
91
+ --publier-scale-display-md-size: 2.25rem;
92
+ --publier-scale-display-md-weight: 700;
93
+ --publier-scale-display-md-line-height: 1.05;
94
+ --publier-scale-display-md-tracking: -0.025em;
95
+ --publier-scale-heading-lg-size: 1.75rem;
96
+ --publier-scale-heading-lg-weight: 700;
97
+ --publier-scale-heading-lg-line-height: 1.1;
98
+ --publier-scale-heading-lg-tracking: -0.02em;
99
+ --publier-scale-heading-md-size: 1.375rem;
100
+ --publier-scale-heading-md-weight: 700;
101
+ --publier-scale-heading-md-line-height: 1.15;
102
+ --publier-scale-heading-md-tracking: -0.015em;
103
+ --publier-scale-heading-sm-size: 1.125rem;
104
+ --publier-scale-heading-sm-weight: 700;
105
+ --publier-scale-heading-sm-line-height: 1.2;
106
+ --publier-scale-heading-sm-tracking: -0.01em;
107
+ --publier-scale-title-size: 1rem;
108
+ --publier-scale-title-weight: 700;
109
+ --publier-scale-title-line-height: 1.25;
110
+ --publier-scale-title-tracking: 0;
111
+ --publier-scale-body-lg-size: 1.1875rem;
112
+ --publier-scale-body-lg-weight: 400;
113
+ --publier-scale-body-lg-line-height: 1.5;
114
+ --publier-scale-body-lg-tracking: 0;
115
+ --publier-scale-body-md-size: 1rem;
116
+ --publier-scale-body-md-weight: 400;
117
+ --publier-scale-body-md-line-height: 1.5;
118
+ --publier-scale-body-md-tracking: 0;
119
+ --publier-scale-body-sm-size: 0.875rem;
120
+ --publier-scale-body-sm-weight: 400;
121
+ --publier-scale-body-sm-line-height: 1.43;
122
+ --publier-scale-body-sm-tracking: 0;
123
+ --publier-scale-caption-size: 0.75rem;
124
+ --publier-scale-caption-weight: 400;
125
+ --publier-scale-caption-line-height: 1.33;
126
+ --publier-scale-caption-tracking: 0;
127
+ --publier-scale-label-size: 0.75rem;
128
+ --publier-scale-label-weight: 700;
129
+ --publier-scale-label-line-height: 1.33;
130
+ --publier-scale-label-tracking: 0.08em;
131
+ --publier-scale-button-size: 0.9375rem;
132
+ --publier-scale-button-weight: 700;
133
+ --publier-scale-button-line-height: 1.25;
134
+ --publier-scale-button-tracking: 0.02em;
135
+ --publier-scale-code-size: 0.875rem;
136
+ --publier-scale-code-weight: 400;
137
+ --publier-scale-code-line-height: 1.6;
138
+ --publier-scale-code-tracking: 0;
139
+
140
+ --publier-font-weight-body: 400;
141
+ --publier-font-weight-heading: 700;
142
+
143
+ --publier-space-xxs: 0.125rem;
144
+ --publier-space-xs: 0.25rem;
145
+ --publier-space-sm: 0.5rem;
146
+ --publier-space-md: 0.75rem;
147
+ --publier-space-base: 1rem;
148
+ --publier-space-lg: 1.5rem;
149
+ --publier-space-xl: 2rem;
150
+ --publier-space-xxl: 3rem;
151
+ --publier-space-section: 4rem;
152
+
153
+ --publier-radius-button: 0px;
154
+ --publier-radius-control: 0px;
155
+ --publier-radius-card: 0px;
156
+ --publier-radius-panel: 0px;
157
+ --publier-radius-chip: 0px;
158
+ --publier-control-radius: 0px;
159
+ --publier-surface-radius: 0px;
160
+ --publier-card-radius: 0px;
161
+ --publier-nav-item-radius: 0px;
162
+ --publier-code-block-radius: 0px;
163
+ --publier-code-inline-radius: 0px;
164
+
165
+ --publier-elevation-flat: none;
166
+ --publier-elevation-raised: 0 0 0 1px #000000;
167
+ --publier-elevation-overlay: 0 0 0 2px #000000;
168
+
169
+ --publier-motion-duration-fast: 120ms;
170
+ --publier-motion-duration-base: 150ms;
171
+ --publier-motion-duration-slow: 240ms;
172
+ --publier-motion-easing: cubic-bezier(0.2, 0, 0, 1);
173
+
174
+ --publier-nav-height: 4.5rem;
175
+ --publier-page-max-width: 44rem;
176
+ --publier-layout-width: 1200px;
177
+ --publier-shadow-color: 0 0 0;
178
+ }
179
+
180
+ :root,
181
+ :root[data-theme="light"] {
182
+ --color-pl-muted: #757575;
183
+ --color-pl-muted-bg: #ebebeb;
184
+ --color-pl-subtle: #757575;
185
+ --color-pl-card: #ffffff;
186
+ --color-pl-card-hover: #ffffff;
187
+ --color-pl-popover: #ffffff;
188
+ --color-pl-border: #e0e0e0;
189
+ --color-pl-border-strong: #000000;
190
+ --color-pl-ring: #000000;
191
+ --color-pl-sidebar-accent: #f5f5f5;
192
+ --color-pl-sidebar-active: #ffeef1;
193
+ --color-pl-sidebar-active-fg: #af004e;
194
+
195
+ --menu-active-bg: var(--color-pl-sidebar-active);
196
+ --menu-active-color: var(--color-pl-sidebar-active-fg);
197
+ --menu-hover-bg: var(--color-pl-sidebar-accent);
198
+ --menu-hover-color: var(--color-pl-sidebar-accent-fg);
199
+ }
200
+
201
+ :root[data-theme="dark"],
202
+ .dark {
203
+ --color-pl-muted: #a3a3a3;
204
+ --color-pl-muted-bg: #1c1c1c;
205
+ --color-pl-subtle: #a3a3a3;
206
+ --color-pl-card: #1c1c1c;
207
+ --color-pl-card-hover: #1c1c1c;
208
+ --color-pl-popover: #1c1c1c;
209
+ --color-pl-border: #3a3a3a;
210
+ --color-pl-border-strong: #f5f5f5;
211
+ --color-pl-ring: #f5f5f5;
212
+ --color-pl-sidebar-accent: #1c1c1c;
213
+ --color-pl-sidebar-active: color-mix(in oklch, #fe85a4 14%, transparent);
214
+ --color-pl-sidebar-active-fg: #fe85a4;
215
+
216
+ --publier-elevation-raised: 0 0 0 1px #f5f5f5;
217
+ --publier-elevation-overlay: 0 0 0 2px #f5f5f5;
218
+
219
+ --menu-active-bg: var(--color-pl-sidebar-active);
220
+ --menu-active-color: var(--color-pl-sidebar-active-fg);
221
+ --menu-hover-bg: var(--color-pl-sidebar-accent);
222
+ --menu-hover-color: var(--color-pl-sidebar-accent-fg);
223
+ }