@berenjena/react-dev-panel 2.4.2 → 2.5.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 +43 -1
- package/dist/assets/index.css +1 -1
- package/dist/assets/index10.css +1 -1
- package/dist/assets/index11.css +1 -1
- package/dist/assets/index12.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index14.css +1 -1
- package/dist/assets/index15.css +1 -1
- package/dist/assets/index2.css +1 -1
- package/dist/assets/index3.css +1 -1
- package/dist/assets/index4.css +1 -1
- package/dist/assets/index5.css +1 -1
- package/dist/assets/index6.css +1 -1
- package/dist/assets/index7.css +1 -1
- package/dist/assets/index8.css +1 -1
- package/dist/assets/index9.css +1 -1
- package/dist/components/ControlErrorBoundary/index.d.ts +24 -0
- package/dist/components/ControlErrorBoundary/index.js +17 -0
- package/dist/components/ControlRenderer/controls/BooleanControl/index.js +10 -9
- package/dist/components/ControlRenderer/controls/ButtonControl/index.js +4 -3
- package/dist/components/ControlRenderer/controls/ButtonGroupControl/index.js +6 -5
- package/dist/components/ControlRenderer/controls/ColorControl/index.js +2 -1
- package/dist/components/ControlRenderer/controls/DateControl/index.js +8 -7
- package/dist/components/ControlRenderer/controls/DragAndDropControl/index.js +15 -14
- package/dist/components/ControlRenderer/controls/LocalStorageControl/index.js +111 -110
- package/dist/components/ControlRenderer/controls/MultiSelectControl/index.d.ts +2 -0
- package/dist/components/ControlRenderer/controls/MultiSelectControl/index.js +8 -5
- package/dist/components/ControlRenderer/controls/MultiSelectControl/types.d.ts +2 -0
- package/dist/components/ControlRenderer/controls/NumberControl/index.js +10 -9
- package/dist/components/ControlRenderer/controls/RangeControl/index.js +6 -5
- package/dist/components/ControlRenderer/controls/SelectControl/index.js +5 -4
- package/dist/components/ControlRenderer/controls/SeparatorControl/index.js +2 -1
- package/dist/components/ControlRenderer/controls/TextControl/index.js +7 -6
- package/dist/components/ControlRenderer/controls/index.js +1 -0
- package/dist/components/ControlRenderer/index.js +28 -26
- package/dist/components/DevPanel/index.js +12 -11
- package/dist/components/DevPanel/types.d.ts +17 -0
- package/dist/components/DevPanelPortal/index.js +5 -4
- package/dist/components/EmptyContent/index.js +2 -1
- package/dist/components/Icon/index.js +11 -10
- package/dist/components/Input/index.js +2 -1
- package/dist/components/Section/index.js +2 -1
- package/dist/components/Select/index.js +11 -10
- package/dist/components/Textarea/index.js +5 -4
- package/dist/components/index.js +3 -2
- package/dist/hooks/useDebounceCallback/index.js +1 -0
- package/dist/hooks/useDevPanel/consoleApi.d.ts +37 -0
- package/dist/hooks/useDevPanel/consoleApi.js +16 -0
- package/dist/hooks/useDevPanel/index.d.ts +5 -1
- package/dist/hooks/useDevPanel/index.js +50 -41
- package/dist/hooks/useDevPanel/mountDevPanelPortal.d.ts +18 -0
- package/dist/hooks/useDevPanel/mountDevPanelPortal.js +20 -0
- package/dist/hooks/useDragAndDrop/index.js +1 -0
- package/dist/hooks/useHotKey/index.js +4 -3
- package/dist/hooks/useHotkeys/index.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -3
- package/dist/managers/DevPanelManager.js +1 -0
- package/dist/store/BaseStoreService.d.ts +2 -7
- package/dist/store/BaseStoreService.js +14 -7
- package/dist/store/ControlPersistenceService.d.ts +2 -0
- package/dist/store/ControlPersistenceService.js +34 -26
- package/dist/store/SectionsStore.js +3 -2
- package/dist/store/UIStore.d.ts +14 -0
- package/dist/store/UIStore.js +37 -22
- package/dist/utils/className/className.js +6 -5
- package/dist/utils/className/index.js +3 -2
- package/dist/utils/copyToClipboard/copyToClipboard.js +1 -0
- package/dist/utils/copyToClipboard/index.js +3 -2
- package/dist/utils/createHotkey/createHotkey.js +4 -3
- package/dist/utils/createHotkey/index.js +3 -2
- package/dist/utils/debounce/debounce.js +4 -3
- package/dist/utils/debounce/index.js +3 -2
- package/dist/utils/deepEqual/deepEqual.d.ts +19 -0
- package/dist/utils/deepEqual/deepEqual.js +22 -0
- package/dist/utils/formatHotkey/formatHotkey.js +1 -0
- package/dist/utils/formatHotkey/index.js +1 -0
- package/dist/utils/getConstrainedPosition/getConstrainedPosition.js +6 -5
- package/dist/utils/getConstrainedPosition/index.js +3 -2
- package/dist/utils/getCurrentElementPosition/getCurrentElementPosition.js +1 -0
- package/dist/utils/getCurrentElementPosition/index.js +3 -2
- package/dist/utils/getPositionAdjustment/getPositionAdjustment.js +6 -5
- package/dist/utils/getPositionAdjustment/index.js +3 -2
- package/dist/utils/getStringPreview/getStringPreview.js +3 -2
- package/dist/utils/getStringPreview/index.js +1 -0
- package/dist/utils/hasControlChanged/hasControlChanged.js +7 -5
- package/dist/utils/hasControlChanged/index.js +3 -2
- package/dist/utils/isMacOS/index.js +3 -2
- package/dist/utils/isMacOS/isMacOS.js +3 -2
- package/dist/utils/isValidPersistedValue/isValidPersistedValue.d.ts +13 -0
- package/dist/utils/isValidPersistedValue/isValidPersistedValue.js +22 -0
- package/dist/utils/prettifyJson/index.js +3 -2
- package/dist/utils/prettifyJson/prettifyJson.js +5 -4
- package/package.json +7 -3
- package/dist/assets/index16.css +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function u(e, t) {
|
|
3
|
+
if (Object.is(e, t)) return !0;
|
|
4
|
+
if (typeof e != "object" || e === null || typeof t != "object" || t === null)
|
|
5
|
+
return !1;
|
|
6
|
+
const s = Array.isArray(e), f = Array.isArray(t);
|
|
7
|
+
if (s !== f) return !1;
|
|
8
|
+
if (s && f) {
|
|
9
|
+
if (e.length !== t.length) return !1;
|
|
10
|
+
for (let r = 0; r < e.length; r++)
|
|
11
|
+
if (!u(e[r], t[r])) return !1;
|
|
12
|
+
return !0;
|
|
13
|
+
}
|
|
14
|
+
const l = e, n = t, o = Object.keys(l), c = Object.keys(n);
|
|
15
|
+
if (o.length !== c.length) return !1;
|
|
16
|
+
for (const r of o)
|
|
17
|
+
if (!Object.prototype.hasOwnProperty.call(n, r) || !u(l[r], n[r])) return !1;
|
|
18
|
+
return !0;
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
u as deepEqual
|
|
22
|
+
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
function s(t, i) {
|
|
3
|
+
const n = i.getBoundingClientRect(), e = window.innerWidth, o = window.innerHeight, c = 0, h = 0, a = e - n.width, r = o - n.height;
|
|
3
4
|
return {
|
|
4
|
-
x: Math.max(
|
|
5
|
-
y: Math.max(
|
|
5
|
+
x: Math.max(c, Math.min(a, t.x)),
|
|
6
|
+
y: Math.max(h, Math.min(r, t.y))
|
|
6
7
|
};
|
|
7
8
|
}
|
|
8
9
|
export {
|
|
9
|
-
|
|
10
|
+
s as getConstrainedPosition
|
|
10
11
|
};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { getConstrainedPosition as e } from "../getConstrainedPosition/getConstrainedPosition.js";
|
|
2
3
|
import { getCurrentElementPosition as s } from "../getCurrentElementPosition/getCurrentElementPosition.js";
|
|
3
|
-
function
|
|
4
|
-
const t = s(
|
|
4
|
+
function u(o) {
|
|
5
|
+
const t = s(o), n = e(t, o), i = n.x !== t.x || n.y !== t.y;
|
|
5
6
|
return {
|
|
6
7
|
currentPosition: t,
|
|
7
|
-
constrainedPosition:
|
|
8
|
+
constrainedPosition: n,
|
|
8
9
|
needsAdjustment: i
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
12
|
export {
|
|
12
|
-
|
|
13
|
+
u as getPositionAdjustment
|
|
13
14
|
};
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import { deepEqual as l } from "../deepEqual/deepEqual.js";
|
|
3
|
+
function p(n, r) {
|
|
2
4
|
if (!r) return !0;
|
|
3
|
-
const i = Object.keys(n),
|
|
4
|
-
if (i.length !==
|
|
5
|
+
const i = Object.keys(n), a = Object.keys(r);
|
|
6
|
+
if (i.length !== a.length) return !0;
|
|
5
7
|
for (const u of i) {
|
|
6
8
|
const t = n[u], e = r[u];
|
|
7
|
-
if (!e || t.type !== e.type || t.label !== e.label || t.disabled !== e.disabled || "value" in t && "value" in e && t.value !== e.value || t.type === "number" && e.type === "number" && (t.min !== e.min || t.max !== e.max || t.step !== e.step) || t.type === "range" && e.type === "range" && (t.min !== e.min || t.max !== e.max || t.step !== e.step) || t.type === "date" && e.type === "date" && (t.min !== e.min || t.max !== e.max) || t.type === "select" && e.type === "select" &&
|
|
9
|
+
if (!e || t.type !== e.type || t.label !== e.label || t.disabled !== e.disabled || "value" in t && "value" in e && t.value !== e.value || t.type === "number" && e.type === "number" && (t.min !== e.min || t.max !== e.max || t.step !== e.step) || t.type === "range" && e.type === "range" && (t.min !== e.min || t.max !== e.max || t.step !== e.step) || t.type === "date" && e.type === "date" && (t.min !== e.min || t.max !== e.max) || t.type === "select" && e.type === "select" && !l(t.options, e.options) || t.type === "text" && e.type === "text" && t.placeholder !== e.placeholder)
|
|
8
10
|
return !0;
|
|
9
11
|
}
|
|
10
12
|
return !1;
|
|
11
13
|
}
|
|
12
14
|
export {
|
|
13
|
-
|
|
15
|
+
p as hasControlsChanged
|
|
14
16
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
function a() {
|
|
2
3
|
return typeof navigator < "u" && "userAgentData" in navigator ? navigator.userAgentData?.platform === "macOS" : typeof navigator < "u" && navigator.userAgent ? /Mac|iPhone|iPad|iPod/i.test(navigator.userAgent) : typeof navigator < "u" && navigator.platform?.toLowerCase().includes("mac") || !1;
|
|
3
4
|
}
|
|
4
5
|
export {
|
|
5
|
-
|
|
6
|
+
a as isMacOS
|
|
6
7
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Control, ControlsNames } from '../../components/ControlRenderer/controls/types';
|
|
2
|
+
/**
|
|
3
|
+
* Validates that a value restored from localStorage matches the runtime type
|
|
4
|
+
* expected by a given control before it is fed back into the consumer's
|
|
5
|
+
* `onChange`. Persisted data can be corrupt, stale (control type changed
|
|
6
|
+
* between releases), or tampered with (same-origin/XSS, another tab), so an
|
|
7
|
+
* unchecked value could inject the wrong type into the consumer's state.
|
|
8
|
+
*
|
|
9
|
+
* @param control - The control the value would be applied to
|
|
10
|
+
* @param value - The raw value read from persistence (`unknown`)
|
|
11
|
+
* @returns `true` if the value is safe to apply for this control type
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidPersistedValue(control: Control<ControlsNames>, value: unknown): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
function s(t, e) {
|
|
3
|
+
switch (t.type) {
|
|
4
|
+
case "boolean":
|
|
5
|
+
return typeof e == "boolean";
|
|
6
|
+
case "number":
|
|
7
|
+
case "range":
|
|
8
|
+
return typeof e == "number" && Number.isFinite(e);
|
|
9
|
+
case "text":
|
|
10
|
+
case "select":
|
|
11
|
+
case "color":
|
|
12
|
+
case "date":
|
|
13
|
+
return typeof e == "string";
|
|
14
|
+
case "multiselect":
|
|
15
|
+
return Array.isArray(e) && e.every((r) => typeof r == "string");
|
|
16
|
+
default:
|
|
17
|
+
return !1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
s as isValidPersistedValue
|
|
22
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"private": false,
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"name": "@berenjena/react-dev-panel",
|
|
6
6
|
"description": "A React development panel with various tools and utilities.",
|
|
@@ -23,8 +23,12 @@
|
|
|
23
23
|
"module": "./dist/index.js",
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|
|
26
|
-
"
|
|
27
|
-
"
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./*": {
|
|
30
|
+
"types": "./dist/*.d.ts",
|
|
31
|
+
"import": "./dist/*.js"
|
|
28
32
|
}
|
|
29
33
|
},
|
|
30
34
|
"sideEffects": [
|
package/dist/assets/index16.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--dev-panel-font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;--dev-panel-font-weight-normal: 400;--dev-panel-font-weight-medium: 500;--dev-panel-font-weight-semibold: 600;--dev-panel-font-weight-bold: 700;--dev-panel-font-size-xs: 10px;--dev-panel-font-size-sm: 12px;--dev-panel-font-size-md: 14px;--dev-panel-font-size-lg: 16px;--dev-panel-font-size-xl: 18px;--dev-panel-line-height-tight: 1.25;--dev-panel-line-height-normal: 1.5;--dev-panel-line-height-relaxed: 1.75;--dev-panel-accent-color: #2563eb;--dev-panel-accent-color-hover: #1d4ed8;--dev-panel-accent-color-active: #1e40af;--dev-panel-accent-color-disabled: #2563eb30;--dev-panel-primary-color: #2563eb;--dev-panel-primary-color-hover: #1d4ed8;--dev-panel-primary-color-active: #1e40af;--dev-panel-primary-color-disabled: #2563eb30;--dev-panel-secondary-color: #64748b;--dev-panel-secondary-color-hover: #475569;--dev-panel-secondary-color-active: #334155;--dev-panel-success-color: #10b981;--dev-panel-success-color-hover: #059669;--dev-panel-success-color-active: #047857;--dev-panel-warning-color: #f59e0b;--dev-panel-warning-color-hover: #d97706;--dev-panel-warning-color-active: #b45309;--dev-panel-error-color: #ef4444;--dev-panel-error-color-hover: #dc2626;--dev-panel-error-color-active: #b91c1c;--dev-panel-info-color: #06b6d4;--dev-panel-info-color-hover: #0891b2;--dev-panel-info-color-active: #0e7490;--dev-panel-background-color: #1e293b;--dev-panel-background-color-secondary: #334155;--dev-panel-background-color-tertiary: #475569;--dev-panel-foreground-color: #0f172a;--dev-panel-surface-color: #334155;--dev-panel-surface-color-hover: #475569;--dev-panel-surface-color-active: #64748b;--dev-panel-text-color: #f1f5f9;--dev-panel-text-color-secondary: #cbd5e1;--dev-panel-text-color-muted: #94a3b8;--dev-panel-text-color-disabled: #64748b;--dev-panel-text-color-on-accent: #ffffff;--dev-panel-text-color-on-surface: #f1f5f9;--dev-panel-border-color: #475569;--dev-panel-border-color-light: #64748b;--dev-panel-border-color-strong: #334155;--dev-panel-border-color-accent: #2563eb;--dev-panel-input-background-color: #0f172a;--dev-panel-input-background-color-hover: #1e293b;--dev-panel-input-background-color-focus: #1e293b;--dev-panel-input-border-color: #475569;--dev-panel-input-border-color-hover: #64748b;--dev-panel-input-border-color-focus: #2563eb;--dev-panel-input-text-color: #f1f5f9;--dev-panel-input-placeholder-color: #64748b;--dev-panel-input-border-width: 1px;--dev-panel-spacing-base: 4px;--dev-panel-spacing-xs: calc(var(--dev-panel-spacing-base) * .5);--dev-panel-spacing-sm: var(--dev-panel-spacing-base);--dev-panel-spacing-md: calc(var(--dev-panel-spacing-base) * 2);--dev-panel-spacing-lg: calc(var(--dev-panel-spacing-base) * 3);--dev-panel-spacing-xl: calc(var(--dev-panel-spacing-base) * 4);--dev-panel-spacing-2xl: calc(var(--dev-panel-spacing-base) * 5);--dev-panel-spacing-3xl: calc(var(--dev-panel-spacing-base) * 6);--dev-panel-spacing-4xl: calc(var(--dev-panel-spacing-base) * 8);--dev-panel-spacing: var(--dev-panel-spacing-lg);--dev-panel-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);--dev-panel-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--dev-panel-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--dev-panel-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--dev-panel-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--dev-panel-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);--dev-panel-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .05);--dev-panel-shadow: var(--dev-panel-shadow-xl);--dev-panel-border-radius-none: 0;--dev-panel-border-radius-sm: 2px;--dev-panel-border-radius-md: 4px;--dev-panel-border-radius-lg: 6px;--dev-panel-border-radius-xl: 8px;--dev-panel-border-radius-2xl: 12px;--dev-panel-border-radius-full: 9999px;--dev-panel-border-radius: var(--dev-panel-border-radius-lg);--dev-panel-max-width: 400px;--dev-panel-min-width: 280px;--dev-panel-max-height: 600px;--dev-panel-min-height: auto;--dev-panel-header-height: auto;--dev-panel-inputs-height: 32px;--dev-panel-inputs-height-sm: 28px;--dev-panel-inputs-height-lg: 36px;--dev-panel-button-height: 32px;--dev-panel-button-height-sm: 28px;--dev-panel-button-height-lg: 36px;--dev-panel-transition-fast: all .15s cubic-bezier(.4, 0, .2, 1);--dev-panel-transition-normal: all .2s cubic-bezier(.4, 0, .2, 1);--dev-panel-transition-slow: all .3s cubic-bezier(.4, 0, .2, 1);--dev-panel-transition: var(--dev-panel-transition-normal);--dev-panel-z-index-dropdown: 1000;--dev-panel-z-index-sticky: 1020;--dev-panel-z-index-fixed: 1030;--dev-panel-z-index-modal-backdrop: 1040;--dev-panel-z-index-modal: 1050;--dev-panel-z-index-popover: 1060;--dev-panel-z-index-tooltip: 1070;--dev-panel-z-index-toast: 1080;--dev-panel-z-index: var(--dev-panel-z-index-modal);--dev-panel-opacity-0: 0;--dev-panel-opacity-5: .05;--dev-panel-opacity-10: .1;--dev-panel-opacity-20: .2;--dev-panel-opacity-25: .25;--dev-panel-opacity-30: .3;--dev-panel-opacity-40: .4;--dev-panel-opacity-50: .5;--dev-panel-opacity-60: .6;--dev-panel-opacity-70: .7;--dev-panel-opacity-75: .75;--dev-panel-opacity-80: .8;--dev-panel-opacity-90: .9;--dev-panel-opacity-95: .95;--dev-panel-opacity-100: 1;--dev-panel-scrollbar-width: 6px;--dev-panel-scrollbar-track-color: var(--dev-panel-background-color-secondary);--dev-panel-scrollbar-thumb-color: var(--dev-panel-border-color);--dev-panel-scrollbar-thumb-hover-color: var(--dev-panel-border-color-light)}@media (prefers-color-scheme: light){:root{color-scheme:light;--dev-panel-background-color: #f8fafc;--dev-panel-background-color-secondary: #f1f5f9;--dev-panel-background-color-tertiary: #e2e8f0;--dev-panel-foreground-color: #ffffff;--dev-panel-surface-color: #ffffff;--dev-panel-surface-color-hover: #e2e8f0;--dev-panel-surface-color-active: #e2e8f0;--dev-panel-text-color: #0f172a;--dev-panel-text-color-secondary: #334155;--dev-panel-text-color-muted: #64748b;--dev-panel-text-color-disabled: #94a3b8;--dev-panel-text-color-on-accent: #ffffff;--dev-panel-text-color-on-surface: #0f172a;--dev-panel-border-color: #e2e8f0;--dev-panel-border-color-light: #cbd5e1;--dev-panel-border-color-strong: #94a3b8;--dev-panel-border-color-accent: #2563eb;--dev-panel-input-background-color: #ffffff;--dev-panel-input-background-color-hover: #ffcccc;--dev-panel-input-background-color-focus: #ffffff;--dev-panel-input-border-color: #e2e8f0;--dev-panel-input-border-color-hover: #cbd5e1;--dev-panel-input-border-color-focus: #2563eb;--dev-panel-input-text-color: #0f172a;--dev-panel-input-placeholder-color: #64748b;--dev-panel-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .03);--dev-panel-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .08), 0 1px 2px -1px rgb(0 0 0 / .08);--dev-panel-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .08), 0 2px 4px -2px rgb(0 0 0 / .08);--dev-panel-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .08), 0 4px 6px -4px rgb(0 0 0 / .08);--dev-panel-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .08), 0 8px 10px -6px rgb(0 0 0 / .08);--dev-panel-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .15);--dev-panel-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .03);--dev-panel-shadow: var(--dev-panel-shadow-xl);--dev-panel-scrollbar-thumb-color: var(--dev-panel-border-color-light);--dev-panel-scrollbar-thumb-hover-color: var(--dev-panel-border-color-strong)}}:root[data-dev-panel-theme=dark]{color-scheme:dark}:root[data-dev-panel-theme=light]{--dev-panel-background-color: #f8fafc;--dev-panel-background-color-secondary: #f1f5f9;--dev-panel-background-color-tertiary: #e2e8f0;--dev-panel-foreground-color: #ffffff;--dev-panel-surface-color: #ffffff;--dev-panel-surface-color-hover: #e2e8f0;--dev-panel-surface-color-active: #e2e8f0;--dev-panel-text-color: #0f172a;--dev-panel-text-color-secondary: #334155;--dev-panel-text-color-muted: #64748b;--dev-panel-text-color-disabled: #94a3b8;--dev-panel-text-color-on-accent: #ffffff;--dev-panel-text-color-on-surface: #0f172a;--dev-panel-border-color: #e2e8f0;--dev-panel-border-color-light: #cbd5e1;--dev-panel-border-color-strong: #94a3b8;--dev-panel-border-color-accent: #2563eb;--dev-panel-input-background-color: #ffffff;--dev-panel-input-background-color-hover: #ffcccc;--dev-panel-input-background-color-focus: #ffffff;--dev-panel-input-border-color: #e2e8f0;--dev-panel-input-border-color-hover: #cbd5e1;--dev-panel-input-border-color-focus: #2563eb;--dev-panel-input-text-color: #0f172a;--dev-panel-input-placeholder-color: #64748b;--dev-panel-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .03);--dev-panel-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .08), 0 1px 2px -1px rgb(0 0 0 / .08);--dev-panel-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .08), 0 2px 4px -2px rgb(0 0 0 / .08);--dev-panel-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .08), 0 4px 6px -4px rgb(0 0 0 / .08);--dev-panel-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .08), 0 8px 10px -6px rgb(0 0 0 / .08);--dev-panel-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .15);--dev-panel-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .03);--dev-panel-shadow: var(--dev-panel-shadow-xl);--dev-panel-scrollbar-thumb-color: var(--dev-panel-border-color-light);--dev-panel-scrollbar-thumb-hover-color: var(--dev-panel-border-color-strong);color-scheme:light}._switch_1rjjb_217{--switch-width: 44px;--switch-height: 24px;--thumb-size: 20px;--thumb-margin: 1px;position:relative;display:inline-block;width:var(--switch-width);height:var(--switch-height)}._switch_1rjjb_217 input{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}._switch_1rjjb_217 input:checked+._slider_1rjjb_235{background-color:var(--dev-panel-accent-color, #6366f1);border-color:var(--dev-panel-accent-color, #6366f1)}._switch_1rjjb_217 input:checked+._slider_1rjjb_235:before{left:calc(100% - var(--thumb-size) - var(--thumb-margin));background-color:var(--dev-panel-text-color-on-accent, #ffffff)}._switch_1rjjb_217 input:focus+._slider_1rjjb_235{box-shadow:0 0 0 3px #6366f133}._switch_1rjjb_217 input:focus:not(:focus-visible)+._slider_1rjjb_235{box-shadow:none}._switch_1rjjb_217 input:disabled+._slider_1rjjb_235{opacity:var(--dev-panel-opacity-50, .5);cursor:not-allowed}._switch_1rjjb_217 input:disabled+._slider_1rjjb_235:before{opacity:var(--dev-panel-opacity-70, .7)}._switch_1rjjb_217 ._slider_1rjjb_235{position:absolute;inset:0;background-color:var(--dev-panel-input-background-color, #0f172a);border:1px solid var(--dev-panel-input-border-color, #475569);border-radius:var(--dev-panel-border-radius-full, 9999px);transition:var(--dev-panel-transition, all .2s cubic-bezier(.4, 0, .2, 1));cursor:pointer}._switch_1rjjb_217 ._slider_1rjjb_235:before{content:"";position:absolute;top:var(--thumb-margin);left:var(--thumb-margin);width:var(--thumb-size);height:var(--thumb-size);background-color:var(--dev-panel-text-color-muted, #94a3b8);border-radius:var(--dev-panel-border-radius-full, 9999px);transition:var(--dev-panel-transition, all .2s cubic-bezier(.4, 0, .2, 1));box-shadow:var(--dev-panel-shadow-sm, 0 1px 3px rgba(0, 0, 0, .1))}._switch_1rjjb_217 ._slider_1rjjb_235:hover{border-color:var(--dev-panel-input-border-color-hover, #64748b)}._switch_1rjjb_217 ._slider_1rjjb_235:hover:before{box-shadow:var(--dev-panel-shadow-md, 0 4px 6px rgba(0, 0, 0, .1))}._switch_1rjjb_217 input:disabled+._slider_1rjjb_235:hover{border-color:var(--dev-panel-input-border-color, #475569)}._switch_1rjjb_217 input:disabled+._slider_1rjjb_235:hover:before{box-shadow:var(--dev-panel-shadow-sm, 0 1px 3px rgba(0, 0, 0, .1))}
|