tsondb 0.7.7 → 0.7.9

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 (49) hide show
  1. package/dist/src/node/server/api/git.js +156 -24
  2. package/dist/src/node/server/index.js +4 -0
  3. package/dist/src/node/utils/instanceOperations.d.ts +1 -1
  4. package/dist/src/node/utils/instanceOperations.js +2 -2
  5. package/dist/src/shared/api.d.ts +17 -1
  6. package/dist/src/shared/utils/git.d.ts +4 -0
  7. package/dist/src/shared/utils/git.js +6 -1
  8. package/dist/src/shared/utils/markdown.d.ts +36 -17
  9. package/dist/src/shared/utils/markdown.js +79 -23
  10. package/dist/src/shared/utils/object.d.ts +1 -0
  11. package/dist/src/shared/utils/object.js +1 -0
  12. package/dist/src/web/api/git.d.ts +5 -1
  13. package/dist/src/web/api/git.js +6 -2
  14. package/dist/src/web/components/ContextProviderWrapper.d.ts +7 -0
  15. package/dist/src/web/components/ContextProviderWrapper.js +5 -0
  16. package/dist/src/web/components/InstanceRouteSkeleton.d.ts +1 -0
  17. package/dist/src/web/components/InstanceRouteSkeleton.js +8 -4
  18. package/dist/src/web/components/LoadingOverlay.d.ts +1 -0
  19. package/dist/src/web/components/LoadingOverlay.js +3 -0
  20. package/dist/src/web/components/ModalDialog.js +4 -3
  21. package/dist/src/web/components/git/Git.js +47 -0
  22. package/dist/src/web/components/git/GitBranchManager.d.ts +7 -0
  23. package/dist/src/web/components/git/GitBranchManager.js +17 -0
  24. package/dist/src/web/components/git/GitFileList.d.ts +17 -0
  25. package/dist/src/web/components/git/GitFileList.js +11 -0
  26. package/dist/src/web/components/git/GitFileManager.d.ts +8 -0
  27. package/dist/src/web/components/git/GitFileManager.js +34 -0
  28. package/dist/src/web/components/git/GitStatusIndicator.d.ts +7 -0
  29. package/dist/src/web/components/git/GitStatusIndicator.js +6 -0
  30. package/dist/src/web/components/typeInputs/StringTypeInput.js +1 -1
  31. package/dist/src/web/context/entities.d.ts +6 -5
  32. package/dist/src/web/context/git.d.ts +2 -1
  33. package/dist/src/web/context/gitClient.d.ts +2 -0
  34. package/dist/src/web/context/gitClient.js +2 -0
  35. package/dist/src/web/hooks/useGitClient.d.ts +37 -0
  36. package/dist/src/web/hooks/useGitClient.js +313 -0
  37. package/dist/src/web/index.js +6 -2
  38. package/dist/src/web/routes/CreateInstance.js +2 -1
  39. package/dist/src/web/routes/Entity.js +10 -4
  40. package/dist/src/web/routes/Instance.js +2 -1
  41. package/dist/src/web/signals/loading.d.ts +2 -0
  42. package/dist/src/web/signals/loading.js +11 -0
  43. package/dist/src/web/utils/BlockMarkdown.js +1 -1
  44. package/dist/src/web/utils/debug.d.ts +1 -0
  45. package/dist/src/web/utils/debug.js +4 -0
  46. package/package.json +3 -3
  47. package/public/css/styles.css +319 -229
  48. package/dist/src/web/components/Git.js +0 -164
  49. /package/dist/src/web/components/{Git.d.ts → git/Git.d.ts} +0 -0
@@ -12,94 +12,109 @@
12
12
  ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
13
13
  monospace;
14
14
  --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
15
- --background: white;
16
- --markdown-background: #e1e3e7;
17
- --color: black;
18
- --error-color: #9d1212;
19
- --separator-color: #e9e5eb;
20
- --secondary-color: #7e7f87;
21
- --tertiary-color: #bcbdc2;
22
- --input-border-color: black;
23
- --button-background: #c7cad0;
24
- --button-background-hover: #dedfe4;
25
- --button-background-primary: black;
26
- --button-background-primary-hover: #727379;
27
- --button-background-destructive: #b51616;
28
- --button-background-destructive-hover: #e63333;
29
- --button-background-disabled: #a4a5aa;
30
- --button-color: black;
31
- --button-color-hover: black;
32
- --button-color-primary: white;
33
- --button-color-primary-hover: white;
34
- --button-color-destructive: white;
35
- --button-color-destructive-hover: white;
36
- --button-color-disabled: #cdced2;
37
- --highlight-color: #a08500;
38
- --highlight-background: #fdfab9;
39
- --disabled-color: #cdced2;
40
- --shadow-color: rgba(53, 56, 58, 0.5);
41
- --git-status-untracked-color: rgb(13, 149, 101);
42
- --git-status-untracked-background: rgba(13, 149, 101, 0.15);
43
- --git-status-added-color: rgb(20, 148, 29);
44
- --git-status-added-background: rgba(20, 148, 29, 0.15);
45
- --git-status-modified-color: rgb(196, 155, 18);
46
- --git-status-modified-background: rgba(196, 155, 18, 0.15);
47
- --git-status-deleted-color: rgb(135, 22, 11);
48
- --git-status-deleted-background: rgba(135, 22, 11, 0.15);
49
- --git-status-renamed-color: rgb(20, 97, 148);
50
- --git-status-renamed-background: rgba(20, 97, 148, 0.15);
51
- --shadow-color: rgba(160, 163, 165, 0.5);
52
- --highlight-color-bold: rgb(205, 123, 43);
53
- --highlight-color-italic: rgb(41, 155, 96);
54
- --highlight-color-list-item-marker: rgb(195, 58, 237);
55
- --highlight-color-table-marker: rgb(237, 58, 118);
56
- --highlight-color-attributed: rgb(48, 81, 228);
57
- --highlight-color-heading-marker: rgb(62, 189, 191);
15
+
16
+ --color-background-primary: hsl(260, 6%, 97%);
17
+ --color-background-secondary: hsl(260, 6%, 90%);
18
+ --color-background-tertiary: hsl(260, 6%, 85%);
19
+
20
+ --color-foreground-primary: hsl(260, 6%, 10%);
21
+ --color-foreground-secondary: hsl(260, 6%, 40%);
22
+ --color-foreground-tertiary: hsl(260, 6%, 50%);
23
+
24
+ --color-error: #9d1212;
25
+ --color-placeholder: hsla(260, 6%, 50%);
26
+ --color-separator: hsla(260, 6%, 25%, 0.125);
27
+ --color-separator-input: hsl(260, 6%, 50%);
28
+ --color-disabled: hsl(260, 6%, 75%);
29
+ --color-shadow: rgba(53, 56, 58, 0.5);
30
+
31
+ --color-button-background: hsl(260, 6%, 75%);
32
+ --color-button-foreground: hsl(260, 6%, 10%);
33
+ --color-button-background-hover: hsl(260, 6%, 60%);
34
+ --color-button-foreground-hover: hsl(260, 6%, 10%);
35
+ --color-button-background-primary: hsl(260, 6%, 10%);
36
+ --color-button-foreground-primary: hsl(260, 6%, 95%);
37
+ --color-button-background-primary-hover: hsl(260, 6%, 30%);
38
+ --color-button-foreground-primary-hover: hsl(260, 6%, 95%);
39
+ --color-button-background-destructive: #b51616;
40
+ --color-button-foreground-destructive: white;
41
+ --color-button-background-destructive-hover: #e63333;
42
+ --color-button-foreground-destructive-hover: white;
43
+ --color-button-background-disabled: hsl(260, 6%, 90%);
44
+ --color-button-foreground-disabled: hsl(260, 6%, 75%);
45
+
46
+ --color-highlight-background: #fdfab9;
47
+ --color-highlight-foreground: #a08500;
48
+
49
+ --git-status-untracked-background-color: rgba(13, 149, 101, 0.15);
50
+ --git-status-untracked-foreground-color: rgb(13, 149, 101);
51
+ --git-status-added-background-color: rgba(20, 148, 29, 0.15);
52
+ --git-status-added-foreground-color: rgb(20, 148, 29);
53
+ --git-status-modified-background-color: rgba(196, 155, 18, 0.15);
54
+ --git-status-modified-foreground-color: rgb(196, 155, 18);
55
+ --git-status-deleted-background-color: rgba(135, 22, 11, 0.15);
56
+ --git-status-deleted-foreground-color: rgb(135, 22, 11);
57
+ --git-status-renamed-background-color: rgba(20, 97, 148, 0.15);
58
+ --git-status-renamed-foreground-color: rgb(20, 97, 148);
59
+
60
+ --color-syntax-bold: rgb(205, 123, 43);
61
+ --color-syntax-italic: rgb(41, 155, 96);
62
+ --color-syntax-list-item-marker: rgb(195, 58, 237);
63
+ --color-syntax-table-marker: rgb(237, 58, 118);
64
+ --color-syntax-attributed: rgb(48, 81, 228);
65
+ --color-syntax-heading-marker: rgb(62, 189, 191);
58
66
  }
59
67
 
60
68
  @media (prefers-color-scheme: dark) {
61
69
  :root {
62
- --background: hsl(260, 6%, 10%);
63
- --markdown-background: hsl(260, 6%, 17%);
64
- --color: hsl(260, 6%, 88%);
65
- --error-color: #ff6b6b;
66
- --separator-color: hsl(260, 6%, 24%);
67
- --secondary-color: hsl(260, 6%, 69%);
68
- --tertiary-color: hsl(260, 6%, 49%);
69
- --input-border-color: hsl(260, 6%, 40%);
70
- --button-background: hsl(260, 6%, 24%);
71
- --button-background-hover: hsl(260, 6%, 30%);
72
- --button-background-primary: hsl(260, 6%, 80%);
73
- --button-background-primary-hover: hsl(260, 6%, 60%);
74
- --button-background-destructive: #922727;
75
- --button-background-destructive-hover: #ff8080;
76
- --button-background-disabled: hsl(260, 6%, 35%);
77
- --button-color: #fff;
78
- --button-color-hover: #fff;
79
- --button-color-primary: #000;
80
- --button-color-primary-hover: #000;
81
- --button-color-destructive: #fff;
82
- --button-color-destructive-hover: #fff;
83
- --button-color-disabled: hsl(260, 6%, 54%);
84
- --highlight-color: #f2d600;
85
- --highlight-background: #333300;
86
- --highlight-color-bold: rgb(236, 170, 105);
87
- --highlight-color-italic: rgb(130, 230, 178);
88
- --highlight-color-list-item-marker: rgb(220, 133, 245);
89
- --highlight-color-table-marker: rgb(244, 135, 171);
90
- --highlight-color-attributed: rgb(137, 157, 244);
91
- --highlight-color-heading-marker: rgb(140, 229, 231);
92
- --shadow-color: rgba(0, 0, 0, 0);
70
+ --color-background-primary: hsl(260, 6%, 10%);
71
+ --color-background-secondary: hsl(260, 6%, 15%);
72
+ --color-background-tertiary: hsl(260, 6%, 20%);
73
+
74
+ --color-foreground-primary: hsl(260, 6%, 90%);
75
+ --color-foreground-secondary: hsl(260, 6%, 70%);
76
+ --color-foreground-tertiary: hsl(260, 6%, 50%);
77
+
78
+ --color-error: #ff6b6b;
79
+ --color-separator: hsla(260, 6%, 75%, 0.25);
80
+ --color-separator-input: hsl(260, 6%, 50%);
81
+ --color-disabled: hsl(260, 6%, 30%);
82
+ --color-shadow: rgba(0, 0, 0, 0);
83
+
84
+ --color-button-background: hsl(260, 6%, 25%);
85
+ --color-button-foreground: #fff;
86
+ --color-button-background-hover: hsl(260, 6%, 30%);
87
+ --color-button-foreground-hover: #fff;
88
+ --color-button-background-primary: hsl(260, 6%, 80%);
89
+ --color-button-foreground-primary: #000;
90
+ --color-button-background-primary-hover: hsl(260, 6%, 60%);
91
+ --color-button-foreground-primary-hover: #000;
92
+ --color-button-background-destructive: #922727;
93
+ --color-button-foreground-destructive: #fff;
94
+ --color-button-background-destructive-hover: #ff8080;
95
+ --color-button-foreground-destructive-hover: #fff;
96
+ --color-button-background-disabled: hsl(260, 6%, 15%);
97
+ --color-button-foreground-disabled: hsl(260, 6%, 35%);
98
+
99
+ --color-highlight-background: #333300;
100
+ --color-highlight-foreground: #f2d600;
101
+
102
+ --color-syntax-bold: rgb(236, 170, 105);
103
+ --color-syntax-italic: rgb(130, 230, 178);
104
+ --color-syntax-list-item-marker: rgb(220, 133, 245);
105
+ --color-syntax-table-marker: rgb(244, 135, 171);
106
+ --color-syntax-attributed: rgb(137, 157, 244);
107
+ --color-syntax-heading-marker: rgb(140, 229, 231);
93
108
  }
94
109
  }
95
110
 
96
111
  body {
97
112
  font-family: var(--font-sans);
98
- color: var(--color);
113
+ color: var(--color-foreground-primary);
99
114
  margin: 0;
100
115
  padding: 1.5rem;
101
116
  line-height: 1.4;
102
- background: var(--background);
117
+ background: var(--color-background-primary);
103
118
  z-index: 1;
104
119
  }
105
120
 
@@ -152,11 +167,11 @@ h1 {
152
167
  }
153
168
 
154
169
  h1.empty-name {
155
- color: var(--tertiary-color);
170
+ color: var(--color-foreground-tertiary);
156
171
  }
157
172
 
158
173
  h1 .id {
159
- color: var(--tertiary-color);
174
+ color: var(--color-foreground-tertiary);
160
175
  font-size: 0.8rem;
161
176
  font-family: var(--font-mono);
162
177
  display: block;
@@ -172,7 +187,7 @@ h2 {
172
187
  h2.h1-faded {
173
188
  margin: 2rem 0 1.5rem;
174
189
  font-size: 2.5rem;
175
- color: var(--tertiary-color);
190
+ color: var(--color-foreground-tertiary);
176
191
  }
177
192
 
178
193
  h3 {
@@ -186,7 +201,7 @@ p {
186
201
  }
187
202
 
188
203
  a {
189
- color: var(--color);
204
+ color: var(--color-foreground-primary);
190
205
  }
191
206
 
192
207
  a.btn,
@@ -196,12 +211,12 @@ button {
196
211
  /* padding: calc(0.5rem - var(--border-width)) calc(1rem - var(--border-width)); */
197
212
  padding: 0.5rem 1rem;
198
213
  margin: 0;
199
- background: var(--button-background);
200
- color: var(--button-color);
214
+ background: var(--color-button-background);
215
+ color: var(--color-button-foreground);
201
216
  font-family: var(--font-sans);
202
217
  font-size: 1rem;
203
218
  line-height: 1.4;
204
- /* border: var(--border-width) solid var(--button-color); */
219
+ /* border: var(--border-width) solid var(--color-button-foreground); */
205
220
  border: none;
206
221
  text-decoration: none;
207
222
  cursor: pointer;
@@ -209,15 +224,15 @@ button {
209
224
 
210
225
  a.btn:hover,
211
226
  button:hover {
212
- background: var(--button-background-hover);
213
- color: var(--button-color-hover);
214
- border-color: var(--button-color-hover);
227
+ background: var(--color-button-background-hover);
228
+ color: var(--color-button-foreground-hover);
229
+ border-color: var(--color-button-foreground-hover);
215
230
  }
216
231
 
217
232
  a.btn--primary,
218
233
  button.primary {
219
- background: var(--button-background-primary);
220
- color: var(--button-color-primary);
234
+ background: var(--color-button-background-primary);
235
+ color: var(--color-button-foreground-primary);
221
236
  padding: 0.5rem 1rem;
222
237
  border: none;
223
238
  }
@@ -231,35 +246,35 @@ button.primary {
231
246
 
232
247
  a.btn--primary:hover,
233
248
  button.primary:hover {
234
- background: var(--button-background-primary-hover);
235
- color: var(--button-color-primary-hover);
249
+ background: var(--color-button-background-primary-hover);
250
+ color: var(--color-button-foreground-primary-hover);
236
251
  }
237
252
 
238
253
  a.btn--destructive,
239
254
  button.destructive {
240
- background: var(--button-background-destructive);
241
- color: var(--button-color-destructive);
255
+ background: var(--color-button-background-destructive);
256
+ color: var(--color-button-foreground-destructive);
242
257
  padding: 0.5rem 1rem;
243
258
  border: none;
244
259
  }
245
260
 
246
261
  a.btn--destructive:hover,
247
262
  button.destructive:hover {
248
- background: var(--button-background-destructive-hover);
249
- color: var(--button-color-destructive-hover);
263
+ background: var(--color-button-background-destructive-hover);
264
+ color: var(--color-button-foreground-destructive-hover);
250
265
  }
251
266
 
252
267
  a.btn[aria-disabled="true"],
253
268
  button:disabled {
254
- background: var(--button-background-disabled);
255
- color: var(--button-color-disabled);
269
+ background: var(--color-button-background-disabled);
270
+ color: var(--color-button-foreground-disabled);
256
271
  cursor: not-allowed;
257
272
  }
258
273
 
259
274
  button.primary:disabled,
260
275
  button.destructive:disabled {
261
- background: var(--button-background-disabled);
262
- color: var(--button-color-disabled);
276
+ background: var(--color-button-background-disabled);
277
+ color: var(--color-button-foreground-disabled);
263
278
  cursor: not-allowed;
264
279
  }
265
280
 
@@ -267,10 +282,10 @@ input,
267
282
  textarea,
268
283
  select,
269
284
  .textarea-grow-wrap__mirror {
270
- background: var(--background);
271
- color: var(--color);
285
+ background: var(--color-background-primary);
286
+ color: var(--color-foreground-primary);
272
287
  font-family: var(--font-sans);
273
- border: 1px solid var(--input-border-color);
288
+ border: 1px solid var(--color-separator-input);
274
289
  padding: 0.5rem;
275
290
  display: block;
276
291
  width: 100%;
@@ -279,18 +294,24 @@ select,
279
294
  border-radius: 0;
280
295
  }
281
296
 
297
+ input::placeholder,
298
+ textarea::placeholder,
299
+ select::placeholder {
300
+ color: var(--color-placeholder);
301
+ }
302
+
282
303
  input:disabled,
283
304
  textarea:disabled,
284
305
  select:disabled {
285
- border-color: var(--disabled-color);
286
- color: var(--disabled-color);
306
+ border-color: var(--color-disabled);
307
+ color: var(--color-disabled);
287
308
  }
288
309
 
289
310
  input[aria-invalid="true"]:not(:disabled),
290
311
  textarea[aria-invalid="true"]:not(:disabled),
291
312
  select[aria-invalid="true"]:not(:disabled) {
292
- border-color: var(--error-color);
293
- color: var(--error-color);
313
+ border-color: var(--color-error);
314
+ color: var(--color-error);
294
315
  }
295
316
 
296
317
  /* https://css-tricks.com/the-cleanest-trick-for-autogrowing-textareas/ */
@@ -318,7 +339,7 @@ select[aria-invalid="true"]:not(:disabled) {
318
339
  height: 1rem;
319
340
  width: 1rem;
320
341
  margin: 0.25rem 0.5rem 0 0;
321
- border: 1px solid var(--color);
342
+ border: 1px solid var(--color-foreground-primary);
322
343
  flex: none;
323
344
  border-radius: 0;
324
345
  -webkit-appearance: none;
@@ -326,7 +347,7 @@ select[aria-invalid="true"]:not(:disabled) {
326
347
  }
327
348
 
328
349
  :is(input[type="checkbox"], input[type="radio"]):disabled {
329
- border-color: var(--disabled-color);
350
+ border-color: var(--color-disabled);
330
351
  }
331
352
 
332
353
  input[type="radio"] {
@@ -334,11 +355,11 @@ input[type="radio"] {
334
355
  }
335
356
 
336
357
  :is(input[type="checkbox"], input[type="radio"]):checked {
337
- background: var(--color);
358
+ background: var(--color-foreground-primary);
338
359
  }
339
360
 
340
361
  :is(input[type="checkbox"], input[type="radio"]):checked:disabled {
341
- background: var(--disabled-color);
362
+ background: var(--color-disabled);
342
363
  }
343
364
 
344
365
  :is(input[type="checkbox"], input[type="radio"]):checked::before {
@@ -351,7 +372,7 @@ input[type="checkbox"]:checked::before {
351
372
  border-style: solid;
352
373
  width: 0.8rem;
353
374
  height: 0.4rem;
354
- border-color: var(--background);
375
+ border-color: var(--color-background-primary);
355
376
  transform: rotate(-45deg);
356
377
  margin: calc(-0.325rem) 0 0 calc(-0.4rem);
357
378
  }
@@ -359,7 +380,7 @@ input[type="checkbox"]:checked::before {
359
380
  input[type="radio"]:checked::before {
360
381
  width: 0.5rem;
361
382
  height: 0.5rem;
362
- background-color: var(--background);
383
+ background-color: var(--color-background-primary);
363
384
  border-radius: 50%;
364
385
  margin: -0.25rem;
365
386
  }
@@ -370,7 +391,7 @@ input[type="radio"]:checked::before {
370
391
 
371
392
  :is(input[type="checkbox"], input[type="radio"]):disabled + label,
372
393
  :is(input[type="checkbox"], input[type="radio"]):disabled + * label {
373
- color: var(--disabled-color);
394
+ color: var(--color-disabled);
374
395
  }
375
396
 
376
397
  .field--option {
@@ -398,22 +419,22 @@ input[type="radio"]:checked::before {
398
419
  height: 0.5rem;
399
420
  border-width: 0 1px 1px 0;
400
421
  border-style: solid;
401
- border-color: var(--color);
422
+ border-color: var(--color-foreground-primary);
402
423
  transform: rotate(45deg);
403
424
  pointer-events: none;
404
425
  }
405
426
 
406
427
  .select-wrapper:has(> select:disabled)::after {
407
- border-color: var(--tertiary-color);
428
+ border-color: var(--color-foreground-tertiary);
408
429
  }
409
430
 
410
431
  select.no-selection {
411
- color: var(--tertiary-color);
432
+ color: var(--color-foreground-tertiary);
412
433
  }
413
434
 
414
435
  select:disabled {
415
- color: var(--disabled-color);
416
- border-color: var(--disabled-color);
436
+ color: var(--color-disabled);
437
+ border-color: var(--color-disabled);
417
438
  }
418
439
 
419
440
  select {
@@ -476,7 +497,7 @@ select {
476
497
  display: grid;
477
498
  gap: 0.125rem 1.5rem;
478
499
  padding: 0.5rem 0;
479
- border-top: 1px solid var(--separator-color);
500
+ border-top: 1px solid var(--color-separator);
480
501
  grid-template-columns: 1fr auto;
481
502
  grid-template-rows: auto 1fr;
482
503
  grid-template-areas: "title side" "subtitle side" ". side";
@@ -498,8 +519,8 @@ select {
498
519
  }
499
520
 
500
521
  .entries-item--created {
501
- color: var(--highlight-color);
502
- background: var(--highlight-background);
522
+ color: var(--color-highlight-foreground);
523
+ background: var(--color-highlight-background);
503
524
  }
504
525
 
505
526
  .entries-item h2 {
@@ -521,7 +542,7 @@ select {
521
542
  }
522
543
 
523
544
  .entries-item__title p {
524
- color: var(--secondary-color);
545
+ color: var(--color-foreground-secondary);
525
546
  margin: 0.125rem 0 0;
526
547
  }
527
548
 
@@ -530,7 +551,7 @@ select {
530
551
  }
531
552
 
532
553
  .entries-item__subtitle {
533
- color: var(--secondary-color);
554
+ color: var(--color-foreground-secondary);
534
555
  margin: 0;
535
556
  padding: 0;
536
557
  white-space: nowrap;
@@ -586,7 +607,7 @@ select {
586
607
 
587
608
  .validation-errors {
588
609
  margin: 0.5rem 0 0;
589
- color: var(--error-color);
610
+ color: var(--color-error);
590
611
  font-size: 0.8rem;
591
612
  }
592
613
 
@@ -600,18 +621,18 @@ select {
600
621
  }
601
622
 
602
623
  .field--container {
603
- border: 1px solid var(--separator-color);
604
- /* border-left-color: var(--color); */
624
+ border: 1px solid var(--color-separator);
625
+ /* border-left-color: var(--color-foreground-primary); */
605
626
  border-left-width: 4px;
606
627
  padding: 0.5rem 0.5rem 0.5rem 1rem;
607
628
  }
608
629
 
609
630
  .field--container.field--disabled {
610
- color: var(--disabled-color);
631
+ color: var(--color-disabled);
611
632
  }
612
633
 
613
634
  .field--container.field--disabled .comment {
614
- color: var(--disabled-color);
635
+ color: var(--color-disabled);
615
636
  }
616
637
 
617
638
  form > .field--container {
@@ -629,7 +650,7 @@ form > .field--container {
629
650
  .field--container > ul > li,
630
651
  .field--container > ol > li {
631
652
  padding-block: 0.5rem;
632
- border-top: 1px solid var(--separator-color);
653
+ border-top: 1px solid var(--color-separator);
633
654
  display: block;
634
655
  }
635
656
 
@@ -670,37 +691,37 @@ form > .field--container {
670
691
  .editor--markdown textarea {
671
692
  color: transparent;
672
693
  background: transparent;
673
- caret-color: var(--color);
694
+ caret-color: var(--color-foreground-primary);
674
695
  }
675
696
 
676
697
  .editor-highlighting strong {
677
- color: var(--highlight-color-bold);
698
+ color: var(--color-syntax-bold);
678
699
  }
679
700
 
680
701
  .editor-highlighting em {
681
- color: var(--highlight-color-italic);
702
+ color: var(--color-syntax-italic);
682
703
  }
683
704
 
684
705
  .editor-highlighting .list-item-marker {
685
- color: var(--highlight-color-list-item-marker);
706
+ color: var(--color-syntax-list-item-marker);
686
707
  }
687
708
 
688
709
  .editor-highlighting .table-marker {
689
- color: var(--highlight-color-table-marker);
710
+ color: var(--color-syntax-table-marker);
690
711
  }
691
712
 
692
713
  .editor-highlighting .heading-marker {
693
- color: var(--highlight-color-heading-marker);
714
+ color: var(--color-syntax-heading-marker);
694
715
  }
695
716
 
696
717
  .preview .attributed {
697
718
  text-decoration-line: underline;
698
719
  text-decoration-style: dashed;
699
- text-decoration-color: var(--highlight-color-attributed);
720
+ text-decoration-color: var(--color-syntax-attributed);
700
721
  }
701
722
 
702
723
  .editor-highlighting .attributed {
703
- color: var(--highlight-color-attributed);
724
+ color: var(--color-syntax-attributed);
704
725
  }
705
726
 
706
727
  .editor-highlighting .attributed__name {
@@ -713,53 +734,61 @@ form > .field--container {
713
734
 
714
735
  .help {
715
736
  font-size: 0.8rem;
716
- color: var(--secondary-color);
737
+ color: var(--color-foreground-secondary);
717
738
  margin: 0.25rem 0 0;
718
739
  }
719
740
 
720
741
  :disabled + .help,
721
742
  :disabled + .help a {
722
- color: var(--disabled-color);
743
+ color: var(--color-disabled);
723
744
  }
724
745
 
725
- .field--string .preview {
746
+ .preview {
726
747
  padding: 1rem;
727
- background: var(--markdown-background);
748
+ background: var(--color-background-secondary);
728
749
  flex: 1 1 0;
729
750
  }
730
751
 
731
- .field--string .preview p {
752
+ .preview p {
732
753
  margin: 0.5rem 0 0;
733
754
  }
734
755
 
735
- .field--string .preview > :first-child {
756
+ .preview > :first-child {
736
757
  margin-top: 0;
737
758
  }
738
759
 
739
- .field--string .preview > :last-child {
760
+ .preview > :last-child {
740
761
  margin-bottom: 0;
741
762
  }
742
763
 
743
- .field--string .preview table {
764
+ .preview table {
744
765
  border-collapse: collapse;
745
766
  margin: 0.5rem 0;
746
767
  }
747
768
 
748
- .field--string .preview table :is(th, td) {
769
+ .preview table caption {
770
+ padding: 0.25rem 0;
771
+ }
772
+
773
+ .preview table :is(th, td, caption) {
749
774
  vertical-align: top;
750
775
  padding: 0.25rem 0.5rem;
751
776
  }
752
777
 
753
- .field--string .preview table :is(th, td):first-child {
778
+ .preview table :is(th, td):first-child {
754
779
  padding-left: 0;
755
780
  }
756
781
 
757
- .field--string .preview table :is(th, td):last-child {
782
+ .preview table :is(th, td):last-child {
758
783
  padding-right: 0;
759
784
  }
760
785
 
761
- .field--string .preview table tbody tr {
762
- border-top: 1px solid var(--tertiary-color);
786
+ .preview table tr {
787
+ border-top: 1px solid var(--color-separator);
788
+ }
789
+
790
+ .preview table thead:first-child tr {
791
+ border-top: none;
763
792
  }
764
793
 
765
794
  .container-item {
@@ -780,7 +809,7 @@ form > .field--container {
780
809
  }
781
810
 
782
811
  .container-item-title .id {
783
- color: var(--tertiary-color);
812
+ color: var(--color-foreground-tertiary);
784
813
  font-size: 0.8rem;
785
814
  font-family: var(--font-mono);
786
815
  }
@@ -809,7 +838,7 @@ button[type="submit"] {
809
838
  }
810
839
 
811
840
  .description {
812
- color: var(--secondary-color);
841
+ color: var(--color-foreground-secondary);
813
842
  }
814
843
 
815
844
  :is(.header-with-btns, h1) + .description {
@@ -819,7 +848,7 @@ button[type="submit"] {
819
848
  .comment {
820
849
  font-size: 0.8rem;
821
850
  line-height: 1.4;
822
- color: var(--secondary-color);
851
+ color: var(--color-foreground-secondary);
823
852
  margin: 0.5rem 0 0;
824
853
  max-width: 55em;
825
854
  }
@@ -842,7 +871,7 @@ main:has(.form-footer) {
842
871
  position: sticky;
843
872
  bottom: 0;
844
873
  padding-bottom: 1.5rem;
845
- background: var(--background);
874
+ background: var(--color-background-primary);
846
875
  }
847
876
 
848
877
  .git-status {
@@ -860,38 +889,33 @@ main:has(.form-footer) {
860
889
  }
861
890
 
862
891
  .git-status.git-status--U {
863
- color: var(--git-status-untracked-color);
864
- background: var(--git-status-untracked-background);
892
+ color: var(--git-status-untracked-foreground-color);
893
+ background: var(--git-status-untracked-background-color);
865
894
  }
866
895
 
867
896
  .git-status.git-status--A {
868
- color: var(--git-status-added-color);
869
- background: var(--git-status-added-background);
897
+ color: var(--git-status-added-foreground-color);
898
+ background: var(--git-status-added-background-color);
870
899
  }
871
900
 
872
901
  .git-status.git-status--M {
873
- color: var(--git-status-modified-color);
874
- background: var(--git-status-modified-background);
902
+ color: var(--git-status-modified-foreground-color);
903
+ background: var(--git-status-modified-background-color);
875
904
  }
876
905
 
877
906
  .git-status.git-status--D {
878
- color: var(--git-status-deleted-color);
879
- background: var(--git-status-deleted-background);
907
+ color: var(--git-status-deleted-foreground-color);
908
+ background: var(--git-status-deleted-background-color);
880
909
  }
881
910
 
882
911
  .git-status.git-status--R {
883
- color: var(--git-status-renamed-color);
884
- background: var(--git-status-renamed-background);
912
+ color: var(--git-status-renamed-foreground-color);
913
+ background: var(--git-status-renamed-background-color);
885
914
  }
886
915
 
887
916
  aside.git {
888
917
  grid-area: aside;
889
- position: absolute;
890
- top: 5rem;
891
- right: 0;
892
- width: 30rem;
893
- max-width: calc(100% - 1.5rem);
894
- max-height: calc(100% - 6.5rem);
918
+ display: none;
895
919
  }
896
920
 
897
921
  aside.git h2 {
@@ -900,14 +924,10 @@ aside.git h2 {
900
924
 
901
925
  @media (min-width: 80rem) {
902
926
  aside.git {
927
+ display: block;
903
928
  width: 30rem;
904
- border-left: 1px solid var(--separator-color);
929
+ border-left: 1px solid var(--color-separator);
905
930
  padding-left: 1rem;
906
- top: unset;
907
- right: unset;
908
- position: static;
909
- max-height: none;
910
- max-width: none;
911
931
  }
912
932
 
913
933
  aside.git h2 {
@@ -919,121 +939,108 @@ aside.git h2 {
919
939
  }
920
940
  }
921
941
 
922
- aside.git h3 {
942
+ .git-files h3 {
923
943
  font-size: 1.25rem;
924
944
  margin: 0;
925
945
  }
926
946
 
927
- aside.git ul {
947
+ .git-files ul {
928
948
  list-style-type: " ";
929
949
  padding: 0;
930
950
  margin: 0;
931
951
  display: block;
932
952
  }
933
953
 
934
- aside.git .git-entity-list-item > .title {
935
- margin: 1rem 0 0.5rem;
936
- }
937
-
938
- aside.git .git-instance-list-item {
939
- display: flex;
940
- justify-content: space-between;
941
- margin: 0.25rem 0 0;
942
- gap: 0.25rem;
954
+ .git-files .git-entity-list-item > .title {
955
+ margin: 1.5rem 0 0.75rem;
943
956
  }
944
957
 
945
- aside.git li .title {
958
+ .git-files li .title {
946
959
  display: block;
947
960
  margin: 0.25rem 0;
948
961
  flex: 1 1 0;
949
962
  }
950
963
 
951
- aside.git li.git-entity-list-item > .title {
964
+ .git-files li.git-entity-list-item > .title {
952
965
  font-weight: 600;
953
966
  }
954
967
 
955
- aside.git li button {
968
+ .git-files li button {
956
969
  padding: 0 0.5rem;
957
970
  line-height: 1.75rem;
958
971
  height: 1.75rem;
959
972
  }
960
973
 
961
- aside.git .git-section-title {
974
+ .git-files .git-section-title {
962
975
  display: flex;
963
976
  justify-content: space-between;
964
977
  align-items: center;
965
978
  gap: 0.5rem;
966
- margin: 1rem 0 0.5rem;
979
+ margin: 2rem 0 1rem;
967
980
  }
968
981
 
969
- aside.git .git-section-title h2 {
982
+ .git-files .git-section-title h2 {
970
983
  margin: 0;
971
984
  }
972
985
 
973
- aside.git p.no-changes {
974
- color: var(--tertiary-color);
986
+ .git-files p.no-changes {
987
+ color: var(--color-foreground-tertiary);
975
988
  margin: 0;
976
989
  }
977
990
 
978
- aside.git .commit,
979
- aside.git .sync,
980
- aside.git .branch {
981
- display: flex;
982
- gap: 0.5rem;
991
+ .git-branches ul {
992
+ padding: 0;
993
+ margin: 0;
983
994
  }
984
995
 
985
- aside.git .sync,
986
- aside.git .branch {
987
- margin-bottom: 1rem;
996
+ .git-branches ul li {
997
+ display: flex;
998
+ align-items: start;
999
+ margin-top: 0.5rem;
988
1000
  }
989
1001
 
990
- aside.git .commit input,
991
- aside.git .branch .select-wrapper {
1002
+ .branch__full-name {
1003
+ text-overflow: ellipsis;
1004
+ overflow: hidden;
1005
+ white-space: nowrap;
992
1006
  flex: 1 1 0;
993
1007
  }
994
1008
 
995
- .git-overlay {
996
- display: none;
997
- position: absolute;
998
- right: 1.5rem;
999
- box-shadow: 0 0.5rem 2rem var(--shadow-color);
1000
- z-index: 1000;
1001
- padding: 1rem;
1002
- background: var(--background);
1003
- overflow-y: auto;
1004
- max-height: calc(90vh - 5rem);
1005
- }
1006
-
1007
- @media (min-width: 80rem) {
1008
- .git-overlay {
1009
- display: block;
1010
- position: static;
1011
- box-shadow: none;
1012
- padding: 0.5rem 0 0;
1013
- max-height: none;
1014
- }
1009
+ .branch__origin {
1010
+ color: var(--color-foreground-secondary);
1015
1011
  }
1016
1012
 
1017
- .git-overlay.git-overlay--open {
1018
- display: block;
1013
+ .branch__current-indicator {
1014
+ color: var(--color-foreground-secondary);
1015
+ flex: none;
1019
1016
  }
1020
1017
 
1021
1018
  dialog {
1022
- background: var(--background);
1023
- color: var(--color);
1019
+ background: var(--color-background-primary);
1020
+ color: var(--color-foreground-primary);
1024
1021
  border: none;
1025
- box-shadow: 0 0.5rem 2rem var(--shadow-color);
1022
+ box-shadow: 0 0.5rem 2rem var(--color-shadow);
1026
1023
  padding: 1.6rem 1.5rem;
1027
1024
  max-height: calc(100% - 2rem);
1028
1025
  max-width: calc(100% - 2rem);
1026
+ overscroll-behavior: contain;
1029
1027
  }
1030
1028
 
1031
1029
  dialog::backdrop {
1032
1030
  background: rgba(0, 0, 0, 0.5);
1031
+ transition: background 0.25s ease-in-out;
1032
+ }
1033
+
1034
+ dialog header {
1035
+ display: flex;
1036
+ align-items: center;
1037
+ gap: 0.5rem;
1038
+ margin-bottom: 1.6rem;
1033
1039
  }
1034
1040
 
1035
1041
  dialog header :is(h1, h2, h3, h4, h5, h6) {
1036
1042
  margin: 0;
1043
+ flex: 1 1 0;
1037
1044
  }
1038
1045
 
1039
1046
  dialog.settings {
@@ -1049,6 +1056,17 @@ dialog.settings section.locale-settings ol li:not(:first-child) {
1049
1056
  margin-top: 0.5rem;
1050
1057
  }
1051
1058
 
1059
+ dialog.git {
1060
+ max-width: min(calc(100% - 2rem), 36rem);
1061
+ width: 100%;
1062
+ }
1063
+
1064
+ @media (min-width: 80rem) {
1065
+ dialog.git header .git__tab--files {
1066
+ display: none;
1067
+ }
1068
+ }
1069
+
1052
1070
  .locale-content {
1053
1071
  display: flex;
1054
1072
  gap: 0.25rem;
@@ -1058,3 +1076,75 @@ dialog.settings section.locale-settings ol li:not(:first-child) {
1058
1076
  .locale-content span {
1059
1077
  flex: 1 1 0;
1060
1078
  }
1079
+
1080
+ .form-row {
1081
+ display: flex;
1082
+ gap: 0.5rem;
1083
+ flex-wrap: wrap;
1084
+ margin-block: 1rem;
1085
+ }
1086
+
1087
+ .form-row--sides {
1088
+ justify-content: space-between;
1089
+ }
1090
+
1091
+ .form-row--compact {
1092
+ gap: 0.25rem;
1093
+ margin-block: 0.5rem;
1094
+ }
1095
+
1096
+ .form-row__group {
1097
+ display: flex;
1098
+ gap: 0.5rem;
1099
+ }
1100
+
1101
+ .form-row--compact .form-row__group {
1102
+ gap: 0.25rem;
1103
+ }
1104
+
1105
+ .form-row__text {
1106
+ padding-block: 0.5rem;
1107
+ }
1108
+
1109
+ .form-row--compact .form-row__text {
1110
+ padding-block: 0.175rem;
1111
+ }
1112
+
1113
+ .form-row__fill {
1114
+ flex: 1 1 0;
1115
+ }
1116
+
1117
+ .form-row--compact button {
1118
+ padding: 0.175rem 0.5rem;
1119
+ height: 1.75rem;
1120
+ }
1121
+
1122
+ .loading-overlay {
1123
+ position: fixed;
1124
+ top: 0;
1125
+ left: 0;
1126
+ width: 100vw;
1127
+ height: 100vh;
1128
+ background: rgba(0, 0, 0, 0.5);
1129
+ color: white;
1130
+ display: flex;
1131
+ align-items: center;
1132
+ justify-content: center;
1133
+ font-size: 2rem;
1134
+ z-index: 1000;
1135
+ font-weight: 200;
1136
+ letter-spacing: 0.05em;
1137
+ transition: opacity 0.25s ease-in-out;
1138
+ opacity: 0;
1139
+ pointer-events: none;
1140
+ }
1141
+
1142
+ #app:not(:has(dialog[open])) > .loading-overlay--open,
1143
+ dialog[open] > .loading-overlay--open {
1144
+ opacity: 1;
1145
+ pointer-events: auto;
1146
+ }
1147
+
1148
+ dialog[open]:has(> .loading-overlay--open)::backdrop {
1149
+ background: rgba(0, 0, 0, 0.75);
1150
+ }