@tooee/themes 0.1.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.
Files changed (51) hide show
  1. package/README.md +5 -0
  2. package/dist/ThemePicker.d.ts +14 -0
  3. package/dist/ThemePicker.d.ts.map +1 -0
  4. package/dist/ThemePicker.js +96 -0
  5. package/dist/ThemePicker.js.map +1 -0
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/theme.d.ts +111 -0
  11. package/dist/theme.d.ts.map +1 -0
  12. package/dist/theme.js +560 -0
  13. package/dist/theme.js.map +1 -0
  14. package/package.json +43 -0
  15. package/src/ThemePicker.tsx +163 -0
  16. package/src/index.ts +21 -0
  17. package/src/theme.tsx +727 -0
  18. package/src/themes/aura.json +69 -0
  19. package/src/themes/ayu.json +80 -0
  20. package/src/themes/catppuccin-frappe.json +233 -0
  21. package/src/themes/catppuccin-macchiato.json +233 -0
  22. package/src/themes/catppuccin.json +112 -0
  23. package/src/themes/cobalt2.json +228 -0
  24. package/src/themes/cursor.json +249 -0
  25. package/src/themes/dracula.json +219 -0
  26. package/src/themes/everforest.json +241 -0
  27. package/src/themes/flexoki.json +237 -0
  28. package/src/themes/github-light.json +56 -0
  29. package/src/themes/github.json +233 -0
  30. package/src/themes/gruvbox.json +95 -0
  31. package/src/themes/kanagawa.json +77 -0
  32. package/src/themes/lucent-orng.json +227 -0
  33. package/src/themes/material.json +235 -0
  34. package/src/themes/matrix.json +77 -0
  35. package/src/themes/mercury.json +252 -0
  36. package/src/themes/monokai.json +221 -0
  37. package/src/themes/nightowl.json +221 -0
  38. package/src/themes/nord.json +223 -0
  39. package/src/themes/one-dark.json +84 -0
  40. package/src/themes/opencode-light.json +62 -0
  41. package/src/themes/opencode.json +245 -0
  42. package/src/themes/orng.json +245 -0
  43. package/src/themes/osaka-jade.json +93 -0
  44. package/src/themes/palenight.json +222 -0
  45. package/src/themes/rosepine.json +234 -0
  46. package/src/themes/solarized.json +223 -0
  47. package/src/themes/synthwave84.json +226 -0
  48. package/src/themes/tokyonight.json +243 -0
  49. package/src/themes/vercel.json +245 -0
  50. package/src/themes/vesper.json +218 -0
  51. package/src/themes/zenburn.json +223 -0
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @tooee/themes
2
+
3
+ Theme management with 34 bundled themes for Tooee.
4
+
5
+ Part of the [Tooee](https://github.com/gingerhendrix/tooee) monorepo. See the main repo for documentation.
@@ -0,0 +1,14 @@
1
+ export interface ThemePickerEntry {
2
+ id: string;
3
+ title: string;
4
+ }
5
+ interface ThemePickerProps {
6
+ entries: ThemePickerEntry[];
7
+ currentTheme: string;
8
+ onSelect: (name: string) => void;
9
+ onClose: () => void;
10
+ onNavigate: (name: string) => void;
11
+ }
12
+ export declare function ThemePicker({ entries, currentTheme, onSelect, onClose, onNavigate, }: ThemePickerProps): import("react").ReactNode;
13
+ export {};
14
+ //# sourceMappingURL=ThemePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemePicker.d.ts","sourceRoot":"","sources":["../src/ThemePicker.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAwBD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,UAAU,GACX,EAAE,gBAAgB,6BAqHlB"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
+ import { useState, useMemo, useCallback } from "react";
3
+ import { useKeyboard } from "@opentui/react";
4
+ import { useTheme } from "./theme.js";
5
+ function fuzzyMatch(query, text) {
6
+ const lowerQuery = query.toLowerCase();
7
+ const lowerText = text.toLowerCase();
8
+ let qi = 0;
9
+ let score = 0;
10
+ let lastMatchIndex = -2;
11
+ for (let ti = 0; ti < lowerText.length && qi < lowerQuery.length; ti++) {
12
+ if (lowerText[ti] === lowerQuery[qi]) {
13
+ if (ti === 0)
14
+ score += 3;
15
+ else if (" -./".includes(lowerText[ti - 1]))
16
+ score += 2;
17
+ else if (ti === lastMatchIndex + 1)
18
+ score += 1;
19
+ lastMatchIndex = ti;
20
+ qi++;
21
+ }
22
+ }
23
+ return qi === lowerQuery.length ? score : null;
24
+ }
25
+ export function ThemePicker({ entries, currentTheme, onSelect, onClose, onNavigate, }) {
26
+ const { theme } = useTheme();
27
+ const [filter, setFilter] = useState("");
28
+ const [activeIndex, setActiveIndex] = useState(() => {
29
+ const idx = entries.findIndex((e) => e.id === currentTheme);
30
+ return idx >= 0 ? idx : 0;
31
+ });
32
+ const filtered = useMemo(() => {
33
+ if (!filter)
34
+ return entries;
35
+ const results = [];
36
+ for (const entry of entries) {
37
+ const score = fuzzyMatch(filter, entry.title);
38
+ if (score !== null)
39
+ results.push({ entry, score });
40
+ }
41
+ results.sort((a, b) => b.score - a.score);
42
+ return results.map((r) => r.entry);
43
+ }, [entries, filter]);
44
+ const handleSelect = useCallback(() => {
45
+ const item = filtered[activeIndex];
46
+ if (item) {
47
+ onSelect(item.id);
48
+ }
49
+ }, [filtered, activeIndex, onSelect]);
50
+ const navigateTo = useCallback((index) => {
51
+ setActiveIndex(index);
52
+ const item = filtered[index];
53
+ if (item) {
54
+ onNavigate(item.id);
55
+ }
56
+ }, [filtered, onNavigate]);
57
+ useKeyboard((key) => {
58
+ if (key.name === "escape") {
59
+ key.preventDefault();
60
+ onClose();
61
+ }
62
+ else if (key.name === "return") {
63
+ key.preventDefault();
64
+ handleSelect();
65
+ }
66
+ else if (key.name === "up") {
67
+ key.preventDefault();
68
+ navigateTo(Math.max(0, activeIndex - 1));
69
+ }
70
+ else if (key.name === "down") {
71
+ key.preventDefault();
72
+ navigateTo(Math.min(filtered.length - 1, activeIndex + 1));
73
+ }
74
+ });
75
+ return (_jsxs("box", { position: "absolute", left: "20%", right: "20%", top: 2, maxHeight: "60%", flexDirection: "column", backgroundColor: theme.backgroundPanel, border: true, borderColor: theme.border, children: [_jsxs("box", { flexDirection: "row", paddingLeft: 1, paddingRight: 1, height: 1, children: [_jsx("text", { content: "\uD83C\uDFA8 ", fg: theme.accent }), _jsx("input", { focused: true, placeholder: "Filter themes...", onInput: (value) => {
76
+ setFilter(value);
77
+ setActiveIndex(0);
78
+ // Preview first match
79
+ if (!value) {
80
+ if (entries.length > 0)
81
+ onNavigate(entries[0].id);
82
+ }
83
+ else {
84
+ const results = [];
85
+ for (const entry of entries) {
86
+ const score = fuzzyMatch(value, entry.title);
87
+ if (score !== null)
88
+ results.push({ entry, score });
89
+ }
90
+ results.sort((a, b) => b.score - a.score);
91
+ if (results.length > 0)
92
+ onNavigate(results[0].entry.id);
93
+ }
94
+ }, backgroundColor: "transparent", focusedBackgroundColor: "transparent", textColor: theme.text, placeholderColor: theme.textMuted, cursorColor: theme.accent, style: { flexGrow: 1 } }), _jsx("text", { content: ` ${filtered.length}`, fg: theme.textMuted })] }), _jsx("box", { height: 1, width: "100%", backgroundColor: theme.border }), _jsx("scrollbox", { focused: false, style: { flexGrow: 1 }, children: filtered.map((entry, i) => (_jsx("box", { flexDirection: "row", paddingLeft: 1, paddingRight: 1, height: 1, backgroundColor: i === activeIndex ? theme.backgroundElement : undefined, children: _jsx("text", { content: entry.title, fg: theme.text, style: { flexGrow: 1 } }) }, entry.id))) })] }));
95
+ }
96
+ //# sourceMappingURL=ThemePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemePicker.js","sourceRoot":"","sources":["../src/ThemePicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher, defaultTheme, resolveTheme, buildSyntaxStyle, loadThemes, getThemeNames, } from "./theme.js";
2
+ export type { Theme, ThemeJSON, ResolvedTheme, ThemeProviderProps, ThemeSwitcherProviderProps, } from "./theme.js";
3
+ export { ThemePicker } from "./ThemePicker.jsx";
4
+ export type { ThemePickerEntry } from "./ThemePicker.jsx";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,KAAK,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { ThemeProvider, ThemeSwitcherProvider, useTheme, useThemeSwitcher, defaultTheme, resolveTheme, buildSyntaxStyle, loadThemes, getThemeNames, } from "./theme.js";
2
+ export { ThemePicker } from "./ThemePicker.jsx";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAA;AASnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,111 @@
1
+ import { type ReactNode } from "react";
2
+ import { SyntaxStyle } from "@opentui/core";
3
+ type HexColor = `#${string}`;
4
+ type RefName = string;
5
+ type Variant = {
6
+ dark: HexColor | RefName;
7
+ light: HexColor | RefName;
8
+ };
9
+ type ColorValue = HexColor | RefName | Variant;
10
+ export interface ThemeJSON {
11
+ $schema?: string;
12
+ defs?: Record<string, HexColor | RefName>;
13
+ theme: Record<string, ColorValue>;
14
+ }
15
+ export interface ResolvedTheme {
16
+ primary: string;
17
+ secondary: string;
18
+ accent: string;
19
+ error: string;
20
+ warning: string;
21
+ success: string;
22
+ info: string;
23
+ text: string;
24
+ textMuted: string;
25
+ background: string;
26
+ backgroundPanel: string;
27
+ backgroundElement: string;
28
+ border: string;
29
+ borderActive: string;
30
+ borderSubtle: string;
31
+ diffAdded: string;
32
+ diffRemoved: string;
33
+ diffContext: string;
34
+ diffHunkHeader: string;
35
+ diffHighlightAdded: string;
36
+ diffHighlightRemoved: string;
37
+ diffAddedBg: string;
38
+ diffRemovedBg: string;
39
+ diffContextBg: string;
40
+ diffLineNumber: string;
41
+ diffAddedLineNumberBg: string;
42
+ diffRemovedLineNumberBg: string;
43
+ markdownText: string;
44
+ markdownHeading: string;
45
+ markdownLink: string;
46
+ markdownLinkText: string;
47
+ markdownCode: string;
48
+ markdownBlockQuote: string;
49
+ markdownEmph: string;
50
+ markdownStrong: string;
51
+ markdownHorizontalRule: string;
52
+ markdownListItem: string;
53
+ markdownListEnumeration: string;
54
+ markdownImage: string;
55
+ markdownImageText: string;
56
+ markdownCodeBlock: string;
57
+ cursorLine: string;
58
+ selection: string;
59
+ syntaxComment: string;
60
+ syntaxKeyword: string;
61
+ syntaxFunction: string;
62
+ syntaxVariable: string;
63
+ syntaxString: string;
64
+ syntaxNumber: string;
65
+ syntaxType: string;
66
+ syntaxOperator: string;
67
+ syntaxPunctuation: string;
68
+ }
69
+ export declare function resolveTheme(json: ThemeJSON, mode: "dark" | "light"): ResolvedTheme;
70
+ export declare function buildSyntaxStyle(resolved: ResolvedTheme): SyntaxStyle;
71
+ export declare function loadThemes(): Map<string, ThemeJSON>;
72
+ export declare function getThemeNames(): string[];
73
+ export interface Theme {
74
+ name: string;
75
+ mode: "dark" | "light";
76
+ colors: ResolvedTheme;
77
+ syntax: SyntaxStyle;
78
+ }
79
+ export declare const defaultTheme: Theme;
80
+ interface ThemeContextValue {
81
+ theme: ResolvedTheme;
82
+ syntax: SyntaxStyle;
83
+ name: string;
84
+ mode: "dark" | "light";
85
+ }
86
+ export interface ThemeProviderProps {
87
+ /** Theme name (e.g. "tokyonight", "catppuccin", "dracula") */
88
+ name?: string;
89
+ /** Color mode */
90
+ mode?: "dark" | "light";
91
+ /** Full Theme object (overrides name/mode if provided) */
92
+ theme?: Theme;
93
+ children: ReactNode;
94
+ }
95
+ export declare function ThemeProvider({ name, mode, theme: themeProp, children }: ThemeProviderProps): ReactNode;
96
+ export declare function useTheme(): ThemeContextValue;
97
+ interface ThemeSwitcherContextValue extends ThemeContextValue {
98
+ nextTheme: () => void;
99
+ prevTheme: () => void;
100
+ setTheme: (name: string) => void;
101
+ allThemes: string[];
102
+ }
103
+ export interface ThemeSwitcherProviderProps {
104
+ initialTheme?: string;
105
+ initialMode?: "dark" | "light";
106
+ children: ReactNode;
107
+ }
108
+ export declare function ThemeSwitcherProvider({ initialTheme, initialMode, children, }: ThemeSwitcherProviderProps): ReactNode;
109
+ export declare function useThemeSwitcher(): ThemeSwitcherContextValue;
110
+ export {};
111
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"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"}