Skip to content

Commit 83a7603

Browse files
building and stying
1 parent 5ef9443 commit 83a7603

10 files changed

Lines changed: 189 additions & 114 deletions

File tree

packages/editor/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"class-variance-authority": "^0.7.1",
2929
"clsx": "^2.1.1",
3030
"lucide-react": "^0.561.0",
31+
"minimatch": "^10.2.2",
3132
"monaco-editor": "0.52.0",
3233
"monaco-yaml": "^5.4.1",
3334
"nitro": "npm:nitro-nightly@latest",

packages/editor/src/components/MonacoEditor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { YAML_SCHEMAS } from '@/utils/yaml-schemas';
22
import Editor, { loader, type BeforeMount, type Monaco, type OnMount } from '@monaco-editor/react';
3+
import type { editor } from 'monaco-editor';
34
import * as monaco from 'monaco-editor';
4-
import { editor } from 'monaco-editor';
55
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
66
import { configureMonacoYaml } from 'monaco-yaml';
77
import YamlWorker from 'monaco-yaml/yaml.worker?worker';
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { minimatch as m } from 'minimatch';
2+
3+
export const minimatch = m;
4+
5+
// Fixes Vite errors for "no default export" when importing minimatch in the editor package
6+
export default minimatch;

packages/editor/src/routes/files.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,58 +15,58 @@ function FilesLayout() {
1515
const filesError = error instanceof Error ? error.message : 'Unexpected error while loading files.';
1616

1717
return (
18-
<div className="flex min-h-screen flex-col bg-slate-950 text-white">
18+
<div className="flex min-h-screen flex-col bg-background text-foreground">
1919
<div className="flex flex-1 min-h-0 overflow-hidden">
20-
<aside className="w-80 border-r border-white/5 bg-slate-950/80 px-4 py-6 backdrop-blur">
20+
<aside className="w-80 border-r border-border bg-card/60 px-4 py-6 backdrop-blur">
2121
<Accordion type="single" collapsible defaultValue="configuration" className="mt-6">
22-
<AccordionItem value="configuration" className="border-white/10">
22+
<AccordionItem value="configuration" className="border-border/60">
2323
<AccordionTrigger>Configuration files</AccordionTrigger>
2424
<AccordionContent>
2525
{isPending ? (
26-
<div className="flex items-center gap-3 rounded-xl border border-white/10 bg-white/5 px-4 py-6 text-white/70">
27-
<Loader2 className="h-4 w-4 animate-spin" />
26+
<div className="flex items-center gap-3 rounded-xl border border-border/70 bg-muted/40 px-4 py-6 text-muted-foreground">
27+
<Loader2 className="h-4 w-4 animate-spin text-primary" />
2828
Loading configuration list…
2929
</div>
3030
) : error ? (
31-
<div className="space-y-3 rounded-xl border border-rose-500/50 bg-rose-500/10 p-4 text-sm text-rose-50">
32-
<p className="flex items-center gap-2 font-semibold">
31+
<div className="space-y-3 rounded-xl border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive-foreground">
32+
<p className="flex items-center gap-2 font-semibold text-destructive-foreground">
3333
<AlertCircle size={16} /> Unable to load files
3434
</p>
35-
<p className="text-rose-50/80">{filesError}</p>
35+
<p className="text-destructive-foreground/80">{filesError}</p>
3636
<button
3737
type="button"
3838
onClick={() => refetch()}
39-
className="inline-flex items-center justify-center rounded-full border border-rose-200/40 px-4 py-2 text-xs font-semibold uppercase tracking-wide text-rose-50 transition hover:border-rose-100">
39+
className="inline-flex items-center justify-center rounded-full border border-destructive/40 px-4 py-2 text-xs font-semibold uppercase tracking-wide text-destructive-foreground transition hover:border-destructive/60">
4040
Try again
4141
</button>
4242
</div>
4343
) : files.length === 0 ? (
44-
<p className="text-sm text-white/60">No PowerSync YAML files were detected.</p>
44+
<p className="text-sm text-muted-foreground">No PowerSync YAML files were detected.</p>
4545
) : (
4646
<ul className="space-y-2">
4747
{files.map((file) => (
4848
<li key={file.filename}>
4949
<Link
5050
to="/files/$filename"
5151
params={{ filename: file.filename }}
52-
className="flex items-center gap-3 rounded-xl border border-transparent px-4 py-3 text-sm text-white/80 transition hover:border-cyan-400/60 hover:bg-cyan-400/10"
52+
className="flex items-center gap-3 rounded-xl border border-transparent px-4 py-3 text-sm text-foreground transition hover:border-primary/50 hover:bg-primary/5"
5353
activeProps={{
5454
className:
55-
'flex items-center gap-3 rounded-xl border border-cyan-400 bg-cyan-400/10 px-4 py-3 text-sm text-white shadow-[0_0_25px_rgba(14,165,233,0.35)]'
55+
'flex items-center gap-3 rounded-xl border border-primary bg-primary/10 px-4 py-3 text-sm text-foreground shadow-[0_0_25px_rgba(14,165,233,0.25)]'
5656
}}>
57-
<span className="flex h-9 w-9 items-center justify-center rounded-lg bg-white/10 text-white">
57+
<span className="flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 text-primary">
5858
<FileText size={18} />
5959
</span>
6060
<div>
6161
<div className="flex items-center gap-2">
6262
<p className="font-semibold">{file.label}</p>
6363
{state[file.filename]?.hasChanges ? (
64-
<span className="rounded-full bg-amber-500/20 px-2 py-[2px] text-[10px] font-semibold uppercase tracking-wide text-amber-100 border border-amber-400/50">
64+
<span className="rounded-full border border-warning/40 bg-warning/15 px-2 py-[2px] text-[10px] font-semibold uppercase tracking-wide text-warning-foreground">
6565
Unsaved
6666
</span>
6767
) : null}
6868
</div>
69-
<p className="text-xs text-white/60">{file.filename}</p>
69+
<p className="text-xs text-muted-foreground">{file.filename}</p>
7070
</div>
7171
</Link>
7272
</li>

packages/editor/src/routes/files/$filename.tsx

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -148,20 +148,22 @@ function FileEditor() {
148148
};
149149

150150
return (
151-
<div className="flex h-full w-full flex-1 flex-col gap-6 bg-slate-900/20 px-10 py-8">
152-
<header className="flex flex-wrap items-center justify-between gap-4 border-b border-white/10 pb-4">
151+
<div className="flex h-full w-full flex-1 flex-col gap-6 bg-background px-10 py-8 text-foreground">
152+
<header className="flex flex-wrap items-center justify-between gap-4 border-b border-border pb-4">
153153
<div>
154-
<p className="text-xs font-semibold uppercase tracking-[0.4em] text-white/40">Editing</p>
155-
<h2 className="text-2xl font-semibold text-white">{filename}</h2>
156-
<p className="text-sm text-white/60">PowerSync CLI YAML configuration</p>
154+
<p className="text-xs font-semibold uppercase tracking-[0.4em] text-muted-foreground">Editing</p>
155+
<h2 className="text-2xl font-semibold text-foreground">{filename}</h2>
156+
<p className="text-sm text-muted-foreground">PowerSync CLI YAML configuration</p>
157157
</div>
158158
<div className="flex flex-wrap items-center gap-3">
159159
<button
160160
type="button"
161161
disabled={validation.errors === 0 && validation.warnings === 0}
162162
onClick={() => setShowValidation((open) => !open)}
163163
className={`flex items-center gap-2 rounded-full border px-3 py-1 text-xs font-semibold transition ${validationBadge.tone} ${
164-
validation.errors > 0 || validation.warnings > 0 ? 'hover:border-white/60 hover:bg-white/10' : ''
164+
validation.errors > 0 || validation.warnings > 0
165+
? 'hover:border-destructive/50 hover:bg-destructive/5'
166+
: ''
165167
} ${validation.errors === 0 && validation.warnings === 0 ? 'cursor-not-allowed opacity-60' : ''}`}>
166168
{validationBadge.icon}
167169
{validationBadge.label}
@@ -175,34 +177,34 @@ function FileEditor() {
175177
type="button"
176178
onClick={handleReset}
177179
disabled={!hasChanges || status === 'saving'}
178-
className="inline-flex items-center gap-2 rounded-full border border-white/20 px-4 py-2 text-sm font-semibold text-white/80 transition hover:border-white/50 disabled:cursor-not-allowed disabled:opacity-50">
180+
className="inline-flex items-center gap-2 rounded-full border border-border px-4 py-2 text-sm font-semibold text-foreground transition hover:border-primary/50 disabled:cursor-not-allowed disabled:opacity-50">
179181
<RotateCcw size={16} /> Reset
180182
</button>
181183
<button
182184
type="button"
183185
onClick={handleSave}
184186
disabled={!hasChanges || status === 'saving'}
185-
className="inline-flex items-center gap-2 rounded-full bg-gradient-to-r from-cyan-500 to-blue-500 px-5 py-2 text-sm font-semibold text-white shadow-lg shadow-cyan-500/30 transition hover:from-cyan-400 hover:to-blue-400 disabled:cursor-not-allowed disabled:opacity-60">
187+
className="inline-flex items-center gap-2 rounded-full bg-primary px-5 py-2 text-sm font-semibold text-primary-foreground shadow-lg shadow-primary/30 transition hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-60">
186188
{status === 'saving' ? <Loader2 size={16} className="animate-spin" /> : <Save size={16} />} Save changes
187189
</button>
188190
</div>
189191
</header>
190192

191193
{errorMessage && (
192-
<div className="rounded-xl border border-rose-500/40 bg-rose-500/10 p-4 text-sm text-rose-100">
194+
<div className="rounded-xl border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive-foreground">
193195
{errorMessage}
194196
</div>
195197
)}
196198

197199
{showValidation && validationMarkers.length > 0 && (
198-
<div className="rounded-xl border border-rose-400/40 bg-rose-500/5 px-4 py-3 text-sm text-white/90">
200+
<div className="rounded-xl border border-destructive/25 bg-destructive/5 px-4 py-3 text-sm text-foreground">
199201
<div className="mb-2 flex items-center justify-between">
200-
<div className="flex items-center gap-2 font-semibold text-rose-50">
201-
<Info size={16} className="text-rose-200" /> Validation details
202+
<div className="flex items-center gap-2 font-semibold text-destructive-foreground">
203+
<Info size={16} className="text-destructive" /> Validation details
202204
</div>
203205
<button
204206
type="button"
205-
className="text-xs font-semibold text-white/60 underline-offset-4 hover:text-white"
207+
className="text-xs font-semibold text-muted-foreground underline-offset-4 hover:text-foreground"
206208
onClick={() => setShowValidation(false)}>
207209
Hide
208210
</button>
@@ -211,18 +213,18 @@ function FileEditor() {
211213
{validationMarkers.map((marker, idx) => {
212214
const isError = ERROR_SEVERITIES.has(marker.severity);
213215
const tone = isError
214-
? 'text-rose-100 bg-rose-500/15 border-rose-300/40'
215-
: 'text-amber-100 bg-amber-500/15 border-amber-300/40';
216-
const label = isError ? 'Error' : 'Warning';
216+
? 'text-destructive-foreground bg-destructive/15 border-destructive/40'
217+
: 'text-warning-foreground bg-warning/15 border-warning/40';
218+
const label = isError ? 'Error' : 'Info';
217219
return (
218220
<li key={`${marker.message}-${marker.startLineNumber}-${idx}`} className="flex items-start gap-3">
219221
<span
220222
className={`mt-0.5 inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] font-semibold ${tone}`}>
221223
{label}
222224
</span>
223-
<div className="flex-1 leading-relaxed text-white/90">
224-
<div className="font-semibold text-white">Line {marker.startLineNumber}</div>
225-
<div className="text-white/80">{marker.message}</div>
225+
<div className="flex-1 leading-relaxed text-foreground">
226+
<div className="font-semibold text-foreground">Line {marker.startLineNumber}</div>
227+
<div className="text-muted-foreground">{marker.message}</div>
226228
</div>
227229
</li>
228230
);
@@ -231,7 +233,7 @@ function FileEditor() {
231233
</div>
232234
)}
233235

234-
<div className="flex flex-1 min-h-0 overflow-hidden rounded-3xl border border-white/10 bg-slate-950 shadow-[0_20px_120px_rgba(14,165,233,0.12)]">
236+
<div className="flex flex-1 min-h-0 overflow-hidden rounded-3xl border border-border bg-card shadow-[0_16px_72px_rgba(0,0,0,0.08)]">
235237
{isBrowser ? (
236238
<MonacoEditor
237239
className="flex-1"

0 commit comments

Comments
 (0)