@skygraph/styles 0.6.4 → 0.6.6

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 (68) hide show
  1. package/README.md +98 -98
  2. package/components/autocomplete.css +35 -35
  3. package/components/autofield.css +67 -67
  4. package/components/avatar.css +37 -37
  5. package/components/badge.css +102 -102
  6. package/components/breadcrumb.css +29 -29
  7. package/components/button.css +181 -181
  8. package/components/calendar.css +408 -408
  9. package/components/carousel.css +102 -102
  10. package/components/cascader.css +380 -380
  11. package/components/charts.css +408 -408
  12. package/components/checkbox.css +114 -114
  13. package/components/collapse.css +166 -166
  14. package/components/colorpicker.css +252 -252
  15. package/components/context-menu.css +95 -95
  16. package/components/descriptions.css +82 -82
  17. package/components/diagram.css +435 -435
  18. package/components/drawer.css +124 -124
  19. package/components/dropdown.css +110 -110
  20. package/components/empty.css +25 -25
  21. package/components/event-timeline.css +134 -134
  22. package/components/field.css +35 -35
  23. package/components/form.css +115 -115
  24. package/components/gantt.css +166 -166
  25. package/components/input-number.css +76 -76
  26. package/components/input-password.css +104 -104
  27. package/components/input.css +211 -211
  28. package/components/list.css +366 -366
  29. package/components/mentions.css +54 -54
  30. package/components/menu.css +326 -326
  31. package/components/modal.css +1 -0
  32. package/components/notification.css +128 -128
  33. package/components/pagination.css +162 -162
  34. package/components/popconfirm.css +95 -95
  35. package/components/progress.css +116 -116
  36. package/components/radio.css +95 -95
  37. package/components/rate.css +48 -48
  38. package/components/resource-calendar.css +224 -224
  39. package/components/result.css +45 -45
  40. package/components/schema-form-editor.css +433 -433
  41. package/components/search-input.css +112 -112
  42. package/components/segmented.css +76 -76
  43. package/components/select.css +181 -181
  44. package/components/skeleton.css +72 -72
  45. package/components/slider.css +51 -51
  46. package/components/spin.css +102 -102
  47. package/components/steps.css +194 -194
  48. package/components/switch.css +75 -75
  49. package/components/table.css +9 -1
  50. package/components/tabs.css +137 -137
  51. package/components/tag.css +61 -61
  52. package/components/textarea.css +22 -22
  53. package/components/timeline.css +169 -169
  54. package/components/timepicker.css +224 -224
  55. package/components/tooltip.css +91 -91
  56. package/components/transfer.css +140 -140
  57. package/components/tree.css +601 -601
  58. package/components/treeselect.css +221 -221
  59. package/components/upload.css +124 -124
  60. package/index.css +70 -70
  61. package/index.d.ts +9 -9
  62. package/package.json +1 -1
  63. package/print.css +88 -88
  64. package/reset.css +17 -17
  65. package/themes/dark.css +17 -17
  66. package/themes/default.css +14 -14
  67. package/tokens.css +310 -310
  68. package/transitions.css +158 -158
@@ -1,433 +1,433 @@
1
- /* SchemaFormEditor — visual constructor for SchemaForm. */
2
-
3
- .sg-sfe {
4
- /* Component-local variables. Override via inline style or a wrapper rule
5
- * to rebrand the editor. Each falls back to a global token so theming
6
- * cascades automatically. */
7
- --sg-sfe-bg: var(--sg-color-bg);
8
- --sg-sfe-bg-secondary: var(--sg-color-bg-secondary);
9
- --sg-sfe-bg-elevated: var(--sg-color-bg-elevated);
10
- --sg-sfe-border: var(--sg-color-border);
11
- --sg-sfe-border-secondary: var(--sg-color-border-secondary);
12
- --sg-sfe-text: var(--sg-color-text);
13
- --sg-sfe-text-secondary: var(--sg-color-text-secondary);
14
- --sg-sfe-primary: var(--sg-color-primary);
15
- --sg-sfe-primary-bg: var(--sg-color-primary-bg);
16
- --sg-sfe-error: var(--sg-color-error);
17
- --sg-sfe-radius: var(--sg-border-radius);
18
- --sg-sfe-pad-sm: var(--sg-padding-sm);
19
- --sg-sfe-pad-md: var(--sg-padding-md);
20
- --sg-sfe-pad-lg: var(--sg-padding-lg);
21
- --sg-sfe-shadow-sm: var(--sg-shadow-sm);
22
- --sg-sfe-font-size: var(--sg-font-size);
23
- --sg-sfe-font-size-sm: var(--sg-font-size-sm);
24
- --sg-sfe-palette-width: 240px;
25
- --sg-sfe-inspector-width: 280px;
26
-
27
- display: flex;
28
- flex-direction: column;
29
- width: 100%;
30
- background: var(--sg-sfe-bg);
31
- border: 1px solid var(--sg-sfe-border);
32
- border-radius: var(--sg-sfe-radius);
33
- color: var(--sg-sfe-text);
34
- font-size: var(--sg-sfe-font-size);
35
- overflow: hidden;
36
- }
37
-
38
- /* Toolbar (top) ----------------------------------------------------------- */
39
- .sg-sfe-toolbar {
40
- display: flex;
41
- align-items: center;
42
- gap: var(--sg-sfe-pad-sm);
43
- padding: var(--sg-sfe-pad-sm) var(--sg-sfe-pad-md);
44
- background: var(--sg-sfe-bg-secondary);
45
- border-bottom: 1px solid var(--sg-sfe-border-secondary);
46
- }
47
-
48
- .sg-sfe-toolbar-title {
49
- font-weight: 600;
50
- font-size: var(--sg-sfe-font-size);
51
- }
52
-
53
- .sg-sfe-toolbar-btn {
54
- appearance: none;
55
- background: transparent;
56
- border: 1px solid var(--sg-sfe-border);
57
- border-radius: var(--sg-sfe-radius);
58
- padding: 4px 12px;
59
- font-size: var(--sg-sfe-font-size-sm);
60
- color: var(--sg-sfe-text);
61
- cursor: pointer;
62
- transition: background var(--sg-transition-duration) var(--sg-transition-timing);
63
- }
64
-
65
- .sg-sfe-toolbar-btn:hover:not(:disabled) {
66
- background: var(--sg-color-bg-hover);
67
- }
68
-
69
- .sg-sfe-toolbar-btn:disabled {
70
- opacity: 0.4;
71
- cursor: not-allowed;
72
- }
73
-
74
- /* Body (palette / center / inspector) ------------------------------------- */
75
- .sg-sfe-body {
76
- display: grid;
77
- grid-template-columns: var(--sg-sfe-palette-width) 1fr var(--sg-sfe-inspector-width);
78
- flex: 1;
79
- min-height: 480px;
80
- overflow: hidden;
81
- }
82
-
83
- /* Palette (left) ---------------------------------------------------------- */
84
- .sg-sfe-palette {
85
- display: flex;
86
- flex-direction: column;
87
- gap: var(--sg-sfe-pad-sm);
88
- padding: var(--sg-sfe-pad-md);
89
- background: var(--sg-sfe-bg-secondary);
90
- border-right: 1px solid var(--sg-sfe-border-secondary);
91
- overflow-y: auto;
92
- }
93
-
94
- .sg-sfe-palette-title {
95
- font-weight: 600;
96
- font-size: var(--sg-sfe-font-size-sm);
97
- color: var(--sg-sfe-text-secondary);
98
- text-transform: uppercase;
99
- letter-spacing: 0.05em;
100
- }
101
-
102
- .sg-sfe-palette-list {
103
- display: flex;
104
- flex-direction: column;
105
- gap: 6px;
106
- }
107
-
108
- .sg-sfe-palette-item {
109
- display: flex;
110
- align-items: center;
111
- gap: var(--sg-sfe-pad-sm);
112
- padding: var(--sg-sfe-pad-sm);
113
- background: var(--sg-sfe-bg-elevated);
114
- border: 1px solid var(--sg-sfe-border);
115
- border-radius: var(--sg-sfe-radius);
116
- cursor: grab;
117
- user-select: none;
118
- transition:
119
- border-color var(--sg-transition-duration) var(--sg-transition-timing),
120
- box-shadow var(--sg-transition-duration) var(--sg-transition-timing);
121
- }
122
-
123
- .sg-sfe-palette-item:hover,
124
- .sg-sfe-palette-item:focus-visible {
125
- border-color: var(--sg-sfe-primary);
126
- box-shadow: var(--sg-sfe-shadow-sm);
127
- outline: none;
128
- }
129
-
130
- .sg-sfe-palette-item:active {
131
- cursor: grabbing;
132
- }
133
-
134
- .sg-sfe-palette-item-glyph {
135
- display: inline-flex;
136
- align-items: center;
137
- justify-content: center;
138
- width: 24px;
139
- height: 24px;
140
- background: var(--sg-sfe-primary-bg);
141
- color: var(--sg-sfe-primary);
142
- border-radius: var(--sg-sfe-radius);
143
- font-weight: 600;
144
- flex-shrink: 0;
145
- }
146
-
147
- .sg-sfe-palette-item-body {
148
- display: flex;
149
- flex-direction: column;
150
- min-width: 0;
151
- }
152
-
153
- .sg-sfe-palette-item-label {
154
- font-weight: 500;
155
- font-size: var(--sg-sfe-font-size);
156
- }
157
-
158
- .sg-sfe-palette-item-hint {
159
- font-size: var(--sg-sfe-font-size-sm);
160
- color: var(--sg-sfe-text-secondary);
161
- }
162
-
163
- /* Center (canvas + bottom tabs) ------------------------------------------ */
164
- .sg-sfe-center {
165
- display: flex;
166
- flex-direction: column;
167
- min-width: 0;
168
- min-height: 0;
169
- overflow: hidden;
170
- background: var(--sg-sfe-bg);
171
- }
172
-
173
- /* Canvas ------------------------------------------------------------------ */
174
- .sg-sfe-canvas {
175
- flex: 1;
176
- padding: var(--sg-sfe-pad-lg);
177
- overflow-y: auto;
178
- min-height: 240px;
179
- }
180
-
181
- .sg-sfe-canvas[data-empty='true'] {
182
- display: flex;
183
- align-items: center;
184
- justify-content: center;
185
- }
186
-
187
- .sg-sfe-canvas-empty {
188
- width: 100%;
189
- min-height: 200px;
190
- display: flex;
191
- align-items: center;
192
- justify-content: center;
193
- border: 2px dashed var(--sg-sfe-border);
194
- border-radius: var(--sg-sfe-radius);
195
- color: var(--sg-sfe-text-secondary);
196
- font-size: var(--sg-sfe-font-size);
197
- cursor: default;
198
- }
199
-
200
- .sg-sfe-canvas-form {
201
- display: flex;
202
- flex-direction: column;
203
- gap: var(--sg-sfe-pad-md);
204
- }
205
-
206
- .sg-sfe-canvas-field {
207
- position: relative;
208
- padding: var(--sg-sfe-pad-sm);
209
- border: 1px solid transparent;
210
- border-radius: var(--sg-sfe-radius);
211
- cursor: pointer;
212
- transition:
213
- border-color var(--sg-transition-duration) var(--sg-transition-timing),
214
- background var(--sg-transition-duration) var(--sg-transition-timing);
215
- }
216
-
217
- .sg-sfe-canvas-field:hover {
218
- border-color: var(--sg-sfe-border);
219
- background: var(--sg-sfe-bg-secondary);
220
- }
221
-
222
- .sg-sfe-canvas-field-selected {
223
- border-color: var(--sg-sfe-primary);
224
- background: var(--sg-sfe-primary-bg);
225
- }
226
-
227
- .sg-sfe-canvas-field-inner {
228
- pointer-events: none;
229
- display: flex;
230
- flex-direction: column;
231
- gap: 4px;
232
- }
233
-
234
- .sg-sfe-canvas-field-help {
235
- font-size: var(--sg-sfe-font-size-sm);
236
- color: var(--sg-sfe-text-secondary);
237
- }
238
-
239
- .sg-sfe-canvas-field-toolbar {
240
- position: absolute;
241
- top: -16px;
242
- right: 8px;
243
- display: flex;
244
- gap: 4px;
245
- padding: 2px 4px;
246
- background: var(--sg-sfe-bg-elevated);
247
- border: 1px solid var(--sg-sfe-border);
248
- border-radius: var(--sg-sfe-radius);
249
- box-shadow: var(--sg-sfe-shadow-sm);
250
- z-index: var(--sg-z-sticky);
251
- }
252
-
253
- .sg-sfe-canvas-field-toolbar-btn {
254
- appearance: none;
255
- background: transparent;
256
- border: none;
257
- padding: 2px 6px;
258
- font-size: var(--sg-sfe-font-size-sm);
259
- color: var(--sg-sfe-text);
260
- cursor: pointer;
261
- border-radius: var(--sg-sfe-radius);
262
- }
263
-
264
- .sg-sfe-canvas-field-toolbar-btn:hover {
265
- background: var(--sg-color-bg-hover);
266
- }
267
-
268
- .sg-sfe-canvas-field-toolbar-btn-danger:hover {
269
- background: var(--sg-sfe-error);
270
- color: var(--sg-color-white);
271
- }
272
-
273
- .sg-sfe-canvas-drop-indicator {
274
- height: 2px;
275
- background: var(--sg-sfe-primary);
276
- border-radius: var(--sg-sfe-radius);
277
- margin: 4px 0;
278
- }
279
-
280
- /* Inspector (right) ------------------------------------------------------- */
281
- .sg-sfe-inspector {
282
- display: flex;
283
- flex-direction: column;
284
- gap: var(--sg-sfe-pad-sm);
285
- padding: var(--sg-sfe-pad-md);
286
- background: var(--sg-sfe-bg-secondary);
287
- border-left: 1px solid var(--sg-sfe-border-secondary);
288
- overflow-y: auto;
289
- }
290
-
291
- .sg-sfe-inspector-title {
292
- font-weight: 600;
293
- font-size: var(--sg-sfe-font-size-sm);
294
- color: var(--sg-sfe-text-secondary);
295
- text-transform: uppercase;
296
- letter-spacing: 0.05em;
297
- }
298
-
299
- .sg-sfe-inspector-empty {
300
- color: var(--sg-sfe-text-secondary);
301
- font-size: var(--sg-sfe-font-size-sm);
302
- padding: var(--sg-sfe-pad-md) 0;
303
- }
304
-
305
- .sg-sfe-inspector-row {
306
- display: flex;
307
- flex-direction: column;
308
- gap: 4px;
309
- }
310
-
311
- .sg-sfe-inspector-row-label {
312
- font-size: var(--sg-sfe-font-size-sm);
313
- color: var(--sg-sfe-text-secondary);
314
- font-weight: 500;
315
- }
316
-
317
- .sg-sfe-inspector-input {
318
- appearance: none;
319
- width: 100%;
320
- padding: 4px 8px;
321
- font-size: var(--sg-sfe-font-size);
322
- border: 1px solid var(--sg-sfe-border);
323
- border-radius: var(--sg-sfe-radius);
324
- background: var(--sg-sfe-bg);
325
- color: var(--sg-sfe-text);
326
- }
327
-
328
- .sg-sfe-inspector-input:focus {
329
- outline: none;
330
- border-color: var(--sg-sfe-primary);
331
- box-shadow: 0 0 0 2px var(--sg-sfe-primary-bg);
332
- }
333
-
334
- .sg-sfe-inspector-checkbox {
335
- display: flex;
336
- align-items: center;
337
- gap: 6px;
338
- font-size: var(--sg-sfe-font-size-sm);
339
- color: var(--sg-sfe-text);
340
- cursor: pointer;
341
- }
342
-
343
- .sg-sfe-inspector-options {
344
- display: flex;
345
- flex-direction: column;
346
- gap: 6px;
347
- }
348
-
349
- .sg-sfe-inspector-option {
350
- display: grid;
351
- grid-template-columns: 1fr 1fr 24px;
352
- gap: 4px;
353
- }
354
-
355
- .sg-sfe-inspector-option-remove,
356
- .sg-sfe-inspector-option-add {
357
- appearance: none;
358
- background: transparent;
359
- border: 1px dashed var(--sg-sfe-border);
360
- border-radius: var(--sg-sfe-radius);
361
- cursor: pointer;
362
- font-size: var(--sg-sfe-font-size-sm);
363
- color: var(--sg-sfe-text-secondary);
364
- padding: 4px 8px;
365
- }
366
-
367
- .sg-sfe-inspector-option-add:hover {
368
- border-color: var(--sg-sfe-primary);
369
- color: var(--sg-sfe-primary);
370
- }
371
-
372
- /* Bottom tabs (Preview / Schema) ----------------------------------------- */
373
- .sg-sfe-bottom {
374
- display: flex;
375
- flex-direction: column;
376
- border-top: 1px solid var(--sg-sfe-border-secondary);
377
- background: var(--sg-sfe-bg-secondary);
378
- max-height: 320px;
379
- flex-shrink: 0;
380
- overflow-y: auto;
381
- }
382
-
383
- .sg-sfe-tabs {
384
- display: flex;
385
- gap: 4px;
386
- padding: var(--sg-sfe-pad-sm) var(--sg-sfe-pad-md) 0;
387
- }
388
-
389
- .sg-sfe-tab {
390
- appearance: none;
391
- background: transparent;
392
- border: none;
393
- padding: 6px 12px;
394
- font-size: var(--sg-sfe-font-size-sm);
395
- color: var(--sg-sfe-text-secondary);
396
- cursor: pointer;
397
- border-bottom: 2px solid transparent;
398
- }
399
-
400
- .sg-sfe-tab-active {
401
- color: var(--sg-sfe-primary);
402
- border-bottom-color: var(--sg-sfe-primary);
403
- }
404
-
405
- .sg-sfe-preview,
406
- .sg-sfe-preview-empty {
407
- padding: var(--sg-sfe-pad-md);
408
- background: var(--sg-sfe-bg);
409
- overflow-y: auto;
410
- max-height: 280px;
411
- }
412
-
413
- .sg-sfe-preview-empty {
414
- color: var(--sg-sfe-text-secondary);
415
- font-size: var(--sg-sfe-font-size-sm);
416
- }
417
-
418
- .sg-sfe-schema-view {
419
- margin: 0;
420
- padding: var(--sg-sfe-pad-md);
421
- background: var(--sg-sfe-bg);
422
- color: var(--sg-sfe-text);
423
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
424
- font-size: var(--sg-sfe-font-size-sm);
425
- overflow: auto;
426
- max-height: 280px;
427
- }
428
-
429
- .sg-sfe-schema-view code {
430
- background: transparent;
431
- color: inherit;
432
- font: inherit;
433
- }
1
+ /* SchemaFormEditor — visual constructor for SchemaForm. */
2
+
3
+ .sg-sfe {
4
+ /* Component-local variables. Override via inline style or a wrapper rule
5
+ * to rebrand the editor. Each falls back to a global token so theming
6
+ * cascades automatically. */
7
+ --sg-sfe-bg: var(--sg-color-bg);
8
+ --sg-sfe-bg-secondary: var(--sg-color-bg-secondary);
9
+ --sg-sfe-bg-elevated: var(--sg-color-bg-elevated);
10
+ --sg-sfe-border: var(--sg-color-border);
11
+ --sg-sfe-border-secondary: var(--sg-color-border-secondary);
12
+ --sg-sfe-text: var(--sg-color-text);
13
+ --sg-sfe-text-secondary: var(--sg-color-text-secondary);
14
+ --sg-sfe-primary: var(--sg-color-primary);
15
+ --sg-sfe-primary-bg: var(--sg-color-primary-bg);
16
+ --sg-sfe-error: var(--sg-color-error);
17
+ --sg-sfe-radius: var(--sg-border-radius);
18
+ --sg-sfe-pad-sm: var(--sg-padding-sm);
19
+ --sg-sfe-pad-md: var(--sg-padding-md);
20
+ --sg-sfe-pad-lg: var(--sg-padding-lg);
21
+ --sg-sfe-shadow-sm: var(--sg-shadow-sm);
22
+ --sg-sfe-font-size: var(--sg-font-size);
23
+ --sg-sfe-font-size-sm: var(--sg-font-size-sm);
24
+ --sg-sfe-palette-width: 240px;
25
+ --sg-sfe-inspector-width: 280px;
26
+
27
+ display: flex;
28
+ flex-direction: column;
29
+ width: 100%;
30
+ background: var(--sg-sfe-bg);
31
+ border: 1px solid var(--sg-sfe-border);
32
+ border-radius: var(--sg-sfe-radius);
33
+ color: var(--sg-sfe-text);
34
+ font-size: var(--sg-sfe-font-size);
35
+ overflow: hidden;
36
+ }
37
+
38
+ /* Toolbar (top) ----------------------------------------------------------- */
39
+ .sg-sfe-toolbar {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: var(--sg-sfe-pad-sm);
43
+ padding: var(--sg-sfe-pad-sm) var(--sg-sfe-pad-md);
44
+ background: var(--sg-sfe-bg-secondary);
45
+ border-bottom: 1px solid var(--sg-sfe-border-secondary);
46
+ }
47
+
48
+ .sg-sfe-toolbar-title {
49
+ font-weight: 600;
50
+ font-size: var(--sg-sfe-font-size);
51
+ }
52
+
53
+ .sg-sfe-toolbar-btn {
54
+ appearance: none;
55
+ background: transparent;
56
+ border: 1px solid var(--sg-sfe-border);
57
+ border-radius: var(--sg-sfe-radius);
58
+ padding: 4px 12px;
59
+ font-size: var(--sg-sfe-font-size-sm);
60
+ color: var(--sg-sfe-text);
61
+ cursor: pointer;
62
+ transition: background var(--sg-transition-duration) var(--sg-transition-timing);
63
+ }
64
+
65
+ .sg-sfe-toolbar-btn:hover:not(:disabled) {
66
+ background: var(--sg-color-bg-hover);
67
+ }
68
+
69
+ .sg-sfe-toolbar-btn:disabled {
70
+ opacity: 0.4;
71
+ cursor: not-allowed;
72
+ }
73
+
74
+ /* Body (palette / center / inspector) ------------------------------------- */
75
+ .sg-sfe-body {
76
+ display: grid;
77
+ grid-template-columns: var(--sg-sfe-palette-width) 1fr var(--sg-sfe-inspector-width);
78
+ flex: 1;
79
+ min-height: 480px;
80
+ overflow: hidden;
81
+ }
82
+
83
+ /* Palette (left) ---------------------------------------------------------- */
84
+ .sg-sfe-palette {
85
+ display: flex;
86
+ flex-direction: column;
87
+ gap: var(--sg-sfe-pad-sm);
88
+ padding: var(--sg-sfe-pad-md);
89
+ background: var(--sg-sfe-bg-secondary);
90
+ border-right: 1px solid var(--sg-sfe-border-secondary);
91
+ overflow-y: auto;
92
+ }
93
+
94
+ .sg-sfe-palette-title {
95
+ font-weight: 600;
96
+ font-size: var(--sg-sfe-font-size-sm);
97
+ color: var(--sg-sfe-text-secondary);
98
+ text-transform: uppercase;
99
+ letter-spacing: 0.05em;
100
+ }
101
+
102
+ .sg-sfe-palette-list {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 6px;
106
+ }
107
+
108
+ .sg-sfe-palette-item {
109
+ display: flex;
110
+ align-items: center;
111
+ gap: var(--sg-sfe-pad-sm);
112
+ padding: var(--sg-sfe-pad-sm);
113
+ background: var(--sg-sfe-bg-elevated);
114
+ border: 1px solid var(--sg-sfe-border);
115
+ border-radius: var(--sg-sfe-radius);
116
+ cursor: grab;
117
+ user-select: none;
118
+ transition:
119
+ border-color var(--sg-transition-duration) var(--sg-transition-timing),
120
+ box-shadow var(--sg-transition-duration) var(--sg-transition-timing);
121
+ }
122
+
123
+ .sg-sfe-palette-item:hover,
124
+ .sg-sfe-palette-item:focus-visible {
125
+ border-color: var(--sg-sfe-primary);
126
+ box-shadow: var(--sg-sfe-shadow-sm);
127
+ outline: none;
128
+ }
129
+
130
+ .sg-sfe-palette-item:active {
131
+ cursor: grabbing;
132
+ }
133
+
134
+ .sg-sfe-palette-item-glyph {
135
+ display: inline-flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ width: 24px;
139
+ height: 24px;
140
+ background: var(--sg-sfe-primary-bg);
141
+ color: var(--sg-sfe-primary);
142
+ border-radius: var(--sg-sfe-radius);
143
+ font-weight: 600;
144
+ flex-shrink: 0;
145
+ }
146
+
147
+ .sg-sfe-palette-item-body {
148
+ display: flex;
149
+ flex-direction: column;
150
+ min-width: 0;
151
+ }
152
+
153
+ .sg-sfe-palette-item-label {
154
+ font-weight: 500;
155
+ font-size: var(--sg-sfe-font-size);
156
+ }
157
+
158
+ .sg-sfe-palette-item-hint {
159
+ font-size: var(--sg-sfe-font-size-sm);
160
+ color: var(--sg-sfe-text-secondary);
161
+ }
162
+
163
+ /* Center (canvas + bottom tabs) ------------------------------------------ */
164
+ .sg-sfe-center {
165
+ display: flex;
166
+ flex-direction: column;
167
+ min-width: 0;
168
+ min-height: 0;
169
+ overflow: hidden;
170
+ background: var(--sg-sfe-bg);
171
+ }
172
+
173
+ /* Canvas ------------------------------------------------------------------ */
174
+ .sg-sfe-canvas {
175
+ flex: 1;
176
+ padding: var(--sg-sfe-pad-lg);
177
+ overflow-y: auto;
178
+ min-height: 240px;
179
+ }
180
+
181
+ .sg-sfe-canvas[data-empty='true'] {
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ }
186
+
187
+ .sg-sfe-canvas-empty {
188
+ width: 100%;
189
+ min-height: 200px;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ border: 2px dashed var(--sg-sfe-border);
194
+ border-radius: var(--sg-sfe-radius);
195
+ color: var(--sg-sfe-text-secondary);
196
+ font-size: var(--sg-sfe-font-size);
197
+ cursor: default;
198
+ }
199
+
200
+ .sg-sfe-canvas-form {
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: var(--sg-sfe-pad-md);
204
+ }
205
+
206
+ .sg-sfe-canvas-field {
207
+ position: relative;
208
+ padding: var(--sg-sfe-pad-sm);
209
+ border: 1px solid transparent;
210
+ border-radius: var(--sg-sfe-radius);
211
+ cursor: pointer;
212
+ transition:
213
+ border-color var(--sg-transition-duration) var(--sg-transition-timing),
214
+ background var(--sg-transition-duration) var(--sg-transition-timing);
215
+ }
216
+
217
+ .sg-sfe-canvas-field:hover {
218
+ border-color: var(--sg-sfe-border);
219
+ background: var(--sg-sfe-bg-secondary);
220
+ }
221
+
222
+ .sg-sfe-canvas-field-selected {
223
+ border-color: var(--sg-sfe-primary);
224
+ background: var(--sg-sfe-primary-bg);
225
+ }
226
+
227
+ .sg-sfe-canvas-field-inner {
228
+ pointer-events: none;
229
+ display: flex;
230
+ flex-direction: column;
231
+ gap: 4px;
232
+ }
233
+
234
+ .sg-sfe-canvas-field-help {
235
+ font-size: var(--sg-sfe-font-size-sm);
236
+ color: var(--sg-sfe-text-secondary);
237
+ }
238
+
239
+ .sg-sfe-canvas-field-toolbar {
240
+ position: absolute;
241
+ top: -16px;
242
+ right: 8px;
243
+ display: flex;
244
+ gap: 4px;
245
+ padding: 2px 4px;
246
+ background: var(--sg-sfe-bg-elevated);
247
+ border: 1px solid var(--sg-sfe-border);
248
+ border-radius: var(--sg-sfe-radius);
249
+ box-shadow: var(--sg-sfe-shadow-sm);
250
+ z-index: var(--sg-z-sticky);
251
+ }
252
+
253
+ .sg-sfe-canvas-field-toolbar-btn {
254
+ appearance: none;
255
+ background: transparent;
256
+ border: none;
257
+ padding: 2px 6px;
258
+ font-size: var(--sg-sfe-font-size-sm);
259
+ color: var(--sg-sfe-text);
260
+ cursor: pointer;
261
+ border-radius: var(--sg-sfe-radius);
262
+ }
263
+
264
+ .sg-sfe-canvas-field-toolbar-btn:hover {
265
+ background: var(--sg-color-bg-hover);
266
+ }
267
+
268
+ .sg-sfe-canvas-field-toolbar-btn-danger:hover {
269
+ background: var(--sg-sfe-error);
270
+ color: var(--sg-color-white);
271
+ }
272
+
273
+ .sg-sfe-canvas-drop-indicator {
274
+ height: 2px;
275
+ background: var(--sg-sfe-primary);
276
+ border-radius: var(--sg-sfe-radius);
277
+ margin: 4px 0;
278
+ }
279
+
280
+ /* Inspector (right) ------------------------------------------------------- */
281
+ .sg-sfe-inspector {
282
+ display: flex;
283
+ flex-direction: column;
284
+ gap: var(--sg-sfe-pad-sm);
285
+ padding: var(--sg-sfe-pad-md);
286
+ background: var(--sg-sfe-bg-secondary);
287
+ border-left: 1px solid var(--sg-sfe-border-secondary);
288
+ overflow-y: auto;
289
+ }
290
+
291
+ .sg-sfe-inspector-title {
292
+ font-weight: 600;
293
+ font-size: var(--sg-sfe-font-size-sm);
294
+ color: var(--sg-sfe-text-secondary);
295
+ text-transform: uppercase;
296
+ letter-spacing: 0.05em;
297
+ }
298
+
299
+ .sg-sfe-inspector-empty {
300
+ color: var(--sg-sfe-text-secondary);
301
+ font-size: var(--sg-sfe-font-size-sm);
302
+ padding: var(--sg-sfe-pad-md) 0;
303
+ }
304
+
305
+ .sg-sfe-inspector-row {
306
+ display: flex;
307
+ flex-direction: column;
308
+ gap: 4px;
309
+ }
310
+
311
+ .sg-sfe-inspector-row-label {
312
+ font-size: var(--sg-sfe-font-size-sm);
313
+ color: var(--sg-sfe-text-secondary);
314
+ font-weight: 500;
315
+ }
316
+
317
+ .sg-sfe-inspector-input {
318
+ appearance: none;
319
+ width: 100%;
320
+ padding: 4px 8px;
321
+ font-size: var(--sg-sfe-font-size);
322
+ border: 1px solid var(--sg-sfe-border);
323
+ border-radius: var(--sg-sfe-radius);
324
+ background: var(--sg-sfe-bg);
325
+ color: var(--sg-sfe-text);
326
+ }
327
+
328
+ .sg-sfe-inspector-input:focus {
329
+ outline: none;
330
+ border-color: var(--sg-sfe-primary);
331
+ box-shadow: 0 0 0 2px var(--sg-sfe-primary-bg);
332
+ }
333
+
334
+ .sg-sfe-inspector-checkbox {
335
+ display: flex;
336
+ align-items: center;
337
+ gap: 6px;
338
+ font-size: var(--sg-sfe-font-size-sm);
339
+ color: var(--sg-sfe-text);
340
+ cursor: pointer;
341
+ }
342
+
343
+ .sg-sfe-inspector-options {
344
+ display: flex;
345
+ flex-direction: column;
346
+ gap: 6px;
347
+ }
348
+
349
+ .sg-sfe-inspector-option {
350
+ display: grid;
351
+ grid-template-columns: 1fr 1fr 24px;
352
+ gap: 4px;
353
+ }
354
+
355
+ .sg-sfe-inspector-option-remove,
356
+ .sg-sfe-inspector-option-add {
357
+ appearance: none;
358
+ background: transparent;
359
+ border: 1px dashed var(--sg-sfe-border);
360
+ border-radius: var(--sg-sfe-radius);
361
+ cursor: pointer;
362
+ font-size: var(--sg-sfe-font-size-sm);
363
+ color: var(--sg-sfe-text-secondary);
364
+ padding: 4px 8px;
365
+ }
366
+
367
+ .sg-sfe-inspector-option-add:hover {
368
+ border-color: var(--sg-sfe-primary);
369
+ color: var(--sg-sfe-primary);
370
+ }
371
+
372
+ /* Bottom tabs (Preview / Schema) ----------------------------------------- */
373
+ .sg-sfe-bottom {
374
+ display: flex;
375
+ flex-direction: column;
376
+ border-top: 1px solid var(--sg-sfe-border-secondary);
377
+ background: var(--sg-sfe-bg-secondary);
378
+ max-height: 320px;
379
+ flex-shrink: 0;
380
+ overflow-y: auto;
381
+ }
382
+
383
+ .sg-sfe-tabs {
384
+ display: flex;
385
+ gap: 4px;
386
+ padding: var(--sg-sfe-pad-sm) var(--sg-sfe-pad-md) 0;
387
+ }
388
+
389
+ .sg-sfe-tab {
390
+ appearance: none;
391
+ background: transparent;
392
+ border: none;
393
+ padding: 6px 12px;
394
+ font-size: var(--sg-sfe-font-size-sm);
395
+ color: var(--sg-sfe-text-secondary);
396
+ cursor: pointer;
397
+ border-bottom: 2px solid transparent;
398
+ }
399
+
400
+ .sg-sfe-tab-active {
401
+ color: var(--sg-sfe-primary);
402
+ border-bottom-color: var(--sg-sfe-primary);
403
+ }
404
+
405
+ .sg-sfe-preview,
406
+ .sg-sfe-preview-empty {
407
+ padding: var(--sg-sfe-pad-md);
408
+ background: var(--sg-sfe-bg);
409
+ overflow-y: auto;
410
+ max-height: 280px;
411
+ }
412
+
413
+ .sg-sfe-preview-empty {
414
+ color: var(--sg-sfe-text-secondary);
415
+ font-size: var(--sg-sfe-font-size-sm);
416
+ }
417
+
418
+ .sg-sfe-schema-view {
419
+ margin: 0;
420
+ padding: var(--sg-sfe-pad-md);
421
+ background: var(--sg-sfe-bg);
422
+ color: var(--sg-sfe-text);
423
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
424
+ font-size: var(--sg-sfe-font-size-sm);
425
+ overflow: auto;
426
+ max-height: 280px;
427
+ }
428
+
429
+ .sg-sfe-schema-view code {
430
+ background: transparent;
431
+ color: inherit;
432
+ font: inherit;
433
+ }