- Move the Tauri app (React frontend + Rust backend) into desktop/ via git mv — configs unchanged (relative paths: tauri.conf.json, vite.config.ts) - Root package.json becomes a private bun workspace container with orchestration scripts; desktop package renamed gridline-desktop - Scaffold www/ with Astro 7 + Tailwind v4 (hand-wired vite plugin, static output, ready for Dokploy) - Update release.yml for the new layout: projectPath: desktop, desktop/src-tauri resource paths, rust-cache workspace path - Update README + AGENTS.md structure trees and dev commands - Verified: vitest (1074), cargo test (354), desktop build, tauri dev (window launches), tauri build (dmg + app bundles), Astro build
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { useCallback } from "react";
|
|
import Editor, { type BeforeMount } from "@monaco-editor/react";
|
|
import { useSettingsStore } from "../../stores/settingsStore";
|
|
|
|
interface SqlEditorFieldProps {
|
|
value: string;
|
|
onChange: (value: string) => void;
|
|
height?: number;
|
|
readOnly?: boolean;
|
|
}
|
|
|
|
export function SqlEditorField({
|
|
value,
|
|
onChange,
|
|
height = 140,
|
|
readOnly = false,
|
|
}: SqlEditorFieldProps) {
|
|
const editorFontFamily = useSettingsStore(
|
|
(s) => s.settings?.editor_font_family ?? "Space Mono",
|
|
);
|
|
const editorFontSize = useSettingsStore(
|
|
(s) => s.settings?.editor_font_size ?? 13,
|
|
);
|
|
const editorTabSize = useSettingsStore(
|
|
(s) => s.settings?.editor_tab_size ?? 4,
|
|
);
|
|
|
|
const handleBeforeMount: BeforeMount = useCallback((monaco) => {
|
|
monaco.editor.defineTheme("gridline-sql", {
|
|
base: "vs-dark",
|
|
inherit: true,
|
|
rules: [],
|
|
colors: {
|
|
"editor.background": "#00000000",
|
|
"editorGutter.background": "#00000000",
|
|
"editor.lineHighlightBackground": "#ffffff08",
|
|
"editorLineNumber.foreground": "#5b5b5e",
|
|
"editorLineNumber.activeForeground": "#a1a1a6",
|
|
},
|
|
});
|
|
}, []);
|
|
|
|
return (
|
|
<div className="h-full min-h-0" data-testid="sql-editor-field">
|
|
<Editor
|
|
height={height}
|
|
language="sql"
|
|
theme="gridline-sql"
|
|
beforeMount={handleBeforeMount}
|
|
value={value}
|
|
onChange={(v) => onChange(v ?? "")}
|
|
options={{
|
|
minimap: { enabled: false },
|
|
fontSize: editorFontSize,
|
|
fontFamily: editorFontFamily,
|
|
lineNumbers: "on",
|
|
scrollBeyondLastLine: false,
|
|
wordWrap: "on",
|
|
readOnly,
|
|
automaticLayout: true,
|
|
tabSize: editorTabSize,
|
|
}}
|
|
/>
|
|
</div>
|
|
);
|
|
} |