silvery 0.19.1 → 0.21.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/README.md +9 -4
- package/dist/Text-Lq0dmj8-.mjs +239 -0
- package/dist/Text-Lq0dmj8-.mjs.map +1 -0
- package/dist/UPNG-Bo33r8rA.mjs +3 -0
- package/dist/UPNG-DosRPdF4.mjs +5075 -0
- package/dist/UPNG-DosRPdF4.mjs.map +1 -0
- package/dist/__vite-browser-external-2447137e-D_JM6skp.mjs +6 -0
- package/dist/__vite-browser-external-2447137e-D_JM6skp.mjs.map +1 -0
- package/dist/{animation-Cn64yepo.mjs → animation-ZMN2_XKv.mjs} +2 -2
- package/dist/animation-ZMN2_XKv.mjs.map +1 -0
- package/dist/{ansi-Cc33mW54.d.mts → ansi-2Xn0yatP.d.mts} +1 -1
- package/dist/{ansi-Cc33mW54.d.mts.map → ansi-2Xn0yatP.d.mts.map} +1 -1
- package/dist/{ansi-CLOitHKx.mjs → ansi-D1KQMAbf.mjs} +1 -1
- package/dist/{ansi-CLOitHKx.mjs.map → ansi-D1KQMAbf.mjs.map} +1 -1
- package/dist/ansi-yC4RyBNY.mjs +22441 -0
- package/dist/ansi-yC4RyBNY.mjs.map +1 -0
- package/dist/apng-CR08rIaH.mjs +58 -0
- package/dist/apng-CR08rIaH.mjs.map +1 -0
- package/dist/apng-DaHfVaVI.mjs +3 -0
- package/dist/assets/resvgjs.darwin-arm64-BtufyGW1.node +0 -0
- package/dist/assets/skia.darwin-arm64-DQs5sT6N.node +0 -0
- package/dist/backend-B-WYLUib.mjs +13396 -0
- package/dist/backend-B-WYLUib.mjs.map +1 -0
- package/dist/backends-CUtan80W.mjs +3 -0
- package/dist/backends-DIVYzKqd.mjs +1083 -0
- package/dist/backends-DIVYzKqd.mjs.map +1 -0
- package/dist/bound-term-0sPrrzH1.d.mts +4640 -0
- package/dist/bound-term-0sPrrzH1.d.mts.map +1 -0
- package/dist/canvas-1v7dPT-_.mjs +3 -0
- package/dist/canvas-CSuPOMNt.mjs +1442 -0
- package/dist/canvas-CSuPOMNt.mjs.map +1 -0
- package/dist/{chunk-Vs_PY4HZ.mjs → chunk-BSw8zbkd.mjs} +1 -1
- package/dist/cli-dvo0r2fs.mjs +4 -0
- package/dist/compare-CQodSH4G.mjs +376 -0
- package/dist/compare-CQodSH4G.mjs.map +1 -0
- package/dist/compare-DHlcxEYA.mjs +3 -0
- package/dist/context-BU5LkkIy.mjs.map +1 -1
- package/dist/devtools-CJdt5H0X.mjs +2 -0
- package/dist/{devtools-DxkSLXDA.mjs → devtools-DcQjgyjL.mjs} +5 -4
- package/dist/{devtools-DxkSLXDA.mjs.map → devtools-DcQjgyjL.mjs.map} +1 -1
- package/dist/easing-BI-ASGMO.d.mts +24 -0
- package/dist/easing-BI-ASGMO.d.mts.map +1 -0
- package/dist/{eta-Bb3RH3wh.mjs → eta-CJlGH06n.mjs} +1 -1
- package/dist/{eta-Bb3RH3wh.mjs.map → eta-CJlGH06n.mjs.map} +1 -1
- package/dist/flexily-zero-adapter-C3Vj0fPt.mjs +306 -0
- package/dist/flexily-zero-adapter-C3Vj0fPt.mjs.map +1 -0
- package/dist/{flexily-zero-adapter-CMxXhdOL.mjs → flexily-zero-adapter-C4lW_Ov5.mjs} +1 -1
- package/dist/fonts-BFmhXDv7.mjs +88 -0
- package/dist/fonts-BFmhXDv7.mjs.map +1 -0
- package/dist/gif-C_AjaT9d.mjs +188 -0
- package/dist/gif-C_AjaT9d.mjs.map +1 -0
- package/dist/gif-DaC4XrxA.mjs +3 -0
- package/dist/gifenc-BOUT-KFB.mjs +730 -0
- package/dist/gifenc-BOUT-KFB.mjs.map +1 -0
- package/dist/image-C2Birh2x.mjs +1252 -0
- package/dist/image-C2Birh2x.mjs.map +1 -0
- package/dist/index-BUMxS65f.d.mts +453 -0
- package/dist/index-BUMxS65f.d.mts.map +1 -0
- package/dist/{index-D3saHouR.d.mts → index-CSQf13CI.d.mts} +1057 -1133
- package/dist/index-CSQf13CI.d.mts.map +1 -0
- package/dist/{index-BXslOebb.d.mts → index-Cl9KKjQ_.d.mts} +4919 -3921
- package/dist/index-Cl9KKjQ_.d.mts.map +1 -0
- package/dist/index-XbNrPhWl.d.mts +336 -0
- package/dist/index-XbNrPhWl.d.mts.map +1 -0
- package/dist/index.d.mts +8 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +14 -12
- package/dist/index.mjs.map +1 -1
- package/dist/key-mapping-CS-YD_cD.mjs +132 -0
- package/dist/key-mapping-CS-YD_cD.mjs.map +1 -0
- package/dist/key-mapping-Yn-Jgrij.mjs +3 -0
- package/dist/{layout-engine-B6Cdz1yZ.mjs → layout-engine-C07LEXWT.mjs} +1 -1
- package/dist/layout-engine-C2px0RJE.mjs +67 -0
- package/dist/layout-engine-C2px0RJE.mjs.map +1 -0
- package/dist/layout-signals-Cnw6xk8Q.mjs +988 -0
- package/dist/layout-signals-Cnw6xk8Q.mjs.map +1 -0
- package/dist/mouse-events-Dki3ISIp.mjs +1044 -0
- package/dist/mouse-events-Dki3ISIp.mjs.map +1 -0
- package/dist/{multi-progress-Bq9Oi_WI.mjs → multi-progress-CIRjrzma.mjs} +3 -3
- package/dist/{multi-progress-Bq9Oi_WI.mjs.map → multi-progress-CIRjrzma.mjs.map} +1 -1
- package/dist/{multi-progress-DAQC7eap.d.mts → multi-progress-DHZ2xUT2.d.mts} +2 -2
- package/dist/{multi-progress-DAQC7eap.d.mts.map → multi-progress-DHZ2xUT2.d.mts.map} +1 -1
- package/dist/{node-BeWlnCPY.mjs → node-CjM5Rt-M.mjs} +4 -4
- package/dist/node-CjM5Rt-M.mjs.map +1 -0
- package/dist/playwright-D5YiZcNS.mjs +76397 -0
- package/dist/playwright-D5YiZcNS.mjs.map +1 -0
- package/dist/png-codec-Dp84742B.mjs +36 -0
- package/dist/png-codec-Dp84742B.mjs.map +1 -0
- package/dist/png-codec-QwOtJ8Zs.mjs +3 -0
- package/dist/progress-DB_Xo071.mjs +675 -0
- package/dist/progress-DB_Xo071.mjs.map +1 -0
- package/dist/{progress-bar-CXE5Qfkd.mjs → progress-bar-oJwq22CR.mjs} +4 -4
- package/dist/{progress-bar-CXE5Qfkd.mjs.map → progress-bar-oJwq22CR.mjs.map} +1 -1
- package/dist/rasterizer-BRXrDdWx.mjs +3 -0
- package/dist/rasterizer-CpEhJvdR.mjs +296 -0
- package/dist/rasterizer-CpEhJvdR.mjs.map +1 -0
- package/dist/reconciler-DldIJB93.mjs +2083 -0
- package/dist/reconciler-DldIJB93.mjs.map +1 -0
- package/dist/{render-string-0mN37DLf.mjs → render-string-BcoCpjCB.mjs} +1 -1
- package/dist/{render-string-X-CxpTdZ.mjs → render-string-DkQacASz.mjs} +2728 -555
- package/dist/render-string-DkQacASz.mjs.map +1 -0
- package/dist/resvg-js-DkOndZI3.mjs +203 -0
- package/dist/resvg-js-DkOndZI3.mjs.map +1 -0
- package/dist/runtime.d.mts +3 -2
- package/dist/runtime.mjs +3 -3
- package/dist/schemes-JjNp4aSl.mjs +2611 -0
- package/dist/schemes-JjNp4aSl.mjs.map +1 -0
- package/dist/{spinner-CGo34vyR.d.mts → spinner-CZINHpkV.d.mts} +2 -2
- package/dist/{spinner-CGo34vyR.d.mts.map → spinner-CZINHpkV.d.mts.map} +1 -1
- package/dist/{spinner-CeOmcuw_.mjs → spinner-D9lrHr8s.mjs} +7 -7
- package/dist/spinner-D9lrHr8s.mjs.map +1 -0
- package/dist/src-5w9QR6_8.mjs +1071 -0
- package/dist/src-5w9QR6_8.mjs.map +1 -0
- package/dist/src-BNTToU7l.mjs +4387 -0
- package/dist/src-BNTToU7l.mjs.map +1 -0
- package/dist/{src-Bd7ezSgG.mjs → src-BR4xNwdG.mjs} +10436 -2622
- package/dist/src-BR4xNwdG.mjs.map +1 -0
- package/dist/{types-Bk2yw9Qj.mjs → src-DKp-_OFG.mjs} +34 -94
- package/dist/src-DKp-_OFG.mjs.map +1 -0
- package/dist/src-bt8wSrfJ.mjs +258 -0
- package/dist/src-bt8wSrfJ.mjs.map +1 -0
- package/dist/src-e33Y6kNJ.mjs +3 -0
- package/dist/src-iDwu25UD.mjs +1814 -0
- package/dist/src-iDwu25UD.mjs.map +1 -0
- package/dist/steps-Bp2uNqnn.d.mts +202 -0
- package/dist/steps-Bp2uNqnn.d.mts.map +1 -0
- package/dist/svg-15lZZzxq.mjs +486 -0
- package/dist/svg-15lZZzxq.mjs.map +1 -0
- package/dist/svg-Cz0UXcDj.mjs +255 -0
- package/dist/svg-Cz0UXcDj.mjs.map +1 -0
- package/dist/svg-DY72a4HK.mjs +3 -0
- package/dist/svg-g1D6ErwR.d.mts +82 -0
- package/dist/svg-g1D6ErwR.d.mts.map +1 -0
- package/dist/term.d.mts +3 -0
- package/dist/term.mjs +9 -0
- package/dist/term.mjs.map +1 -0
- package/dist/theme.d.mts +95 -2
- package/dist/theme.d.mts.map +1 -0
- package/dist/theme.mjs +9 -3
- package/dist/theme.mjs.map +1 -0
- package/dist/{types-BH_v3iMT.d.mts → types-kt_fKR37.d.mts} +2 -15
- package/dist/types-kt_fKR37.d.mts.map +1 -0
- package/dist/ui/animation.d.mts +2 -1
- package/dist/ui/animation.mjs +1 -1
- package/dist/ui/ansi.d.mts +1 -1
- package/dist/ui/ansi.mjs +1 -1
- package/dist/ui/cli.d.mts +3 -3
- package/dist/ui/cli.mjs +5 -5
- package/dist/ui/display.d.mts +1 -1
- package/dist/ui/image.d.mts +2 -2
- package/dist/ui/image.mjs +2 -2
- package/dist/ui/input.d.mts +1 -1
- package/dist/ui/input.mjs +4 -2
- package/dist/ui/input.mjs.map +1 -1
- package/dist/ui/progress.d.mts +5 -249
- package/dist/ui/progress.mjs +5 -858
- package/dist/ui/react.d.mts +1 -1
- package/dist/ui/react.mjs +2 -2
- package/dist/ui/recording-chrome-react.d.mts +21 -0
- package/dist/ui/recording-chrome-react.d.mts.map +1 -0
- package/dist/ui/recording-chrome-react.mjs +105 -0
- package/dist/ui/recording-chrome-react.mjs.map +1 -0
- package/dist/ui/recording-chrome.d.mts +2 -0
- package/dist/ui/recording-chrome.mjs +2 -0
- package/dist/ui/utils.mjs +1 -1
- package/dist/ui/wrappers.d.mts +3 -3
- package/dist/ui/wrappers.mjs +2 -2
- package/dist/ui.d.mts +7 -6
- package/dist/ui.mjs +8 -7
- package/dist/{useLatest-Bg2x4bfP.d.mts → useLatest-DRDDVwjh.d.mts} +5 -25
- package/dist/useLatest-DRDDVwjh.d.mts.map +1 -0
- package/dist/{with-text-input-CRfoiFFG.d.mts → with-text-input-YeohVLeo.d.mts} +4 -55
- package/dist/with-text-input-YeohVLeo.d.mts.map +1 -0
- package/dist/wrapper-C70ATkVv.mjs +3527 -0
- package/dist/wrapper-C70ATkVv.mjs.map +1 -0
- package/dist/{wrappers-UTADQkSY.mjs → wrappers-BCUYITrY.mjs} +5 -157
- package/dist/wrappers-BCUYITrY.mjs.map +1 -0
- package/dist/{yoga-adapter-8oRGRw8V.mjs → yoga-adapter-BnZX1PAY.mjs} +28 -2
- package/dist/yoga-adapter-BnZX1PAY.mjs.map +1 -0
- package/dist/yoga-adapter-DxgsQ_gg.mjs +2 -0
- package/dist/zipBundle-3nqeDRtm.mjs +3 -0
- package/dist/zipBundle-VNAYFmqJ.mjs +2003 -0
- package/dist/zipBundle-VNAYFmqJ.mjs.map +1 -0
- package/package.json +20 -9
- package/dist/animation-Cn64yepo.mjs.map +0 -1
- package/dist/cli-BKp0YtBD.mjs +0 -4
- package/dist/devtools-9QY4teqI.mjs +0 -2
- package/dist/flexily-zero-adapter-BlQa46nr.mjs +0 -3385
- package/dist/flexily-zero-adapter-BlQa46nr.mjs.map +0 -1
- package/dist/image-CTII5QWI.mjs +0 -477
- package/dist/image-CTII5QWI.mjs.map +0 -1
- package/dist/index-BXslOebb.d.mts.map +0 -1
- package/dist/index-BnA7mNpo.d.mts +0 -175
- package/dist/index-BnA7mNpo.d.mts.map +0 -1
- package/dist/index-D3saHouR.d.mts.map +0 -1
- package/dist/layout-engine-ClUgv6jB.mjs +0 -50
- package/dist/layout-engine-ClUgv6jB.mjs.map +0 -1
- package/dist/node-BeWlnCPY.mjs.map +0 -1
- package/dist/reconciler-Cwgm8hRR.mjs +0 -8459
- package/dist/reconciler-Cwgm8hRR.mjs.map +0 -1
- package/dist/render-string-X-CxpTdZ.mjs.map +0 -1
- package/dist/spinner-CeOmcuw_.mjs.map +0 -1
- package/dist/src-B5GjfG7g.mjs +0 -4305
- package/dist/src-B5GjfG7g.mjs.map +0 -1
- package/dist/src-Bd7ezSgG.mjs.map +0 -1
- package/dist/src-CChwjk0Z.mjs +0 -738
- package/dist/src-CChwjk0Z.mjs.map +0 -1
- package/dist/src-NCKb8kE5.mjs +0 -2660
- package/dist/src-NCKb8kE5.mjs.map +0 -1
- package/dist/types-BH_v3iMT.d.mts.map +0 -1
- package/dist/types-Bk2yw9Qj.mjs.map +0 -1
- package/dist/ui/progress.d.mts.map +0 -1
- package/dist/ui/progress.mjs.map +0 -1
- package/dist/useLatest-Bg2x4bfP.d.mts.map +0 -1
- package/dist/with-text-input-CRfoiFFG.d.mts.map +0 -1
- package/dist/wrappers-UTADQkSY.mjs.map +0 -1
- package/dist/yoga-adapter-8oRGRw8V.mjs.map +0 -1
- package/dist/yoga-adapter-D_CcxSt5.mjs +0 -2
|
@@ -0,0 +1,1071 @@
|
|
|
1
|
+
import { n as __esmMin, r as __exportAll } from "./chunk-BSw8zbkd.mjs";
|
|
2
|
+
import { D as bakeFlat, L as detectTerminalScheme, O as defaultFlattenRule, P as ANSI16_SLOT_HEX, R as detectTheme, a as STERLING_FLAT_TOKENS, at as deriveRoles, c as detectScheme, ct as WCAG_AA, dt as deriveFields, i as defaultScheme, it as deriveTheme, l as detectSchemeTheme, lt as autoLift, n as sterling, ot as deriveTheme$1, r as defineDesignSystem, st as ContrastError, t as init_src$1, u as COLOR_SCHEME_FIELDS, ut as checkAA, z as probeColors } from "./src-BNTToU7l.mjs";
|
|
3
|
+
import { A as monokaiPro, B as gruvboxLight, C as ayuLight, D as materialLight, E as materialDark, F as kanagawaWave, G as solarizedDark, H as tokyoNight, I as rosePine, J as nord, K as solarizedLight, L as rosePineDawn, M as everforestLight, N as kanagawaDragon, O as snazzy, P as kanagawaLotus, Q as catppuccinMocha, R as rosePineMoon, S as ayuDark, T as palenight, U as tokyoNightDay, V as oneDark, W as tokyoNightStorm, X as catppuccinLatte, Y as catppuccinFrappe, Z as catppuccinMacchiato, _ as nightfly, a as defaultDarkTheme, b as dawnfox, c as getThemeByName, d as modusVivendi, f as edgeDark, g as oxocarbonLight, h as oxocarbonDark, i as builtinThemes, j as everforestDark, k as monokai, l as init_schemes, m as sonokai, n as ansi16LightTheme, o as defaultLightTheme, p as edgeLight, q as dracula, r as builtinPalettes, s as getSchemeByName, t as ansi16DarkTheme, u as modusOperandi, v as moonfly, w as ayuMirage, x as nightfox, y as horizon, z as gruvboxDark } from "./schemes-JjNp4aSl.mjs";
|
|
4
|
+
import { blend, brighten, darken, hexToOklch, hexToRgb, oklchToHex, relativeLuminance } from "@silvery/color";
|
|
5
|
+
//#region packages/theme/src/generate.ts
|
|
6
|
+
/**
|
|
7
|
+
* Resolve an ANSI16 slot name (e.g. "yellow", "blueBright") to its canonical
|
|
8
|
+
* hex value. Falls back to the input string if not found (e.g., already hex).
|
|
9
|
+
*/
|
|
10
|
+
function slotHex(name) {
|
|
11
|
+
return ANSI16_SLOT_HEX[name] ?? name;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a complete ANSI 16 theme from a primary color + dark/light preference.
|
|
15
|
+
*
|
|
16
|
+
* All token values are hex strings (e.g. "#808000" for yellow).
|
|
17
|
+
* Terminal rendering quantizes these to 4-bit ANSI codes at paint time
|
|
18
|
+
* when colorLevel === "ansi16".
|
|
19
|
+
*/
|
|
20
|
+
function generateTheme(primary, dark) {
|
|
21
|
+
const primaryHex = slotHex(primary);
|
|
22
|
+
const fgHex = slotHex(dark ? "whiteBright" : "black");
|
|
23
|
+
const accentHex = primaryHex;
|
|
24
|
+
const selectionbgHex = primaryHex;
|
|
25
|
+
const surfacebgHex = slotHex(dark ? "black" : "white");
|
|
26
|
+
const derived = deriveFields({
|
|
27
|
+
primary: primaryHex,
|
|
28
|
+
accent: accentHex,
|
|
29
|
+
fg: fgHex,
|
|
30
|
+
selectionbg: selectionbgHex,
|
|
31
|
+
surfacebg: surfacebgHex,
|
|
32
|
+
ring: {
|
|
33
|
+
red: slotHex(dark ? "redBright" : "red"),
|
|
34
|
+
orange: slotHex(dark ? "redBright" : "red"),
|
|
35
|
+
yellow: slotHex("yellow"),
|
|
36
|
+
green: slotHex(dark ? "greenBright" : "green"),
|
|
37
|
+
teal: slotHex("cyan"),
|
|
38
|
+
blue: slotHex(dark ? "blueBright" : "blue"),
|
|
39
|
+
purple: slotHex("magenta"),
|
|
40
|
+
pink: slotHex(dark ? "magentaBright" : "magenta")
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
name: `${dark ? "dark" : "light"}-${primary}`,
|
|
45
|
+
bg: "",
|
|
46
|
+
fg: fgHex,
|
|
47
|
+
muted: slotHex(dark ? "white" : "blackBright"),
|
|
48
|
+
mutedbg: slotHex(dark ? "black" : "white"),
|
|
49
|
+
surface: slotHex(dark ? "whiteBright" : "black"),
|
|
50
|
+
surfacebg: surfacebgHex,
|
|
51
|
+
popover: slotHex(dark ? "whiteBright" : "black"),
|
|
52
|
+
popoverbg: slotHex(dark ? "blackBright" : "white"),
|
|
53
|
+
inverse: slotHex(dark ? "black" : "whiteBright"),
|
|
54
|
+
inversebg: slotHex(dark ? "whiteBright" : "black"),
|
|
55
|
+
cursor: slotHex("black"),
|
|
56
|
+
cursorbg: primaryHex,
|
|
57
|
+
selection: slotHex("black"),
|
|
58
|
+
selectionbg: primaryHex,
|
|
59
|
+
primary: primaryHex,
|
|
60
|
+
primaryfg: slotHex("black"),
|
|
61
|
+
secondary: primaryHex,
|
|
62
|
+
secondaryfg: slotHex("black"),
|
|
63
|
+
accent: primaryHex,
|
|
64
|
+
accentfg: slotHex("black"),
|
|
65
|
+
error: slotHex(dark ? "redBright" : "red"),
|
|
66
|
+
errorfg: slotHex("black"),
|
|
67
|
+
warning: primaryHex,
|
|
68
|
+
warningfg: slotHex("black"),
|
|
69
|
+
success: slotHex(dark ? "greenBright" : "green"),
|
|
70
|
+
successfg: slotHex("black"),
|
|
71
|
+
info: slotHex(dark ? "cyanBright" : "cyan"),
|
|
72
|
+
infofg: slotHex("black"),
|
|
73
|
+
border: slotHex("gray"),
|
|
74
|
+
inputborder: slotHex("gray"),
|
|
75
|
+
focusborder: slotHex(dark ? "blueBright" : "blue"),
|
|
76
|
+
disabledfg: slotHex("gray"),
|
|
77
|
+
palette: [
|
|
78
|
+
slotHex("black"),
|
|
79
|
+
slotHex("red"),
|
|
80
|
+
slotHex("green"),
|
|
81
|
+
slotHex("yellow"),
|
|
82
|
+
slotHex("blue"),
|
|
83
|
+
slotHex("magenta"),
|
|
84
|
+
slotHex("cyan"),
|
|
85
|
+
slotHex("white"),
|
|
86
|
+
slotHex("blackBright"),
|
|
87
|
+
slotHex("redBright"),
|
|
88
|
+
slotHex("greenBright"),
|
|
89
|
+
slotHex("yellowBright"),
|
|
90
|
+
slotHex("blueBright"),
|
|
91
|
+
slotHex("magentaBright"),
|
|
92
|
+
slotHex("cyanBright"),
|
|
93
|
+
slotHex("whiteBright")
|
|
94
|
+
],
|
|
95
|
+
...derived
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
var init_generate = __esmMin((() => {
|
|
99
|
+
init_src$1();
|
|
100
|
+
}));
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region packages/theme/src/import/types.ts
|
|
103
|
+
var BASE16_KEYS;
|
|
104
|
+
var init_types = __esmMin((() => {
|
|
105
|
+
BASE16_KEYS = [
|
|
106
|
+
"base00",
|
|
107
|
+
"base01",
|
|
108
|
+
"base02",
|
|
109
|
+
"base03",
|
|
110
|
+
"base04",
|
|
111
|
+
"base05",
|
|
112
|
+
"base06",
|
|
113
|
+
"base07",
|
|
114
|
+
"base08",
|
|
115
|
+
"base09",
|
|
116
|
+
"base0A",
|
|
117
|
+
"base0B",
|
|
118
|
+
"base0C",
|
|
119
|
+
"base0D",
|
|
120
|
+
"base0E",
|
|
121
|
+
"base0F"
|
|
122
|
+
];
|
|
123
|
+
}));
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region packages/theme/src/import/base16.ts
|
|
126
|
+
/**
|
|
127
|
+
* Import Base16 YAML/JSON schemes into ColorScheme format.
|
|
128
|
+
*
|
|
129
|
+
* Base16 defines 16 colors (base00–base0F). We map them to ColorScheme's
|
|
130
|
+
* 22 colors, deriving bright variants and special colors.
|
|
131
|
+
*
|
|
132
|
+
* @see https://github.com/chriskempson/base16
|
|
133
|
+
*/
|
|
134
|
+
/**
|
|
135
|
+
* Parse Base16 YAML into a Base16Scheme object.
|
|
136
|
+
* Handles both quoted and unquoted values, comments, and blank lines.
|
|
137
|
+
*/
|
|
138
|
+
function parseBase16Yaml(yaml) {
|
|
139
|
+
const result = {};
|
|
140
|
+
for (const raw of yaml.split("\n")) {
|
|
141
|
+
const line = raw.trim();
|
|
142
|
+
if (!line || line.startsWith("#")) continue;
|
|
143
|
+
const colonIdx = line.indexOf(":");
|
|
144
|
+
if (colonIdx === -1) continue;
|
|
145
|
+
const key = line.slice(0, colonIdx).trim();
|
|
146
|
+
let value = line.slice(colonIdx + 1).trim();
|
|
147
|
+
if (value.startsWith("\"") && value.endsWith("\"") || value.startsWith("'") && value.endsWith("'")) value = value.slice(1, -1);
|
|
148
|
+
const commentIdx = value.indexOf("#");
|
|
149
|
+
if (commentIdx > 0) value = value.slice(0, commentIdx).trim();
|
|
150
|
+
result[key] = value;
|
|
151
|
+
}
|
|
152
|
+
if (!result.scheme) throw new Error("Base16 YAML missing required field: scheme");
|
|
153
|
+
for (const key of BASE16_KEYS) {
|
|
154
|
+
if (!result[key]) throw new Error(`Base16 YAML missing required color: ${key}`);
|
|
155
|
+
if (!/^[0-9a-fA-F]{6}$/.test(result[key])) throw new Error(`Base16 color ${key} must be a 6-digit hex string without '#', got: "${result[key]}"`);
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
/** Compute relative luminance (WCAG 2.0) from a hex color with `#` prefix. */
|
|
160
|
+
function luminance(hex) {
|
|
161
|
+
const rgb = hexToRgb(hex);
|
|
162
|
+
if (!rgb) return 0;
|
|
163
|
+
const [r, g, b] = rgb.map((c) => {
|
|
164
|
+
const s = c / 255;
|
|
165
|
+
return s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4);
|
|
166
|
+
});
|
|
167
|
+
return .2126 * r + .7152 * g + .0722 * b;
|
|
168
|
+
}
|
|
169
|
+
/** Normalize a bare hex string to `#RRGGBB` (uppercase). */
|
|
170
|
+
function hex(bare) {
|
|
171
|
+
return `#${bare.toUpperCase()}`;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Import a Base16 YAML (or JSON) scheme into a ColorScheme.
|
|
175
|
+
*
|
|
176
|
+
* Mapping:
|
|
177
|
+
* base00 → background, base01 → brightBlack, base02 → selectionBackground,
|
|
178
|
+
* base03 → white (muted fg), base05 → foreground/brightWhite,
|
|
179
|
+
* base08 → red, base09 → brightRed, base0A → yellow,
|
|
180
|
+
* base0B → green, base0C → cyan, base0D → blue, base0E → magenta,
|
|
181
|
+
* base0F → brightMagenta.
|
|
182
|
+
*
|
|
183
|
+
* Bright color variants are derived by brightening normals.
|
|
184
|
+
* `dark` is inferred from base00 luminance.
|
|
185
|
+
*/
|
|
186
|
+
function importBase16(yamlOrJson) {
|
|
187
|
+
return base16ToColorScheme(parseBase16Yaml(yamlOrJson));
|
|
188
|
+
}
|
|
189
|
+
/** Convert a parsed Base16Scheme to ColorScheme. */
|
|
190
|
+
function base16ToColorScheme(scheme) {
|
|
191
|
+
const bg = hex(scheme.base00);
|
|
192
|
+
const fg = hex(scheme.base05);
|
|
193
|
+
const isDark = luminance(bg) < .179;
|
|
194
|
+
const black = isDark ? darken(bg, .15) : brighten(bg, .15);
|
|
195
|
+
const red = hex(scheme.base08);
|
|
196
|
+
const green = hex(scheme.base0B);
|
|
197
|
+
const yellow = hex(scheme.base0A);
|
|
198
|
+
const blue = hex(scheme.base0D);
|
|
199
|
+
const magenta = hex(scheme.base0E);
|
|
200
|
+
const cyan = hex(scheme.base0C);
|
|
201
|
+
return {
|
|
202
|
+
name: scheme.scheme,
|
|
203
|
+
dark: isDark,
|
|
204
|
+
black,
|
|
205
|
+
red,
|
|
206
|
+
green,
|
|
207
|
+
yellow,
|
|
208
|
+
blue,
|
|
209
|
+
magenta,
|
|
210
|
+
cyan,
|
|
211
|
+
white: hex(scheme.base03),
|
|
212
|
+
brightBlack: hex(scheme.base01),
|
|
213
|
+
brightRed: hex(scheme.base09),
|
|
214
|
+
brightGreen: brighten(green, .15),
|
|
215
|
+
brightYellow: brighten(yellow, .15),
|
|
216
|
+
brightBlue: brighten(blue, .15),
|
|
217
|
+
brightMagenta: hex(scheme.base0F),
|
|
218
|
+
brightCyan: brighten(cyan, .15),
|
|
219
|
+
brightWhite: fg,
|
|
220
|
+
foreground: fg,
|
|
221
|
+
background: bg,
|
|
222
|
+
cursorColor: fg,
|
|
223
|
+
cursorText: bg,
|
|
224
|
+
selectionBackground: hex(scheme.base02),
|
|
225
|
+
selectionForeground: fg
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
var init_base16$1 = __esmMin((() => {
|
|
229
|
+
init_types();
|
|
230
|
+
}));
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region packages/theme/src/generators.ts
|
|
233
|
+
/**
|
|
234
|
+
* Palette generators — produce a ColorScheme from various inputs.
|
|
235
|
+
*
|
|
236
|
+
* All generators return a complete ColorScheme (22 fields).
|
|
237
|
+
*/
|
|
238
|
+
function isDarkColor$1(hex) {
|
|
239
|
+
const L = relativeLuminance(hex);
|
|
240
|
+
return L === null ? true : L < .5;
|
|
241
|
+
}
|
|
242
|
+
/** Find which hue slot the primary color best matches by OKLCH hue angle proximity. */
|
|
243
|
+
function assignPrimaryToSlot(primary) {
|
|
244
|
+
const o = hexToOklch(primary);
|
|
245
|
+
if (!o) return "blue";
|
|
246
|
+
const h = o.H;
|
|
247
|
+
for (const [lo, hi, name] of [
|
|
248
|
+
[
|
|
249
|
+
0,
|
|
250
|
+
15,
|
|
251
|
+
"red"
|
|
252
|
+
],
|
|
253
|
+
[
|
|
254
|
+
15,
|
|
255
|
+
42,
|
|
256
|
+
"orange"
|
|
257
|
+
],
|
|
258
|
+
[
|
|
259
|
+
42,
|
|
260
|
+
75,
|
|
261
|
+
"yellow"
|
|
262
|
+
],
|
|
263
|
+
[
|
|
264
|
+
75,
|
|
265
|
+
170,
|
|
266
|
+
"green"
|
|
267
|
+
],
|
|
268
|
+
[
|
|
269
|
+
170,
|
|
270
|
+
210,
|
|
271
|
+
"teal"
|
|
272
|
+
],
|
|
273
|
+
[
|
|
274
|
+
210,
|
|
275
|
+
275,
|
|
276
|
+
"blue"
|
|
277
|
+
],
|
|
278
|
+
[
|
|
279
|
+
275,
|
|
280
|
+
330,
|
|
281
|
+
"purple"
|
|
282
|
+
],
|
|
283
|
+
[
|
|
284
|
+
330,
|
|
285
|
+
360,
|
|
286
|
+
"pink"
|
|
287
|
+
]
|
|
288
|
+
]) if (h >= lo && h < hi) return name;
|
|
289
|
+
return "red";
|
|
290
|
+
}
|
|
291
|
+
/** Generate 8 accent hues from a primary, placing it in its natural slot. */
|
|
292
|
+
function generateAccentsFromPrimary(primary) {
|
|
293
|
+
const o = hexToOklch(primary);
|
|
294
|
+
if (!o) return {
|
|
295
|
+
red: "#BF616A",
|
|
296
|
+
orange: "#D08770",
|
|
297
|
+
yellow: "#EBCB8B",
|
|
298
|
+
green: "#A3BE8C",
|
|
299
|
+
teal: "#88C0D0",
|
|
300
|
+
blue: "#5E81AC",
|
|
301
|
+
purple: "#B48EAD",
|
|
302
|
+
pink: "#D4879C"
|
|
303
|
+
};
|
|
304
|
+
const slot = assignPrimaryToSlot(primary);
|
|
305
|
+
const result = {};
|
|
306
|
+
for (const [name, targetH] of Object.entries(targetHues)) result[name] = name === slot ? primary : oklchToHex({
|
|
307
|
+
L: o.L,
|
|
308
|
+
C: o.C,
|
|
309
|
+
H: targetH
|
|
310
|
+
});
|
|
311
|
+
return result;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Generate a ColorScheme from a Base16 YAML scheme.
|
|
315
|
+
*
|
|
316
|
+
* Maps base00–base0F to ANSI palette colors, derives special colors.
|
|
317
|
+
*/
|
|
318
|
+
function fromBase16(yamlOrJson) {
|
|
319
|
+
return importBase16(yamlOrJson);
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Generate a full ColorScheme from 1-3 hex colors.
|
|
323
|
+
*
|
|
324
|
+
* At minimum, provide `background` or `primary`. Missing colors are
|
|
325
|
+
* generated via surface ramp (from bg) and hue rotation (from primary).
|
|
326
|
+
*/
|
|
327
|
+
function fromColors(opts) {
|
|
328
|
+
const dark = opts.dark ?? (opts.background ? isDarkColor$1(opts.background) : true);
|
|
329
|
+
const step = dark ? brighten : darken;
|
|
330
|
+
const bg = opts.background ?? (dark ? "#2E3440" : "#FFFFFF");
|
|
331
|
+
const fg = opts.foreground ?? step(bg, .85);
|
|
332
|
+
const accents = opts.primary ? generateAccentsFromPrimary(opts.primary) : {
|
|
333
|
+
red: "#BF616A",
|
|
334
|
+
orange: "#D08770",
|
|
335
|
+
yellow: "#EBCB8B",
|
|
336
|
+
green: "#A3BE8C",
|
|
337
|
+
teal: "#88C0D0",
|
|
338
|
+
blue: "#5E81AC",
|
|
339
|
+
purple: "#B48EAD",
|
|
340
|
+
pink: "#D4879C"
|
|
341
|
+
};
|
|
342
|
+
const black = dark ? darken(bg, .05) : darken(bg, .1);
|
|
343
|
+
const white = dark ? blend(fg, bg, .3) : blend(bg, fg, .3);
|
|
344
|
+
const brightBlack = step(bg, .15);
|
|
345
|
+
const brightWhite = dark ? fg : brighten(fg, .1);
|
|
346
|
+
return {
|
|
347
|
+
name: opts.name ?? (dark ? "generated-dark" : "generated-light"),
|
|
348
|
+
dark,
|
|
349
|
+
primary: opts.primary,
|
|
350
|
+
black,
|
|
351
|
+
red: accents.red,
|
|
352
|
+
green: accents.green,
|
|
353
|
+
yellow: accents.yellow,
|
|
354
|
+
blue: accents.blue,
|
|
355
|
+
magenta: accents.purple,
|
|
356
|
+
cyan: accents.teal,
|
|
357
|
+
white,
|
|
358
|
+
brightBlack,
|
|
359
|
+
brightRed: accents.orange,
|
|
360
|
+
brightGreen: brighten(accents.green, .15),
|
|
361
|
+
brightYellow: brighten(accents.yellow, .15),
|
|
362
|
+
brightBlue: brighten(accents.blue, .15),
|
|
363
|
+
brightMagenta: accents.pink,
|
|
364
|
+
brightCyan: brighten(accents.teal, .15),
|
|
365
|
+
brightWhite,
|
|
366
|
+
foreground: fg,
|
|
367
|
+
background: bg,
|
|
368
|
+
cursorColor: fg,
|
|
369
|
+
cursorText: bg,
|
|
370
|
+
selectionBackground: blend(bg, accents.blue, .3),
|
|
371
|
+
selectionForeground: fg
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Look up a built-in palette by name.
|
|
376
|
+
*
|
|
377
|
+
* @returns The ColorScheme, or undefined if not found.
|
|
378
|
+
*/
|
|
379
|
+
function fromPreset(name) {
|
|
380
|
+
return getSchemeByName(name);
|
|
381
|
+
}
|
|
382
|
+
var targetHues;
|
|
383
|
+
var init_generators = __esmMin((() => {
|
|
384
|
+
init_base16$1();
|
|
385
|
+
init_schemes();
|
|
386
|
+
targetHues = {
|
|
387
|
+
red: 29,
|
|
388
|
+
orange: 55,
|
|
389
|
+
yellow: 90,
|
|
390
|
+
green: 142,
|
|
391
|
+
teal: 195,
|
|
392
|
+
blue: 240,
|
|
393
|
+
purple: 305,
|
|
394
|
+
pink: 350
|
|
395
|
+
};
|
|
396
|
+
}));
|
|
397
|
+
//#endregion
|
|
398
|
+
//#region packages/theme/src/builder.ts
|
|
399
|
+
/**
|
|
400
|
+
* Chainable theme builder — create themes from minimal input.
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```typescript
|
|
404
|
+
* // Just a background color
|
|
405
|
+
* const theme = createTheme().bg('#2E3440').build()
|
|
406
|
+
*
|
|
407
|
+
* // Primary + explicit dark mode
|
|
408
|
+
* const theme = createTheme().primary('#EBCB8B').dark().build()
|
|
409
|
+
*
|
|
410
|
+
* // Three-color input (dark/light inferred from bg luminance)
|
|
411
|
+
* const theme = createTheme()
|
|
412
|
+
* .bg('#2E3440').fg('#ECEFF4').primary('#EBCB8B').build()
|
|
413
|
+
*
|
|
414
|
+
* // Preset with override
|
|
415
|
+
* const theme = createTheme().preset('nord').primary('#A3BE8C').build()
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
418
|
+
function isDarkColor(hex) {
|
|
419
|
+
const rgb = hexToRgb(hex);
|
|
420
|
+
if (!rgb) return true;
|
|
421
|
+
return (rgb[0] + rgb[1] + rgb[2]) / 765 < .5;
|
|
422
|
+
}
|
|
423
|
+
/** Create a chainable theme builder. */
|
|
424
|
+
function createTheme() {
|
|
425
|
+
const state = { colors: {} };
|
|
426
|
+
const builder = {
|
|
427
|
+
bg(color) {
|
|
428
|
+
state.bgColor = color;
|
|
429
|
+
return builder;
|
|
430
|
+
},
|
|
431
|
+
fg(color) {
|
|
432
|
+
state.fgColor = color;
|
|
433
|
+
return builder;
|
|
434
|
+
},
|
|
435
|
+
primary(color) {
|
|
436
|
+
state.primaryColor = color;
|
|
437
|
+
return builder;
|
|
438
|
+
},
|
|
439
|
+
accent(color) {
|
|
440
|
+
return builder.primary(color);
|
|
441
|
+
},
|
|
442
|
+
dark() {
|
|
443
|
+
state.dark = true;
|
|
444
|
+
return builder;
|
|
445
|
+
},
|
|
446
|
+
light() {
|
|
447
|
+
state.dark = false;
|
|
448
|
+
return builder;
|
|
449
|
+
},
|
|
450
|
+
color(name, value) {
|
|
451
|
+
state.colors[name] = value;
|
|
452
|
+
return builder;
|
|
453
|
+
},
|
|
454
|
+
palette(p) {
|
|
455
|
+
state.presetPalette = p;
|
|
456
|
+
return builder;
|
|
457
|
+
},
|
|
458
|
+
preset(name) {
|
|
459
|
+
const p = getSchemeByName(name);
|
|
460
|
+
if (p) state.presetPalette = p;
|
|
461
|
+
return builder;
|
|
462
|
+
},
|
|
463
|
+
build() {
|
|
464
|
+
const isDark = state.dark ?? (state.bgColor ? isDarkColor(state.bgColor) : true);
|
|
465
|
+
let palette;
|
|
466
|
+
if (state.presetPalette) {
|
|
467
|
+
palette = { ...state.presetPalette };
|
|
468
|
+
if (state.bgColor) palette.background = state.bgColor;
|
|
469
|
+
if (state.fgColor) palette.foreground = state.fgColor;
|
|
470
|
+
if (state.primaryColor) {
|
|
471
|
+
palette.primary = state.primaryColor;
|
|
472
|
+
const ansiName = hueToAnsiField(assignPrimaryToSlot(state.primaryColor));
|
|
473
|
+
palette[ansiName] = state.primaryColor;
|
|
474
|
+
}
|
|
475
|
+
palette.dark = isDark;
|
|
476
|
+
} else palette = fromColors({
|
|
477
|
+
background: state.bgColor,
|
|
478
|
+
foreground: state.fgColor,
|
|
479
|
+
primary: state.primaryColor,
|
|
480
|
+
dark: isDark
|
|
481
|
+
});
|
|
482
|
+
for (const [key, val] of Object.entries(state.colors)) if (val !== void 0 && typeof val === "string") palette[key] = val;
|
|
483
|
+
return deriveTheme(palette);
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
return builder;
|
|
487
|
+
}
|
|
488
|
+
/** Map a HueName to the corresponding ColorScheme field. */
|
|
489
|
+
function hueToAnsiField(hue) {
|
|
490
|
+
return {
|
|
491
|
+
red: "red",
|
|
492
|
+
orange: "brightRed",
|
|
493
|
+
yellow: "yellow",
|
|
494
|
+
green: "green",
|
|
495
|
+
teal: "cyan",
|
|
496
|
+
blue: "blue",
|
|
497
|
+
purple: "magenta",
|
|
498
|
+
pink: "brightMagenta"
|
|
499
|
+
}[hue];
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Quick theme from a primary color or color name.
|
|
503
|
+
*
|
|
504
|
+
* @example
|
|
505
|
+
* ```typescript
|
|
506
|
+
* quickTheme('#EBCB8B', 'dark') // yellow primary, dark mode
|
|
507
|
+
* quickTheme('blue') // blue primary, default dark
|
|
508
|
+
* ```
|
|
509
|
+
*/
|
|
510
|
+
function quickTheme(primaryOrHex, mode) {
|
|
511
|
+
const b = createTheme();
|
|
512
|
+
if (primaryOrHex.startsWith("#")) b.primary(primaryOrHex);
|
|
513
|
+
else b.primary({
|
|
514
|
+
red: "#BF616A",
|
|
515
|
+
orange: "#D08770",
|
|
516
|
+
yellow: "#EBCB8B",
|
|
517
|
+
green: "#A3BE8C",
|
|
518
|
+
teal: "#88C0D0",
|
|
519
|
+
cyan: "#88C0D0",
|
|
520
|
+
blue: "#5E81AC",
|
|
521
|
+
purple: "#B48EAD",
|
|
522
|
+
pink: "#D4879C",
|
|
523
|
+
magenta: "#B48EAD",
|
|
524
|
+
white: "#ECEFF4"
|
|
525
|
+
}[primaryOrHex] ?? "#5E81AC");
|
|
526
|
+
if (mode === "dark") b.dark();
|
|
527
|
+
else if (mode === "light") b.light();
|
|
528
|
+
return b.build();
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Create a theme from a built-in preset name.
|
|
532
|
+
*
|
|
533
|
+
* @example
|
|
534
|
+
* ```typescript
|
|
535
|
+
* presetTheme('catppuccin-mocha')
|
|
536
|
+
* presetTheme('nord')
|
|
537
|
+
* ```
|
|
538
|
+
*/
|
|
539
|
+
function presetTheme(name) {
|
|
540
|
+
return createTheme().preset(name).build();
|
|
541
|
+
}
|
|
542
|
+
var init_builder = __esmMin((() => {
|
|
543
|
+
init_src$1();
|
|
544
|
+
init_generators();
|
|
545
|
+
init_schemes();
|
|
546
|
+
}));
|
|
547
|
+
//#endregion
|
|
548
|
+
//#region packages/theme/src/auto-generate.ts
|
|
549
|
+
/**
|
|
550
|
+
* Auto-generate themes — create a complete Theme from a single primary color.
|
|
551
|
+
*
|
|
552
|
+
* Uses OKLCH color manipulation to derive complementary and analogous colors
|
|
553
|
+
* for the full palette from one input color. OKLCH preserves perceived
|
|
554
|
+
* lightness and chroma across hue rotations, so accent ramps look balanced.
|
|
555
|
+
*/
|
|
556
|
+
/**
|
|
557
|
+
* Generate a complete Theme from a single primary color.
|
|
558
|
+
*
|
|
559
|
+
* Derives a full ColorScheme using OKLCH color manipulation:
|
|
560
|
+
* - Background/foreground from lightness endpoints using the primary's hue
|
|
561
|
+
* - Complementary and analogous accent colors from hue rotation
|
|
562
|
+
* - Surface ramp from bg lightness offsets
|
|
563
|
+
* - Status colors (error, warning, success, info) from standard hue positions
|
|
564
|
+
*
|
|
565
|
+
* @param primaryColor - A hex color string (e.g. "#5E81AC")
|
|
566
|
+
* @param mode - "dark" or "light" theme mode
|
|
567
|
+
* @returns A complete Theme with all 33 semantic tokens
|
|
568
|
+
*
|
|
569
|
+
* @example
|
|
570
|
+
* ```typescript
|
|
571
|
+
* const theme = autoGenerateTheme("#5E81AC", "dark")
|
|
572
|
+
* // Generates a full dark theme with blue as the primary accent
|
|
573
|
+
*
|
|
574
|
+
* const light = autoGenerateTheme("#E06C75", "light")
|
|
575
|
+
* // Generates a full light theme with red/rose as the primary accent
|
|
576
|
+
* ```
|
|
577
|
+
*/
|
|
578
|
+
function autoGenerateTheme(primaryColor, mode) {
|
|
579
|
+
const o = hexToOklch(primaryColor);
|
|
580
|
+
if (!o) return deriveTheme(fromColors({ dark: mode === "dark" }));
|
|
581
|
+
const dark = mode === "dark";
|
|
582
|
+
const bgL = dark ? .22 : .96;
|
|
583
|
+
const fgL = dark ? .9 : .2;
|
|
584
|
+
const bgC = Math.min(o.C, .03);
|
|
585
|
+
const bg = oklchToHex({
|
|
586
|
+
L: bgL,
|
|
587
|
+
C: bgC,
|
|
588
|
+
H: o.H
|
|
589
|
+
});
|
|
590
|
+
const fg = oklchToHex({
|
|
591
|
+
L: fgL,
|
|
592
|
+
C: bgC * .5,
|
|
593
|
+
H: o.H
|
|
594
|
+
});
|
|
595
|
+
const accentL = dark ? .72 : .52;
|
|
596
|
+
const accentC = Math.max(o.C, .1);
|
|
597
|
+
const accent = (h) => oklchToHex({
|
|
598
|
+
L: accentL,
|
|
599
|
+
C: accentC,
|
|
600
|
+
H: h
|
|
601
|
+
});
|
|
602
|
+
const red = accent(HUE.red);
|
|
603
|
+
const green = accent(HUE.green);
|
|
604
|
+
const yellow = accent(HUE.yellow);
|
|
605
|
+
const blue = accent(HUE.blue);
|
|
606
|
+
const magenta = accent(HUE.magenta);
|
|
607
|
+
const cyan = accent(HUE.cyan);
|
|
608
|
+
const brightL = accentL + (dark ? .1 : -.1);
|
|
609
|
+
const brightAccent = (h) => oklchToHex({
|
|
610
|
+
L: brightL,
|
|
611
|
+
C: accentC,
|
|
612
|
+
H: h
|
|
613
|
+
});
|
|
614
|
+
const brightRed = brightAccent(HUE.orangeBright);
|
|
615
|
+
const brightGreen = brightAccent(HUE.green);
|
|
616
|
+
const brightYellow = brightAccent(HUE.yellow);
|
|
617
|
+
const brightBlue = brightAccent(HUE.blue);
|
|
618
|
+
const brightMagenta = brightAccent(HUE.pinkBright);
|
|
619
|
+
const brightCyan = brightAccent(HUE.cyan);
|
|
620
|
+
const black = oklchToHex({
|
|
621
|
+
L: dark ? bgL * .7 : bgL * .92,
|
|
622
|
+
C: bgC,
|
|
623
|
+
H: o.H
|
|
624
|
+
});
|
|
625
|
+
const white = oklchToHex({
|
|
626
|
+
L: dark ? .6 : .35,
|
|
627
|
+
C: bgC * .3,
|
|
628
|
+
H: o.H
|
|
629
|
+
});
|
|
630
|
+
const brightBlack = oklchToHex({
|
|
631
|
+
L: dark ? bgL + .1 : bgL - .08,
|
|
632
|
+
C: bgC,
|
|
633
|
+
H: o.H
|
|
634
|
+
});
|
|
635
|
+
const brightWhite = dark ? fg : oklchToHex({
|
|
636
|
+
L: fgL - .05,
|
|
637
|
+
C: bgC * .5,
|
|
638
|
+
H: o.H
|
|
639
|
+
});
|
|
640
|
+
return deriveTheme({
|
|
641
|
+
name: `generated-${mode}`,
|
|
642
|
+
dark,
|
|
643
|
+
primary: primaryColor,
|
|
644
|
+
black,
|
|
645
|
+
red,
|
|
646
|
+
green,
|
|
647
|
+
yellow,
|
|
648
|
+
blue,
|
|
649
|
+
magenta,
|
|
650
|
+
cyan,
|
|
651
|
+
white,
|
|
652
|
+
brightBlack,
|
|
653
|
+
brightRed,
|
|
654
|
+
brightGreen,
|
|
655
|
+
brightYellow,
|
|
656
|
+
brightBlue,
|
|
657
|
+
brightMagenta,
|
|
658
|
+
brightCyan,
|
|
659
|
+
brightWhite,
|
|
660
|
+
foreground: fg,
|
|
661
|
+
background: bg,
|
|
662
|
+
cursorColor: fg,
|
|
663
|
+
cursorText: bg,
|
|
664
|
+
selectionBackground: blend(bg, primaryColor, .3),
|
|
665
|
+
selectionForeground: fg
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
var HUE;
|
|
669
|
+
var init_auto_generate = __esmMin((() => {
|
|
670
|
+
init_generators();
|
|
671
|
+
init_src$1();
|
|
672
|
+
HUE = {
|
|
673
|
+
red: 29,
|
|
674
|
+
orangeBright: 55,
|
|
675
|
+
yellow: 90,
|
|
676
|
+
green: 142,
|
|
677
|
+
cyan: 195,
|
|
678
|
+
blue: 240,
|
|
679
|
+
magenta: 310,
|
|
680
|
+
pinkBright: 350
|
|
681
|
+
};
|
|
682
|
+
}));
|
|
683
|
+
//#endregion
|
|
684
|
+
//#region packages/theme/src/validate.ts
|
|
685
|
+
/**
|
|
686
|
+
* Palette validation — checks ColorScheme fields and contrast.
|
|
687
|
+
*/
|
|
688
|
+
/**
|
|
689
|
+
* Validate a ColorScheme.
|
|
690
|
+
*
|
|
691
|
+
* Checks:
|
|
692
|
+
* - All 22 color fields are present and non-empty hex strings
|
|
693
|
+
* - Warns on low-contrast foreground/background combinations
|
|
694
|
+
*/
|
|
695
|
+
function validateColorScheme(p) {
|
|
696
|
+
const errors = [];
|
|
697
|
+
const warnings = [];
|
|
698
|
+
for (const field of COLOR_SCHEME_FIELDS) {
|
|
699
|
+
const val = p[field];
|
|
700
|
+
if (!val || typeof val !== "string") errors.push(`${field} is required and must be a non-empty string`);
|
|
701
|
+
}
|
|
702
|
+
if (p.foreground && p.background) {
|
|
703
|
+
const fgRgb = hexToRgb(p.foreground);
|
|
704
|
+
const bgRgb = hexToRgb(p.background);
|
|
705
|
+
if (fgRgb && bgRgb) {
|
|
706
|
+
const fgSum = fgRgb[0] + fgRgb[1] + fgRgb[2];
|
|
707
|
+
const bgSum = bgRgb[0] + bgRgb[1] + bgRgb[2];
|
|
708
|
+
if (fgSum > 384 === bgSum > 384) warnings.push(`Low contrast: foreground (${p.foreground}) and background (${p.background}) have similar lightness`);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
return {
|
|
712
|
+
valid: errors.length === 0,
|
|
713
|
+
errors,
|
|
714
|
+
warnings
|
|
715
|
+
};
|
|
716
|
+
}
|
|
717
|
+
var init_validate = __esmMin((() => {
|
|
718
|
+
init_src$1();
|
|
719
|
+
}));
|
|
720
|
+
//#endregion
|
|
721
|
+
//#region packages/theme/src/validate-theme.ts
|
|
722
|
+
/**
|
|
723
|
+
* Validate a Theme object — check that all required tokens are present.
|
|
724
|
+
*
|
|
725
|
+
* @param theme - The theme object to validate
|
|
726
|
+
* @returns Validation result with missing and extra token lists
|
|
727
|
+
*
|
|
728
|
+
* @example
|
|
729
|
+
* ```typescript
|
|
730
|
+
* const result = validateTheme(myTheme)
|
|
731
|
+
* if (!result.valid) {
|
|
732
|
+
* console.log("Missing tokens:", result.missing)
|
|
733
|
+
* }
|
|
734
|
+
* ```
|
|
735
|
+
*/
|
|
736
|
+
function validateTheme(theme) {
|
|
737
|
+
const missing = [];
|
|
738
|
+
const extra = [];
|
|
739
|
+
for (const key of THEME_TOKEN_KEYS) {
|
|
740
|
+
const val = theme[key];
|
|
741
|
+
if (val === void 0 || val === null || val === "") missing.push(key);
|
|
742
|
+
}
|
|
743
|
+
for (const key of Object.keys(theme)) if (!ALL_KNOWN_KEYS.has(key)) extra.push(key);
|
|
744
|
+
return {
|
|
745
|
+
valid: missing.length === 0,
|
|
746
|
+
missing,
|
|
747
|
+
extra
|
|
748
|
+
};
|
|
749
|
+
}
|
|
750
|
+
var THEME_TOKEN_KEYS, ALL_KNOWN_KEYS;
|
|
751
|
+
var init_validate_theme = __esmMin((() => {
|
|
752
|
+
THEME_TOKEN_KEYS = [
|
|
753
|
+
"bg",
|
|
754
|
+
"fg",
|
|
755
|
+
"muted",
|
|
756
|
+
"mutedbg",
|
|
757
|
+
"surface",
|
|
758
|
+
"surfacebg",
|
|
759
|
+
"popover",
|
|
760
|
+
"popoverbg",
|
|
761
|
+
"cursor",
|
|
762
|
+
"cursorbg",
|
|
763
|
+
"primary",
|
|
764
|
+
"primaryfg",
|
|
765
|
+
"secondary",
|
|
766
|
+
"secondaryfg",
|
|
767
|
+
"accent",
|
|
768
|
+
"accentfg",
|
|
769
|
+
"error",
|
|
770
|
+
"errorfg",
|
|
771
|
+
"warning",
|
|
772
|
+
"warningfg",
|
|
773
|
+
"success",
|
|
774
|
+
"successfg",
|
|
775
|
+
"info",
|
|
776
|
+
"infofg",
|
|
777
|
+
"border",
|
|
778
|
+
"inputborder",
|
|
779
|
+
"focusborder",
|
|
780
|
+
"disabledfg"
|
|
781
|
+
];
|
|
782
|
+
ALL_KNOWN_KEYS = new Set([
|
|
783
|
+
...THEME_TOKEN_KEYS,
|
|
784
|
+
"name",
|
|
785
|
+
"palette"
|
|
786
|
+
]);
|
|
787
|
+
}));
|
|
788
|
+
//#endregion
|
|
789
|
+
//#region packages/theme/src/alias.ts
|
|
790
|
+
/**
|
|
791
|
+
* Resolve all token aliases in a theme.
|
|
792
|
+
*
|
|
793
|
+
* Token values that start with `$` are treated as references to other tokens.
|
|
794
|
+
* Alias chains are followed until a concrete (non-$) value is reached.
|
|
795
|
+
* Circular references are detected via a depth limit and left unresolved.
|
|
796
|
+
*
|
|
797
|
+
* @param theme - A theme-like object where values may reference other tokens via `$name`
|
|
798
|
+
* @returns A new object with all aliases resolved to concrete values
|
|
799
|
+
*
|
|
800
|
+
* @example
|
|
801
|
+
* ```typescript
|
|
802
|
+
* const themed = resolveAliases({
|
|
803
|
+
* ...baseTheme,
|
|
804
|
+
* button: "$primary", // resolves to the value of 'primary'
|
|
805
|
+
* buttonHover: "$button", // chain: buttonHover -> button -> primary -> hex
|
|
806
|
+
* })
|
|
807
|
+
* ```
|
|
808
|
+
*/
|
|
809
|
+
function resolveAliases(theme) {
|
|
810
|
+
const result = {};
|
|
811
|
+
for (const key of Object.keys(theme)) result[key] = resolveAlias(key, theme, 0);
|
|
812
|
+
return result;
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Resolve a single token's alias chain.
|
|
816
|
+
*
|
|
817
|
+
* @param key - The token key to resolve
|
|
818
|
+
* @param tokens - The full token map
|
|
819
|
+
* @param depth - Current recursion depth (for loop detection)
|
|
820
|
+
* @returns The resolved concrete value, or the raw alias string if unresolvable
|
|
821
|
+
*/
|
|
822
|
+
function resolveAlias(key, tokens, depth) {
|
|
823
|
+
if (depth >= MAX_ALIAS_DEPTH) return tokens[key] ?? "";
|
|
824
|
+
const value = tokens[key];
|
|
825
|
+
if (value === void 0) return "";
|
|
826
|
+
if (!value.startsWith("$")) return value;
|
|
827
|
+
const refKey = value.slice(1);
|
|
828
|
+
if (!(refKey in tokens)) return value;
|
|
829
|
+
return resolveAlias(refKey, tokens, depth + 1);
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* Resolve a single alias value against a Theme.
|
|
833
|
+
*
|
|
834
|
+
* Useful for resolving individual values without processing the entire theme.
|
|
835
|
+
*
|
|
836
|
+
* @param value - The value to resolve (may be "$tokenName" or a concrete value)
|
|
837
|
+
* @param theme - The theme to resolve against
|
|
838
|
+
* @returns The resolved concrete value
|
|
839
|
+
*/
|
|
840
|
+
function resolveTokenAlias(value, theme) {
|
|
841
|
+
if (!value.startsWith("$")) return value;
|
|
842
|
+
const seen = /* @__PURE__ */ new Set();
|
|
843
|
+
let current = value;
|
|
844
|
+
for (let i = 0; i < MAX_ALIAS_DEPTH; i++) {
|
|
845
|
+
if (!current.startsWith("$")) return current;
|
|
846
|
+
const key = current.slice(1);
|
|
847
|
+
if (seen.has(key)) return current;
|
|
848
|
+
seen.add(key);
|
|
849
|
+
const resolved = theme[key];
|
|
850
|
+
if (typeof resolved !== "string") return current;
|
|
851
|
+
current = resolved;
|
|
852
|
+
}
|
|
853
|
+
return current;
|
|
854
|
+
}
|
|
855
|
+
var MAX_ALIAS_DEPTH;
|
|
856
|
+
var init_alias = __esmMin((() => {
|
|
857
|
+
MAX_ALIAS_DEPTH = 10;
|
|
858
|
+
}));
|
|
859
|
+
//#endregion
|
|
860
|
+
//#region packages/theme/src/css.ts
|
|
861
|
+
/**
|
|
862
|
+
* Convert a Theme to CSS custom properties.
|
|
863
|
+
*
|
|
864
|
+
* Token names mirror Sterling's flat grammar with a `--` prefix:
|
|
865
|
+
* - `bg-surface-default` → `--bg-surface-default`
|
|
866
|
+
* - `fg-accent` → `--fg-accent`
|
|
867
|
+
* - `border-focus` → `--border-focus`
|
|
868
|
+
* - Palette entries: `--color0` through `--color15`
|
|
869
|
+
*
|
|
870
|
+
* @param theme - The theme to convert (Sterling flat tokens must be populated)
|
|
871
|
+
* @returns A record mapping CSS custom property names to color values
|
|
872
|
+
*
|
|
873
|
+
* @example
|
|
874
|
+
* ```typescript
|
|
875
|
+
* const vars = themeToCSSVars(myTheme)
|
|
876
|
+
* // { "--bg-surface-default": "#1E1E2E", "--fg-accent": "#F9E2AF", ... }
|
|
877
|
+
*
|
|
878
|
+
* // Apply to an element:
|
|
879
|
+
* Object.assign(element.style, vars)
|
|
880
|
+
* ```
|
|
881
|
+
*/
|
|
882
|
+
function themeToCSSVars(theme) {
|
|
883
|
+
const vars = {};
|
|
884
|
+
const flat = theme;
|
|
885
|
+
for (const key of STERLING_FLAT_TOKENS) {
|
|
886
|
+
const value = flat[key];
|
|
887
|
+
if (typeof value === "string") vars[`--${key}`] = value;
|
|
888
|
+
}
|
|
889
|
+
if (theme.palette) for (let i = 0; i < theme.palette.length; i++) vars[`--color${i}`] = theme.palette[i];
|
|
890
|
+
return vars;
|
|
891
|
+
}
|
|
892
|
+
var init_css = __esmMin((() => {
|
|
893
|
+
init_src$1();
|
|
894
|
+
}));
|
|
895
|
+
//#endregion
|
|
896
|
+
//#region packages/theme/src/export/base16.ts
|
|
897
|
+
/**
|
|
898
|
+
* Export ColorScheme to Base16 YAML format.
|
|
899
|
+
*
|
|
900
|
+
* Maps ColorScheme fields to base00–base0F. For fields that
|
|
901
|
+
* ColorScheme doesn't store directly (base04/base06/base07),
|
|
902
|
+
* we interpolate between neighboring values.
|
|
903
|
+
*
|
|
904
|
+
* @see https://github.com/chriskempson/base16
|
|
905
|
+
*/
|
|
906
|
+
/** Strip `#` prefix from a hex color string and uppercase. */
|
|
907
|
+
function stripHash(hex) {
|
|
908
|
+
return (hex.startsWith("#") ? hex.slice(1) : hex).toUpperCase();
|
|
909
|
+
}
|
|
910
|
+
/**
|
|
911
|
+
* Export a ColorScheme to Base16 YAML format.
|
|
912
|
+
*
|
|
913
|
+
* Mapping:
|
|
914
|
+
* background → base00, brightBlack → base01, selectionBackground → base02,
|
|
915
|
+
* white → base03, (interpolated) → base04, foreground → base05,
|
|
916
|
+
* (interpolated) → base06, (interpolated) → base07,
|
|
917
|
+
* red → base08, brightRed → base09, yellow → base0A, green → base0B,
|
|
918
|
+
* cyan → base0C, blue → base0D, magenta → base0E, brightMagenta → base0F.
|
|
919
|
+
*/
|
|
920
|
+
function exportBase16(palette) {
|
|
921
|
+
const dark = palette.dark ?? true;
|
|
922
|
+
const base04 = blend(palette.white, palette.foreground, .33);
|
|
923
|
+
const base06 = dark ? blend(palette.foreground, "#FFFFFF", .15) : blend(palette.foreground, "#000000", .15);
|
|
924
|
+
const base07 = palette.black;
|
|
925
|
+
return [
|
|
926
|
+
`scheme: "${palette.name ?? "exported"}"`,
|
|
927
|
+
`author: ""`,
|
|
928
|
+
`base00: "${stripHash(palette.background)}"`,
|
|
929
|
+
`base01: "${stripHash(palette.brightBlack)}"`,
|
|
930
|
+
`base02: "${stripHash(palette.selectionBackground)}"`,
|
|
931
|
+
`base03: "${stripHash(palette.white)}"`,
|
|
932
|
+
`base04: "${stripHash(base04)}"`,
|
|
933
|
+
`base05: "${stripHash(palette.foreground)}"`,
|
|
934
|
+
`base06: "${stripHash(base06)}"`,
|
|
935
|
+
`base07: "${stripHash(base07)}"`,
|
|
936
|
+
`base08: "${stripHash(palette.red)}"`,
|
|
937
|
+
`base09: "${stripHash(palette.brightRed)}"`,
|
|
938
|
+
`base0A: "${stripHash(palette.yellow)}"`,
|
|
939
|
+
`base0B: "${stripHash(palette.green)}"`,
|
|
940
|
+
`base0C: "${stripHash(palette.cyan)}"`,
|
|
941
|
+
`base0D: "${stripHash(palette.blue)}"`,
|
|
942
|
+
`base0E: "${stripHash(palette.magenta)}"`,
|
|
943
|
+
`base0F: "${stripHash(palette.brightMagenta)}"`
|
|
944
|
+
].join("\n") + "\n";
|
|
945
|
+
}
|
|
946
|
+
var init_base16 = __esmMin((() => {}));
|
|
947
|
+
//#endregion
|
|
948
|
+
//#region packages/theme/src/detect.ts
|
|
949
|
+
var init_detect = __esmMin((() => {
|
|
950
|
+
init_src$1();
|
|
951
|
+
}));
|
|
952
|
+
//#endregion
|
|
953
|
+
//#region packages/theme/src/sterling/index.ts
|
|
954
|
+
var init_sterling = __esmMin((() => {
|
|
955
|
+
init_src$1();
|
|
956
|
+
}));
|
|
957
|
+
//#endregion
|
|
958
|
+
//#region packages/theme/src/theme.ts
|
|
959
|
+
var init_theme = __esmMin((() => {
|
|
960
|
+
init_src$1();
|
|
961
|
+
init_generate();
|
|
962
|
+
init_generators();
|
|
963
|
+
init_builder();
|
|
964
|
+
init_auto_generate();
|
|
965
|
+
init_validate();
|
|
966
|
+
init_validate_theme();
|
|
967
|
+
init_alias();
|
|
968
|
+
init_css();
|
|
969
|
+
init_base16$1();
|
|
970
|
+
init_base16();
|
|
971
|
+
init_schemes();
|
|
972
|
+
init_detect();
|
|
973
|
+
init_sterling();
|
|
974
|
+
}));
|
|
975
|
+
//#endregion
|
|
976
|
+
//#region packages/theme/src/index.ts
|
|
977
|
+
var src_exports = /* @__PURE__ */ __exportAll({
|
|
978
|
+
COLOR_SCHEME_FIELDS: () => COLOR_SCHEME_FIELDS,
|
|
979
|
+
STERLING_FLAT_TOKENS: () => STERLING_FLAT_TOKENS,
|
|
980
|
+
SterlingContrastError: () => ContrastError,
|
|
981
|
+
THEME_TOKEN_KEYS: () => THEME_TOKEN_KEYS,
|
|
982
|
+
WCAG_AA: () => WCAG_AA,
|
|
983
|
+
ansi16DarkTheme: () => ansi16DarkTheme,
|
|
984
|
+
ansi16LightTheme: () => ansi16LightTheme,
|
|
985
|
+
assignPrimaryToSlot: () => assignPrimaryToSlot,
|
|
986
|
+
autoGenerateTheme: () => autoGenerateTheme,
|
|
987
|
+
ayuDark: () => ayuDark,
|
|
988
|
+
ayuLight: () => ayuLight,
|
|
989
|
+
ayuMirage: () => ayuMirage,
|
|
990
|
+
bakeFlat: () => bakeFlat,
|
|
991
|
+
builtinPalettes: () => builtinPalettes,
|
|
992
|
+
builtinThemes: () => builtinThemes,
|
|
993
|
+
catppuccinFrappe: () => catppuccinFrappe,
|
|
994
|
+
catppuccinLatte: () => catppuccinLatte,
|
|
995
|
+
catppuccinMacchiato: () => catppuccinMacchiato,
|
|
996
|
+
catppuccinMocha: () => catppuccinMocha,
|
|
997
|
+
createTheme: () => createTheme,
|
|
998
|
+
dawnfox: () => dawnfox,
|
|
999
|
+
defaultDarkTheme: () => defaultDarkTheme,
|
|
1000
|
+
defaultFlattenRule: () => defaultFlattenRule,
|
|
1001
|
+
defaultLightTheme: () => defaultLightTheme,
|
|
1002
|
+
defineDesignSystem: () => defineDesignSystem,
|
|
1003
|
+
detectScheme: () => detectScheme,
|
|
1004
|
+
detectSchemeTheme: () => detectSchemeTheme,
|
|
1005
|
+
detectTerminalScheme: () => detectTerminalScheme,
|
|
1006
|
+
detectTheme: () => detectTheme,
|
|
1007
|
+
dracula: () => dracula,
|
|
1008
|
+
edgeDark: () => edgeDark,
|
|
1009
|
+
edgeLight: () => edgeLight,
|
|
1010
|
+
everforestDark: () => everforestDark,
|
|
1011
|
+
everforestLight: () => everforestLight,
|
|
1012
|
+
exportBase16: () => exportBase16,
|
|
1013
|
+
fromBase16: () => fromBase16,
|
|
1014
|
+
fromColors: () => fromColors,
|
|
1015
|
+
fromPreset: () => fromPreset,
|
|
1016
|
+
generateTheme: () => generateTheme,
|
|
1017
|
+
getSchemeByName: () => getSchemeByName,
|
|
1018
|
+
getThemeByName: () => getThemeByName,
|
|
1019
|
+
gruvboxDark: () => gruvboxDark,
|
|
1020
|
+
gruvboxLight: () => gruvboxLight,
|
|
1021
|
+
horizon: () => horizon,
|
|
1022
|
+
importBase16: () => importBase16,
|
|
1023
|
+
kanagawaDragon: () => kanagawaDragon,
|
|
1024
|
+
kanagawaLotus: () => kanagawaLotus,
|
|
1025
|
+
kanagawaWave: () => kanagawaWave,
|
|
1026
|
+
materialDark: () => materialDark,
|
|
1027
|
+
materialLight: () => materialLight,
|
|
1028
|
+
modusOperandi: () => modusOperandi,
|
|
1029
|
+
modusVivendi: () => modusVivendi,
|
|
1030
|
+
monokai: () => monokai,
|
|
1031
|
+
monokaiPro: () => monokaiPro,
|
|
1032
|
+
moonfly: () => moonfly,
|
|
1033
|
+
nightfly: () => nightfly,
|
|
1034
|
+
nightfox: () => nightfox,
|
|
1035
|
+
nord: () => nord,
|
|
1036
|
+
oneDark: () => oneDark,
|
|
1037
|
+
oxocarbonDark: () => oxocarbonDark,
|
|
1038
|
+
oxocarbonLight: () => oxocarbonLight,
|
|
1039
|
+
palenight: () => palenight,
|
|
1040
|
+
presetTheme: () => presetTheme,
|
|
1041
|
+
probeColors: () => probeColors,
|
|
1042
|
+
quickTheme: () => quickTheme,
|
|
1043
|
+
resolveAliases: () => resolveAliases,
|
|
1044
|
+
resolveTokenAlias: () => resolveTokenAlias,
|
|
1045
|
+
rosePine: () => rosePine,
|
|
1046
|
+
rosePineDawn: () => rosePineDawn,
|
|
1047
|
+
rosePineMoon: () => rosePineMoon,
|
|
1048
|
+
snazzy: () => snazzy,
|
|
1049
|
+
solarizedDark: () => solarizedDark,
|
|
1050
|
+
solarizedLight: () => solarizedLight,
|
|
1051
|
+
sonokai: () => sonokai,
|
|
1052
|
+
sterling: () => sterling,
|
|
1053
|
+
sterlingAutoLift: () => autoLift,
|
|
1054
|
+
sterlingCheckAA: () => checkAA,
|
|
1055
|
+
sterlingDefaultScheme: () => defaultScheme,
|
|
1056
|
+
sterlingDeriveRoles: () => deriveRoles,
|
|
1057
|
+
sterlingDeriveTheme: () => deriveTheme$1,
|
|
1058
|
+
themeToCSSVars: () => themeToCSSVars,
|
|
1059
|
+
tokyoNight: () => tokyoNight,
|
|
1060
|
+
tokyoNightDay: () => tokyoNightDay,
|
|
1061
|
+
tokyoNightStorm: () => tokyoNightStorm,
|
|
1062
|
+
validateColorScheme: () => validateColorScheme,
|
|
1063
|
+
validateTheme: () => validateTheme
|
|
1064
|
+
});
|
|
1065
|
+
var init_src = __esmMin((() => {
|
|
1066
|
+
init_theme();
|
|
1067
|
+
}));
|
|
1068
|
+
//#endregion
|
|
1069
|
+
export { fromPreset as _, resolveAliases as a, validateTheme as c, createTheme as d, presetTheme as f, fromColors as g, fromBase16 as h, themeToCSSVars as i, validateColorScheme as l, assignPrimaryToSlot as m, src_exports as n, resolveTokenAlias as o, quickTheme as p, exportBase16 as r, THEME_TOKEN_KEYS as s, init_src as t, autoGenerateTheme as u, importBase16 as v, generateTheme as y };
|
|
1070
|
+
|
|
1071
|
+
//# sourceMappingURL=src-5w9QR6_8.mjs.map
|