@tooee/themes 0.7.2 → 0.8.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/context.d.ts CHANGED
@@ -1,18 +1,19 @@
1
1
  import type { ReactNode } from "react";
2
2
  import type { SyntaxStyle } from "@opentui/core";
3
+ import type { ColorMode } from "@tooee/config";
3
4
  import type { ResolvedTheme } from "./types.js";
4
5
  import type { Theme } from "./loader.js";
5
6
  interface ThemeContextValue {
6
7
  theme: ResolvedTheme;
7
8
  syntax: SyntaxStyle;
8
9
  name: string;
9
- mode: "dark" | "light";
10
+ mode: ColorMode;
10
11
  }
11
12
  export interface ThemeProviderProps {
12
13
  /** Theme name (e.g. "tokyonight", "catppuccin", "dracula") */
13
14
  name?: string;
14
15
  /** Color mode */
15
- mode?: "dark" | "light";
16
+ mode?: ColorMode;
16
17
  /** Full Theme object (overrides name/mode if provided) */
17
18
  theme?: Theme;
18
19
  children: ReactNode;
@@ -29,7 +30,7 @@ interface ThemeSwitcherContextValue extends ThemeContextValue {
29
30
  }
30
31
  export interface ThemeSwitcherProviderProps {
31
32
  initialTheme?: string;
32
- initialMode?: "dark" | "light";
33
+ initialMode?: ColorMode;
33
34
  children: ReactNode;
34
35
  }
35
36
  export declare const ThemeSwitcherProvider: ({ initialTheme, initialMode, children, }: ThemeSwitcherProviderProps) => ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMzC,UAAU,iBAAiB;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,gDAKvB,kBAAkB,KAAG,SAgBvB,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAwB,iBAE5C,CAAC;AAMF,UAAU,yBAA0B,SAAQ,iBAAiB;IAC3D,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,6CAI/B,0BAA0B,KAAG,SAwD/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAgC,yBAM5D,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMzC,UAAU,iBAAiB;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB;AASD,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,gDAKvB,kBAAkB,KAAG,SAgBvB,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAwB,iBAE5C,CAAC;AAMF,UAAU,yBAA0B,SAAQ,iBAAiB;IAC3D,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,qBAAqB,6CAI/B,0BAA0B,KAAG,SAwD/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAgC,yBAM5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,8 @@
1
- export { resolveTheme } from "./types.js";
1
+ export { FALLBACKS, RESOLVED_KEYS, resolveTheme } from "./types.js";
2
2
  export type { ThemeJSON, ResolvedTheme } from "./types.js";
3
3
  export { buildSyntaxStyle } from "./syntax-rules.js";
4
4
  export { loadThemes, getThemeNames, defaultTheme } from "./loader.js";
5
5
  export type { Theme } from "./loader.js";
6
6
  export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher } from "./context.js";
7
7
  export type { ThemeProviderProps, ThemeSwitcherProviderProps } from "./context.js";
8
- export { ThemePicker } from "./theme-picker.js";
9
- export type { ThemePickerEntry } from "./theme-picker.js";
10
- export { CloseButton } from "./close-button.js";
11
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,5 @@
1
- export { resolveTheme } from "./types.js";
1
+ export { FALLBACKS, RESOLVED_KEYS, resolveTheme } from "./types.js";
2
2
  export { buildSyntaxStyle } from "./syntax-rules.js";
3
3
  export { loadThemes, getThemeNames, defaultTheme } from "./loader.js";
4
4
  export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher } from "./context.js";
5
- export { ThemePicker } from "./theme-picker.js";
6
- export { CloseButton } from "./close-button.js";
7
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
package/dist/loader.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  import type { SyntaxStyle } from "@opentui/core";
2
+ import type { ColorMode } from "@tooee/config";
2
3
  import type { ThemeJSON, ResolvedTheme } from "./types.js";
3
4
  export interface Theme {
4
5
  name: string;
5
- mode: "dark" | "light";
6
+ mode: ColorMode;
6
7
  colors: ResolvedTheme;
7
8
  syntax: SyntaxStyle;
8
9
  }
9
10
  export declare const loadThemes: () => Map<string, ThemeJSON>;
10
11
  export declare const getThemeNames: () => string[];
11
12
  export declare const DEFAULT_THEME_NAME = "tokyonight";
12
- export declare const DEFAULT_MODE: "dark" | "light";
13
+ export declare const DEFAULT_MODE: ColorMode;
13
14
  export declare const defaultTheme: Theme;
14
- export declare const buildTheme: (name: string, mode: "dark" | "light") => Theme;
15
+ export declare const buildTheme: (name: string, mode: ColorMode) => Theme;
15
16
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AA8DD,eAAO,MAAM,UAAU,QAA0B,GAAG,CAAC,MAAM,EAAE,SAAS,CAErE,CAAC;AAEF,eAAO,MAAM,aAAa,QAA6B,MAAM,EAE5D,CAAC;AAMF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,YAAY,EAAE,MAAM,GAAG,OAAgB,CAAC;AA4DrD,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAC;AAEzD,eAAO,MAAM,UAAU,SAA6B,MAAM,QAAQ,MAAM,GAAG,OAAO,KAAG,KAmBpF,CAAC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AAmED,eAAO,MAAM,UAAU,QAA0B,GAAG,CAAC,MAAM,EAAE,SAAS,CAErE,CAAC;AAEF,eAAO,MAAM,aAAa,QAA6B,MAAM,EAE5D,CAAC;AAMF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,YAAY,EAAE,SAAkB,CAAC;AAc9C,eAAO,MAAM,YAAY,EAAE,KAA8C,CAAC;AAE1E,eAAO,MAAM,UAAU,SAA6B,MAAM,QAAQ,SAAS,KAAG,KAkB7E,CAAC"}
package/dist/loader.js CHANGED
@@ -16,8 +16,13 @@ const loadJsonThemesFromDir = function loadJsonThemesFromDir(dir, target) {
16
16
  const name = path.basename(file, ".json");
17
17
  try {
18
18
  const content = readFileSync(path.join(dir, file), "utf-8");
19
- // Deferred(lint-sweep): replace with schema-based validation of untrusted JSON
20
- // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- untrusted external JSON, validated in a later sweep
19
+ // SAFETY: the file is not validated here on purpose. Its only consumer is
20
+ // `resolveTheme`, which reads each key with a per-key fallback, and
21
+ // `buildTheme` catches every malformed value and returns the hardcoded
22
+ // theme, so a document that is not a ThemeJSON cannot escape this module.
23
+ // A strict decoder would also drop malformed files from `getThemeNames`,
24
+ // which is a behaviour change reserved for a separate decision.
25
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- tolerant consumer boundary; see the SAFETY note
21
26
  target.set(name, JSON.parse(content));
22
27
  }
23
28
  catch {
@@ -65,83 +70,33 @@ export const getThemeNames = function getThemeNames() {
65
70
  // ---------------------------------------------------------------------------
66
71
  export const DEFAULT_THEME_NAME = "tokyonight";
67
72
  export const DEFAULT_MODE = "dark";
68
- const hardcodedDefaultTheme = (() => {
69
- const colors = {
70
- accent: "#7dcfff",
71
- background: "#1a1b26",
72
- backgroundElement: "#222436",
73
- backgroundPanel: "#1e2030",
74
- border: "#565f89",
75
- borderActive: "#737aa2",
76
- borderSubtle: "#414868",
77
- cursorLine: "#222436",
78
- diffAdded: "#4fd6be",
79
- diffAddedBg: "#20303b",
80
- diffAddedLineNumberBg: "#1b2b34",
81
- diffContext: "#828bb8",
82
- diffContextBg: "#1e2030",
83
- diffHighlightAdded: "#b8db87",
84
- diffHighlightRemoved: "#e26a75",
85
- diffHunkHeader: "#828bb8",
86
- diffLineNumber: "#222436",
87
- diffRemoved: "#c53b53",
88
- diffRemovedBg: "#37222c",
89
- diffRemovedLineNumberBg: "#2d1f26",
90
- error: "#f7768e",
91
- info: "#7aa2f7",
92
- markdownBlockQuote: "#e0af68",
93
- markdownCode: "#9ece6a",
94
- markdownCodeBlock: "#c0caf5",
95
- markdownEmph: "#e0af68",
96
- markdownHeading: "#bb9af7",
97
- markdownHorizontalRule: "#565f89",
98
- markdownImage: "#7aa2f7",
99
- markdownImageText: "#7dcfff",
100
- markdownLink: "#7aa2f7",
101
- markdownLinkText: "#7dcfff",
102
- markdownListEnumeration: "#7dcfff",
103
- markdownListItem: "#7aa2f7",
104
- markdownStrong: "#ff966c",
105
- markdownText: "#c0caf5",
106
- primary: "#7aa2f7",
107
- secondary: "#bb9af7",
108
- selection: "#1e2030",
109
- success: "#9ece6a",
110
- syntaxComment: "#565f89",
111
- syntaxFunction: "#7aa2f7",
112
- syntaxKeyword: "#bb9af7",
113
- syntaxNumber: "#ff9e64",
114
- syntaxOperator: "#89ddff",
115
- syntaxPunctuation: "#a9b1d6",
116
- syntaxString: "#9ece6a",
117
- syntaxType: "#2ac3de",
118
- syntaxVariable: "#c0caf5",
119
- text: "#c0caf5",
120
- textMuted: "#565f89",
121
- warning: "#e0af68",
122
- };
123
- return { colors, mode: DEFAULT_MODE, name: DEFAULT_THEME_NAME, syntax: buildSyntaxStyle(colors) };
124
- })();
125
- export const defaultTheme = hardcodedDefaultTheme;
73
+ // SAFETY: this package owns the bundled theme document. resolveTheme validates
74
+ // every consumed color and fills every omitted key from FALLBACKS.
75
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- trusted package-owned JSON boundary
76
+ const bundledDefaultThemeJson = JSON.parse(readFileSync(new URL("../themes/tokyonight.json", import.meta.url), "utf-8"));
77
+ const buildBundledDefaultTheme = function buildBundledDefaultTheme(mode) {
78
+ const colors = resolveTheme(bundledDefaultThemeJson, mode);
79
+ return { colors, mode, name: DEFAULT_THEME_NAME, syntax: buildSyntaxStyle(colors) };
80
+ };
81
+ export const defaultTheme = buildBundledDefaultTheme(DEFAULT_MODE);
126
82
  export const buildTheme = function buildTheme(name, mode) {
127
83
  const themes = loadThemes();
128
84
  const json = themes.get(name);
129
85
  if (!json) {
130
- // Fall back to tokyonight, then first available, then hardcoded
86
+ // Fall back to tokyonight, then first available, then the bundled default.
131
87
  const fallbackJson = themes.get(DEFAULT_THEME_NAME) ?? themes.values().next().value;
132
88
  if (fallbackJson) {
133
89
  const resolved = resolveTheme(fallbackJson, mode);
134
90
  return { colors: resolved, mode, name, syntax: buildSyntaxStyle(resolved) };
135
91
  }
136
- // Absolute fallback — hardcoded Tokyo Night colors
137
- return hardcodedDefaultTheme;
92
+ return buildBundledDefaultTheme(mode);
138
93
  }
139
94
  try {
140
95
  const resolved = resolveTheme(json, mode);
141
96
  return { colors: resolved, mode, name, syntax: buildSyntaxStyle(resolved) };
142
97
  }
143
98
  catch {
144
- return hardcodedDefaultTheme;
99
+ return buildBundledDefaultTheme(mode);
145
100
  }
146
101
  };
147
102
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { ColorMode } from "@tooee/config";
1
2
  interface Variant {
2
3
  dark: string;
3
4
  light: string;
@@ -62,8 +63,61 @@ export interface ResolvedTheme {
62
63
  syntaxOperator: string;
63
64
  syntaxPunctuation: string;
64
65
  }
66
+ export declare const FALLBACKS: {
67
+ accent: string;
68
+ background: string;
69
+ backgroundElement: string;
70
+ backgroundPanel: string;
71
+ border: string;
72
+ borderActive: string;
73
+ borderSubtle: string;
74
+ cursorLine: string;
75
+ diffAdded: string;
76
+ diffAddedBg: string;
77
+ diffAddedLineNumberBg: string;
78
+ diffContext: string;
79
+ diffContextBg: string;
80
+ diffHighlightAdded: string;
81
+ diffHighlightRemoved: string;
82
+ diffHunkHeader: string;
83
+ diffLineNumber: string;
84
+ diffRemoved: string;
85
+ diffRemovedBg: string;
86
+ diffRemovedLineNumberBg: string;
87
+ error: string;
88
+ info: string;
89
+ markdownBlockQuote: string;
90
+ markdownCode: string;
91
+ markdownCodeBlock: string;
92
+ markdownEmph: string;
93
+ markdownHeading: string;
94
+ markdownHorizontalRule: string;
95
+ markdownImage: string;
96
+ markdownImageText: string;
97
+ markdownLink: string;
98
+ markdownLinkText: string;
99
+ markdownListEnumeration: string;
100
+ markdownListItem: string;
101
+ markdownStrong: string;
102
+ markdownText: string;
103
+ primary: string;
104
+ secondary: string;
105
+ selection: string;
106
+ success: string;
107
+ syntaxComment: string;
108
+ syntaxFunction: string;
109
+ syntaxKeyword: string;
110
+ syntaxNumber: string;
111
+ syntaxOperator: string;
112
+ syntaxPunctuation: string;
113
+ syntaxString: string;
114
+ syntaxType: string;
115
+ syntaxVariable: string;
116
+ text: string;
117
+ textMuted: string;
118
+ warning: string;
119
+ };
65
120
  export declare const RESOLVED_KEYS: (keyof ResolvedTheme)[];
66
- export declare const FALLBACKS: Record<string, string>;
67
- export declare const resolveTheme: (json: ThemeJSON, mode: "dark" | "light") => ResolvedTheme;
121
+ export declare const resolveTheme: (json: ThemeJSON, mode: ColorMode) => ResolvedTheme;
68
122
  export {};
69
123
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AACD,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAMD,MAAM,WAAW,aAAa;IAE5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,eAAO,MAAM,aAAa,EAAE,CAAC,MAAM,aAAa,CAAC,EAqDhD,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqD5C,CAAC;AAMF,eAAO,MAAM,YAAY,SACjB,SAAS,QACT,MAAM,GAAG,OAAO,KACrB,aAwCF,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AACD,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACnC;AAMD,MAAM,WAAW,aAAa;IAE5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDyB,CAAC;AAEhD,eAAO,MAAM,aAAa,EAGE,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;AAWpD,eAAO,MAAM,YAAY,SAA+B,SAAS,QAAQ,SAAS,KAAG,aAyCpF,CAAC"}
package/dist/types.js CHANGED
@@ -1,62 +1,4 @@
1
- // ---------------------------------------------------------------------------
2
- // Theme JSON format (OpenCode-compatible)
3
- // ---------------------------------------------------------------------------
4
- // All keys of ResolvedTheme for iteration
5
- export const RESOLVED_KEYS = [
6
- "primary",
7
- "secondary",
8
- "accent",
9
- "error",
10
- "warning",
11
- "success",
12
- "info",
13
- "text",
14
- "textMuted",
15
- "background",
16
- "backgroundPanel",
17
- "backgroundElement",
18
- "border",
19
- "borderActive",
20
- "borderSubtle",
21
- "cursorLine",
22
- "selection",
23
- "diffAdded",
24
- "diffRemoved",
25
- "diffContext",
26
- "diffHunkHeader",
27
- "diffHighlightAdded",
28
- "diffHighlightRemoved",
29
- "diffAddedBg",
30
- "diffRemovedBg",
31
- "diffContextBg",
32
- "diffLineNumber",
33
- "diffAddedLineNumberBg",
34
- "diffRemovedLineNumberBg",
35
- "markdownText",
36
- "markdownHeading",
37
- "markdownLink",
38
- "markdownLinkText",
39
- "markdownCode",
40
- "markdownBlockQuote",
41
- "markdownEmph",
42
- "markdownStrong",
43
- "markdownHorizontalRule",
44
- "markdownListItem",
45
- "markdownListEnumeration",
46
- "markdownImage",
47
- "markdownImageText",
48
- "markdownCodeBlock",
49
- "syntaxComment",
50
- "syntaxKeyword",
51
- "syntaxFunction",
52
- "syntaxVariable",
53
- "syntaxString",
54
- "syntaxNumber",
55
- "syntaxType",
56
- "syntaxOperator",
57
- "syntaxPunctuation",
58
- ];
59
- // Fallbacks used when a theme key is missing
1
+ // Fallbacks used when a theme key is missing: a complete theme in its own right.
60
2
  export const FALLBACKS = {
61
3
  accent: "#808080",
62
4
  background: "#1e1e1e",
@@ -111,36 +53,47 @@ export const FALLBACKS = {
111
53
  textMuted: "#808080",
112
54
  warning: "#808080",
113
55
  };
56
+ export const RESOLVED_KEYS =
57
+ // SAFETY: FALLBACKS satisfies a complete ResolvedTheme Record, so Object.keys contains only its keys.
58
+ // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- Object.keys does not preserve Record key types
59
+ Object.keys(FALLBACKS);
114
60
  // ---------------------------------------------------------------------------
115
61
  // Resolution
116
62
  // ---------------------------------------------------------------------------
63
+ /** A mode-specific colour pair is an object; a single colour is a string. */
64
+ const isVariant = function isVariant(value) {
65
+ return value instanceof Object;
66
+ };
117
67
  export const resolveTheme = function resolveTheme(json, mode) {
118
68
  const defs = json.defs ?? {};
119
69
  const resolveColor = function resolveColor(c, seen = new Set()) {
120
- if (typeof c === "string") {
121
- if (c === "transparent" || c === "none") {
122
- return "#00000000";
123
- }
124
- if (c.startsWith("#")) {
125
- return c;
126
- }
127
- if (seen.has(c)) {
128
- return "#808080";
129
- }
130
- if (defs[c] !== undefined && defs[c] !== null) {
131
- return resolveColor(defs[c], new Set(seen).add(c));
132
- }
133
- if (json.theme[c] !== undefined) {
134
- return resolveColor(json.theme[c], new Set(seen).add(c));
135
- }
70
+ if (isVariant(c)) {
71
+ return resolveColor(c[mode], seen);
72
+ }
73
+ if (c === "transparent" || c === "none") {
74
+ return "#00000000";
75
+ }
76
+ if (c.startsWith("#")) {
77
+ return c;
78
+ }
79
+ if (seen.has(c)) {
136
80
  return "#808080";
137
81
  }
138
- return resolveColor(c[mode], seen);
82
+ if (defs[c] !== undefined && defs[c] !== null) {
83
+ return resolveColor(defs[c], new Set(seen).add(c));
84
+ }
85
+ if (json.theme[c] !== undefined) {
86
+ return resolveColor(json.theme[c], new Set(seen).add(c));
87
+ }
88
+ return "#808080";
139
89
  };
140
- const result = {};
90
+ // Start from the complete fallback theme, then resolve every key the JSON defines.
91
+ const result = { ...FALLBACKS };
141
92
  for (const key of RESOLVED_KEYS) {
142
93
  const val = json.theme[key];
143
- result[key] = val === undefined ? (FALLBACKS[key] ?? "#808080") : resolveColor(val);
94
+ if (val !== undefined) {
95
+ result[key] = resolveColor(val);
96
+ }
144
97
  }
145
98
  // Dynamic fallbacks that reference other resolved keys
146
99
  if (json.theme.cursorLine === undefined) {
@@ -149,8 +102,6 @@ export const resolveTheme = function resolveTheme(json, mode) {
149
102
  if (json.theme.selection === undefined) {
150
103
  result.selection = result.backgroundPanel;
151
104
  }
152
- // Deferred(lint-sweep): replace with a typed exhaustive key map for compile-time completeness
153
- // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- RESOLVED_KEYS drives every required key and defaults missing values
154
105
  return result;
155
106
  };
156
107
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tooee/themes",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "Theme management with 34 bundled themes for Tooee",
5
5
  "keywords": [
6
6
  "cli",
@@ -40,9 +40,7 @@
40
40
  "typecheck": "tsc --noEmit"
41
41
  },
42
42
  "dependencies": {
43
- "@tooee/commands": "0.7.2",
44
- "@tooee/config": "0.7.2",
45
- "@tooee/fuzzy": "0.7.2"
43
+ "@tooee/config": "0.8.0"
46
44
  },
47
45
  "devDependencies": {
48
46
  "@opentui/core": "^0.5.1",
package/src/context.tsx CHANGED
@@ -2,6 +2,7 @@ import { createContext, useContext, useState, useCallback, useMemo } from "react
2
2
  import type { ReactNode } from "react";
3
3
  import type { SyntaxStyle } from "@opentui/core";
4
4
  import { writeGlobalConfig } from "@tooee/config";
5
+ import type { ColorMode } from "@tooee/config";
5
6
  import type { ResolvedTheme } from "./types.js";
6
7
  import {
7
8
  buildTheme,
@@ -20,7 +21,7 @@ interface ThemeContextValue {
20
21
  theme: ResolvedTheme;
21
22
  syntax: SyntaxStyle;
22
23
  name: string;
23
- mode: "dark" | "light";
24
+ mode: ColorMode;
24
25
  }
25
26
 
26
27
  const ThemeContext = createContext<ThemeContextValue>({
@@ -34,7 +35,7 @@ export interface ThemeProviderProps {
34
35
  /** Theme name (e.g. "tokyonight", "catppuccin", "dracula") */
35
36
  name?: string;
36
37
  /** Color mode */
37
- mode?: "dark" | "light";
38
+ mode?: ColorMode;
38
39
  /** Full Theme object (overrides name/mode if provided) */
39
40
  theme?: Theme;
40
41
  children: ReactNode;
@@ -82,7 +83,7 @@ const ThemeSwitcherContext = createContext<ThemeSwitcherContextValue | null>(nul
82
83
 
83
84
  export interface ThemeSwitcherProviderProps {
84
85
  initialTheme?: string;
85
- initialMode?: "dark" | "light";
86
+ initialMode?: ColorMode;
86
87
  children: ReactNode;
87
88
  }
88
89
 
@@ -93,7 +94,7 @@ export const ThemeSwitcherProvider = function ThemeSwitcherProvider({
93
94
  }: ThemeSwitcherProviderProps): ReactNode {
94
95
  const allThemes = useMemo(() => getThemeNames(), []);
95
96
  const [themeName, setThemeName] = useState(initialTheme ?? DEFAULT_THEME_NAME);
96
- const [mode, setMode] = useState<"dark" | "light">(initialMode ?? DEFAULT_MODE);
97
+ const [mode, setMode] = useState<ColorMode>(initialMode ?? DEFAULT_MODE);
97
98
  void setMode;
98
99
 
99
100
  const theme = useMemo(() => buildTheme(themeName, mode), [themeName, mode]);
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { resolveTheme } from "./types.js";
1
+ export { FALLBACKS, RESOLVED_KEYS, resolveTheme } from "./types.js";
2
2
  export type { ThemeJSON, ResolvedTheme } from "./types.js";
3
3
 
4
4
  export { buildSyntaxStyle } from "./syntax-rules.js";
@@ -8,8 +8,3 @@ export type { Theme } from "./loader.js";
8
8
 
9
9
  export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher } from "./context.js";
10
10
  export type { ThemeProviderProps, ThemeSwitcherProviderProps } from "./context.js";
11
-
12
- export { ThemePicker } from "./theme-picker.js";
13
- export type { ThemePickerEntry } from "./theme-picker.js";
14
-
15
- export { CloseButton } from "./close-button.js";