@maxhealth.tech/prefab 0.2.13 → 0.2.15
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/app.d.ts +1 -1
- package/dist/app.js +1 -1
- package/dist/renderer/actions.js +1 -1
- package/dist/renderer/actions.js.map +1 -1
- package/dist/renderer/bridge.d.ts.map +1 -1
- package/dist/renderer/bridge.js +15 -7
- package/dist/renderer/bridge.js.map +1 -1
- package/dist/renderer/components/charts.js +2 -2
- package/dist/renderer/components/charts.js.map +1 -1
- package/dist/renderer/components/data.js +3 -0
- package/dist/renderer/components/data.js.map +1 -1
- package/dist/renderer/index.d.ts +5 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +15 -1
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/theme.d.ts +20 -1
- package/dist/renderer/theme.d.ts.map +1 -1
- package/dist/renderer/theme.js +122 -1
- package/dist/renderer/theme.js.map +1 -1
- package/dist/renderer.auto.min.js +6 -6
- package/dist/renderer.min.js +6 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAA;IACpE,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAiBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAuBvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5C,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAc1B;AA0CD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,IAAI,CAsFZ"}
|
package/dist/renderer/theme.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Theme application — CSS custom properties from theme field
|
|
2
|
+
* Theme application — CSS custom properties from theme field,
|
|
3
|
+
* plus a built-in theme toggle button with two-way sync.
|
|
3
4
|
*/
|
|
4
5
|
/**
|
|
5
6
|
* Apply theme CSS custom properties to the root element.
|
|
@@ -66,4 +67,124 @@ function matchCombo(combo, e) {
|
|
|
66
67
|
return false;
|
|
67
68
|
return e.key.toLowerCase() === key;
|
|
68
69
|
}
|
|
70
|
+
// ── Theme Toggle ─────────────────────────────────────────────────────────────
|
|
71
|
+
const SUN_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"/></svg>`;
|
|
72
|
+
const MOON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"/></svg>`;
|
|
73
|
+
const POSITION_MAP = {
|
|
74
|
+
'top-right': 'top: 8px; right: 8px;',
|
|
75
|
+
'top-left': 'top: 8px; left: 8px;',
|
|
76
|
+
'bottom-right': 'bottom: 8px; right: 8px;',
|
|
77
|
+
'bottom-left': 'bottom: 8px; left: 8px;',
|
|
78
|
+
};
|
|
79
|
+
/** Detect the current effective theme from an element's data-theme attribute or OS preference. */
|
|
80
|
+
function detectTheme(el, storageKey) {
|
|
81
|
+
try {
|
|
82
|
+
const stored = localStorage.getItem(storageKey);
|
|
83
|
+
if (stored === 'light' || stored === 'dark')
|
|
84
|
+
return stored;
|
|
85
|
+
}
|
|
86
|
+
catch { /* storage unavailable */ }
|
|
87
|
+
const attr = el.getAttribute('data-theme') ?? document.documentElement.getAttribute('data-theme');
|
|
88
|
+
if (attr === 'light' || attr === 'dark')
|
|
89
|
+
return attr;
|
|
90
|
+
if (typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: light)').matches) {
|
|
91
|
+
return 'light';
|
|
92
|
+
}
|
|
93
|
+
return 'dark';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a theme toggle button inside a prefab root element.
|
|
97
|
+
*
|
|
98
|
+
* - Persists to localStorage
|
|
99
|
+
* - Syncs two-way with `document.documentElement[data-theme]` via MutationObserver
|
|
100
|
+
* - Uses sun/moon SVG icons (no external deps)
|
|
101
|
+
*
|
|
102
|
+
* @returns A cleanup function that removes the button and observer.
|
|
103
|
+
*/
|
|
104
|
+
export function createThemeToggle(root, options) {
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
106
|
+
if (typeof document === 'undefined')
|
|
107
|
+
return () => { };
|
|
108
|
+
const position = options?.position ?? 'top-right';
|
|
109
|
+
const storageKey = options?.storageKey ?? 'prefab-theme';
|
|
110
|
+
const syncDocument = options?.syncDocument ?? true;
|
|
111
|
+
// Ensure root has relative/absolute/fixed positioning for the toggle
|
|
112
|
+
const rootPos = getComputedStyle(root).position;
|
|
113
|
+
if (rootPos === 'static' || rootPos === '') {
|
|
114
|
+
root.style.position = 'relative';
|
|
115
|
+
}
|
|
116
|
+
const btn = document.createElement('button');
|
|
117
|
+
btn.className = 'pf-theme-toggle';
|
|
118
|
+
btn.setAttribute('aria-label', 'Toggle theme');
|
|
119
|
+
btn.setAttribute('title', 'Toggle light/dark');
|
|
120
|
+
Object.assign(btn.style, {
|
|
121
|
+
position: 'absolute',
|
|
122
|
+
zIndex: '100',
|
|
123
|
+
width: '28px',
|
|
124
|
+
height: '28px',
|
|
125
|
+
border: '1px solid var(--border, #e5e7eb)',
|
|
126
|
+
borderRadius: '6px',
|
|
127
|
+
background: 'var(--card, rgba(255,255,255,0.8))',
|
|
128
|
+
color: 'var(--foreground, #333)',
|
|
129
|
+
cursor: 'pointer',
|
|
130
|
+
display: 'flex',
|
|
131
|
+
alignItems: 'center',
|
|
132
|
+
justifyContent: 'center',
|
|
133
|
+
padding: '0',
|
|
134
|
+
opacity: '0.7',
|
|
135
|
+
transition: 'opacity 0.15s, border-color 0.15s',
|
|
136
|
+
});
|
|
137
|
+
// Apply position
|
|
138
|
+
const posCSS = POSITION_MAP[position] ?? POSITION_MAP['top-right'];
|
|
139
|
+
for (const rule of posCSS.split(';')) {
|
|
140
|
+
const [prop, val] = rule.split(':').map(s => s.trim());
|
|
141
|
+
if (prop && val)
|
|
142
|
+
btn.style.setProperty(prop, val);
|
|
143
|
+
}
|
|
144
|
+
btn.addEventListener('mouseenter', () => { btn.style.opacity = '1'; });
|
|
145
|
+
btn.addEventListener('mouseleave', () => { btn.style.opacity = '0.7'; });
|
|
146
|
+
function applyThemeState(theme) {
|
|
147
|
+
root.setAttribute('data-theme', theme);
|
|
148
|
+
if (syncDocument)
|
|
149
|
+
document.documentElement.setAttribute('data-theme', theme);
|
|
150
|
+
btn.innerHTML = theme === 'dark' ? MOON_SVG : SUN_SVG;
|
|
151
|
+
try {
|
|
152
|
+
localStorage.setItem(storageKey, theme);
|
|
153
|
+
}
|
|
154
|
+
catch { /* noop */ }
|
|
155
|
+
}
|
|
156
|
+
// Initial state
|
|
157
|
+
const initial = detectTheme(root, storageKey);
|
|
158
|
+
applyThemeState(initial);
|
|
159
|
+
// Click handler
|
|
160
|
+
btn.addEventListener('click', () => {
|
|
161
|
+
const current = root.getAttribute('data-theme') ?? 'dark';
|
|
162
|
+
applyThemeState(current === 'dark' ? 'light' : 'dark');
|
|
163
|
+
});
|
|
164
|
+
root.appendChild(btn);
|
|
165
|
+
// Two-way sync: watch document.documentElement for external theme changes
|
|
166
|
+
let observer;
|
|
167
|
+
if (syncDocument) {
|
|
168
|
+
observer = new MutationObserver((mutations) => {
|
|
169
|
+
for (const m of mutations) {
|
|
170
|
+
if (m.type === 'attributes' && m.attributeName === 'data-theme') {
|
|
171
|
+
const docTheme = document.documentElement.getAttribute('data-theme');
|
|
172
|
+
if ((docTheme === 'light' || docTheme === 'dark') && docTheme !== root.getAttribute('data-theme')) {
|
|
173
|
+
root.setAttribute('data-theme', docTheme);
|
|
174
|
+
btn.innerHTML = docTheme === 'dark' ? MOON_SVG : SUN_SVG;
|
|
175
|
+
try {
|
|
176
|
+
localStorage.setItem(storageKey, docTheme);
|
|
177
|
+
}
|
|
178
|
+
catch { /* noop */ }
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] });
|
|
184
|
+
}
|
|
185
|
+
return () => {
|
|
186
|
+
observer?.disconnect();
|
|
187
|
+
btn.remove();
|
|
188
|
+
};
|
|
189
|
+
}
|
|
69
190
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/renderer/theme.ts"],"names":[],"mappings":"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"}
|