@treasuryspatial/viewer-ui-kit 0.1.42 → 0.1.56

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 (89) hide show
  1. package/dist/AdminLayout.js +1 -1
  2. package/dist/AdminShell.d.ts +6 -1
  3. package/dist/AdminShell.d.ts.map +1 -1
  4. package/dist/AdminShell.js +45 -3
  5. package/dist/ChooserActionCard.d.ts +10 -0
  6. package/dist/ChooserActionCard.d.ts.map +1 -0
  7. package/dist/ChooserActionCard.js +39 -0
  8. package/dist/ComposerRightRail.d.ts +3 -1
  9. package/dist/ComposerRightRail.d.ts.map +1 -1
  10. package/dist/ComposerRightRail.js +11 -43
  11. package/dist/ConfiguratorShell.js +1 -1
  12. package/dist/LandingShell.d.ts +2 -1
  13. package/dist/LandingShell.d.ts.map +1 -1
  14. package/dist/LandingShell.js +133 -33
  15. package/dist/LoginShell.d.ts +2 -1
  16. package/dist/LoginShell.d.ts.map +1 -1
  17. package/dist/LoginShell.js +26 -3
  18. package/dist/ManifestTopBar.d.ts +7 -1
  19. package/dist/ManifestTopBar.d.ts.map +1 -1
  20. package/dist/ManifestTopBar.js +249 -38
  21. package/dist/MetricsPanel.d.ts +1 -1
  22. package/dist/MetricsPanel.d.ts.map +1 -1
  23. package/dist/MetricsPanel.js +19 -29
  24. package/dist/MetricsPanelContent.d.ts +38 -17
  25. package/dist/MetricsPanelContent.d.ts.map +1 -1
  26. package/dist/MetricsPanelContent.js +84 -90
  27. package/dist/ModeBar.d.ts +6 -2
  28. package/dist/ModeBar.d.ts.map +1 -1
  29. package/dist/ModeBar.js +49 -82
  30. package/dist/ModuleSelectorPanel.d.ts +2 -1
  31. package/dist/ModuleSelectorPanel.d.ts.map +1 -1
  32. package/dist/ModuleSelectorPanel.js +47 -49
  33. package/dist/PanelSkin.d.ts.map +1 -1
  34. package/dist/PanelSkin.js +1598 -312
  35. package/dist/PanelSystem.d.ts +45 -0
  36. package/dist/PanelSystem.d.ts.map +1 -0
  37. package/dist/PanelSystem.js +450 -0
  38. package/dist/PanelTabs.d.ts.map +1 -1
  39. package/dist/PanelTabs.js +8 -34
  40. package/dist/PanelToggleDock.d.ts +10 -0
  41. package/dist/PanelToggleDock.d.ts.map +1 -0
  42. package/dist/PanelToggleDock.js +40 -0
  43. package/dist/PromptPackChooserPanel.d.ts +12 -11
  44. package/dist/PromptPackChooserPanel.d.ts.map +1 -1
  45. package/dist/PromptPackChooserPanel.js +103 -63
  46. package/dist/SceneInspectorPanel.d.ts +42 -0
  47. package/dist/SceneInspectorPanel.d.ts.map +1 -0
  48. package/dist/SceneInspectorPanel.js +135 -0
  49. package/dist/ScienceDataPanelContent.d.ts +16 -0
  50. package/dist/ScienceDataPanelContent.d.ts.map +1 -0
  51. package/dist/ScienceDataPanelContent.js +31 -0
  52. package/dist/ScienceMetricsPanelContent.d.ts +53 -0
  53. package/dist/ScienceMetricsPanelContent.d.ts.map +1 -0
  54. package/dist/ScienceMetricsPanelContent.js +415 -0
  55. package/dist/SpatialHud.d.ts +18 -0
  56. package/dist/SpatialHud.d.ts.map +1 -0
  57. package/dist/SpatialHud.js +120 -0
  58. package/dist/StreetviewModeSurface.d.ts +40 -0
  59. package/dist/StreetviewModeSurface.d.ts.map +1 -0
  60. package/dist/StreetviewModeSurface.js +358 -0
  61. package/dist/SurfaceSwitcher.d.ts +11 -0
  62. package/dist/SurfaceSwitcher.d.ts.map +1 -0
  63. package/dist/SurfaceSwitcher.js +46 -0
  64. package/dist/TopBar.d.ts +2 -0
  65. package/dist/TopBar.d.ts.map +1 -1
  66. package/dist/TopBar.js +3 -1
  67. package/dist/UnknownModeSurface.d.ts +6 -0
  68. package/dist/UnknownModeSurface.d.ts.map +1 -0
  69. package/dist/UnknownModeSurface.js +41 -0
  70. package/dist/index.d.ts +19 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +12 -0
  73. package/dist/landingTokens.d.ts +7 -0
  74. package/dist/landingTokens.d.ts.map +1 -0
  75. package/dist/landingTokens.js +6 -0
  76. package/dist/layout.d.ts +27 -27
  77. package/dist/layout.d.ts.map +1 -1
  78. package/dist/layout.js +33 -27
  79. package/dist/mapMetrics.d.ts +88 -0
  80. package/dist/mapMetrics.d.ts.map +1 -0
  81. package/dist/mapMetrics.js +1 -0
  82. package/dist/panelPrimitives.d.ts +11 -0
  83. package/dist/panelPrimitives.d.ts.map +1 -0
  84. package/dist/panelPrimitives.js +41 -0
  85. package/dist/topbarLogoPolicy.d.ts +14 -0
  86. package/dist/topbarLogoPolicy.d.ts.map +1 -0
  87. package/dist/topbarLogoPolicy.js +41 -0
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +18 -5
package/dist/PanelSkin.js CHANGED
@@ -1,89 +1,70 @@
1
1
  'use client';
2
2
  import { createGlobalStyle } from 'styled-components';
3
+ import { panelSystemActionCardCss, panelSystemBodyTextCss, panelSystemCardCss, panelSystemCompactBodyTextCss, panelSystemCompactLabelCss, panelSystemCompactSectionCss, panelSystemCompactSectionHeadingCss, panelSystemCompactSubheadingCss, panelSystemCompactValueCss, panelSystemControlCss, panelSystemFeatureToggleCss, panelSystemInputCss, panelSystemLabelCss, panelSystemMetricCardCss, panelSystemSliderCss, panelSystemSubheadingCss, panelSystemToggleBarCss, panelSystemValueCss, panelSystemVarsCss, } from './PanelSystem.js';
3
4
  export const PanelSkin = createGlobalStyle `
4
5
  .viewer-ui-shell-right-body {
5
6
  display: flex;
6
7
  flex-direction: column;
7
- gap: 16px;
8
- height: 100%;
9
- overflow: auto;
10
8
  }
11
9
 
12
10
  .viewer-ui-panel-renderer {
11
+ ${panelSystemVarsCss}
13
12
  display: flex;
14
13
  flex-direction: column;
15
- gap: 14px;
16
- }
17
-
18
- .viewer-ui-panel-tabs {
19
- display: flex;
20
- gap: 8px;
21
- flex-wrap: wrap;
22
- }
23
-
24
- .viewer-ui-panel-tabs .panel-tab {
25
- border-radius: 999px;
26
- border: 1px solid var(--viewer-ui-color-panel-border);
27
- background: transparent;
28
- color: var(--viewer-ui-color-text-muted);
29
- font-size: 11px;
30
- letter-spacing: 0.08em;
31
- text-transform: uppercase;
32
- font-family: var(--viewer-ui-font-body);
33
- font-weight: 600;
34
- padding: 8px 14px;
35
- cursor: pointer;
36
- }
37
-
38
- .viewer-ui-panel-tabs .panel-tab--active {
39
- background: var(--viewer-ui-color-button-secondary);
40
- border-color: var(--viewer-ui-color-button-secondary);
41
- color: var(--viewer-ui-color-text-strong);
14
+ gap: 12px;
15
+ color: var(--panel-system-text);
16
+ font-family: var(--index-panel-font, var(--viewer-ui-font-body));
42
17
  }
43
18
 
44
19
  .viewer-ui-panel-sections {
45
20
  display: flex;
46
21
  flex-direction: column;
47
- gap: 14px;
22
+ gap: 12px;
48
23
  }
49
24
 
50
25
  .viewer-ui-panel-renderer .panel-section {
51
- border: 1px solid var(--viewer-ui-color-panel-border);
52
- background: var(--viewer-ui-color-surface);
53
- border-radius: 20px;
54
- padding: 18px 18px 20px;
26
+ ${panelSystemMetricCardCss}
27
+ padding: 14px 16px 16px;
55
28
  display: flex;
56
29
  flex-direction: column;
57
- gap: 12px;
30
+ gap: 8px;
58
31
  }
59
32
 
60
- .viewer-ui-panel-renderer--flat .panel-section {
61
- border: 0;
62
- background: transparent;
63
- border-radius: 0;
64
- padding: 0 0 18px;
65
- gap: 10px;
66
- border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
33
+ .viewer-ui-panel-renderer--flat .panel-section,
34
+ .viewer-ui-panel-renderer--sectioned .panel-section {
35
+ ${panelSystemCompactSectionCss}
36
+ }
37
+
38
+ .viewer-ui-panel-renderer--sectioned .panel-section + .panel-section {
39
+ padding-top: 12px;
67
40
  }
68
41
 
69
- .viewer-ui-panel-renderer--flat .panel-section:last-child {
42
+ .viewer-ui-panel-renderer--flat .panel-section:last-child,
43
+ .viewer-ui-panel-renderer--sectioned .panel-section:last-child {
70
44
  border-bottom: 0;
71
45
  padding-bottom: 0;
72
46
  }
73
47
 
48
+ .viewer-ui-panel-renderer .panel-section-header {
49
+ display: flex;
50
+ align-items: flex-start;
51
+ justify-content: space-between;
52
+ gap: 8px;
53
+ }
54
+
55
+ .viewer-ui-panel-renderer .panel-section-header > div:first-child {
56
+ min-width: 0;
57
+ }
58
+
74
59
  .viewer-ui-panel-renderer .panel-section-header h3 {
60
+ ${panelSystemCompactSectionHeadingCss}
75
61
  font-size: 16px;
76
- letter-spacing: 0.02em;
77
- text-transform: none;
78
- color: var(--viewer-ui-color-text-strong);
79
- font-family: var(--viewer-ui-font-body);
80
- font-weight: 600;
62
+ line-height: 1.22;
63
+ font-weight: 400;
64
+ margin: 0;
81
65
  }
82
66
 
83
67
  .viewer-ui-panel-renderer--flat .panel-section-header h3 {
84
- font-size: 18px;
85
- letter-spacing: 0.04em;
86
- text-transform: lowercase;
87
68
  color: var(--viewer-ui-color-text-strong);
88
69
  }
89
70
 
@@ -92,222 +73,1457 @@ export const PanelSkin = createGlobalStyle `
92
73
  }
93
74
 
94
75
  .viewer-ui-panel-renderer .panel-section-header p {
95
- margin-top: 6px;
96
- font-size: 12px;
97
- color: var(--viewer-ui-color-text-muted);
98
- text-transform: lowercase;
99
- letter-spacing: 0.03em;
76
+ ${panelSystemCompactBodyTextCss}
77
+ margin: 0;
100
78
  }
101
79
 
102
80
  .viewer-ui-panel-renderer .panel-section-group h4 {
81
+ ${panelSystemCompactSubheadingCss}
82
+ margin: 0;
83
+ text-transform: none;
84
+ color: var(--viewer-ui-color-text);
103
85
  font-size: 12px;
104
- letter-spacing: 0.12em;
105
- text-transform: uppercase;
106
- color: var(--viewer-ui-color-text-subtle);
107
- font-family: var(--viewer-ui-font-body);
108
- font-weight: 600;
86
+ font-weight: 400;
87
+ line-height: 1.25;
109
88
  }
110
89
 
111
90
  .viewer-ui-panel-renderer .panel-section-group p {
112
- margin-top: 4px;
91
+ ${panelSystemCompactBodyTextCss}
113
92
  font-size: 11px;
114
- color: var(--viewer-ui-color-text-subtle);
115
- text-transform: lowercase;
116
- letter-spacing: 0.03em;
93
+ line-height: 1.3;
94
+ margin: 0;
117
95
  }
118
96
 
119
- .viewer-ui-panel-renderer .panel-section-fields,
120
97
  .viewer-ui-panel-renderer .panel-section-group {
121
98
  display: flex;
122
99
  flex-direction: column;
123
- gap: 10px;
100
+ gap: 5px;
124
101
  }
125
102
 
126
- .viewer-ui-panel-renderer .panel-field {
103
+ .viewer-ui-panel-renderer .panel-renderer-tabs {
104
+ ${panelSystemToggleBarCss}
105
+ justify-content: flex-start;
106
+ padding-bottom: 6px;
107
+ }
108
+
109
+ .viewer-ui-panel-renderer .panel-renderer-tab {
110
+ ${panelSystemFeatureToggleCss}
111
+ }
112
+
113
+ .viewer-ui-panel-renderer .panel-section-stack {
127
114
  display: flex;
128
115
  flex-direction: column;
129
- gap: 4px;
116
+ gap: 8px;
130
117
  }
131
118
 
132
- .viewer-ui-panel-renderer .panel-field-label {
119
+ .viewer-ui-panel-renderer .panel-section-modules {
120
+ display: flex;
121
+ flex-direction: column;
122
+ gap: 8px;
123
+ min-width: 0;
124
+ }
125
+
126
+ .viewer-ui-panel-renderer .panel-section-module {
127
+ min-width: 0;
128
+ }
129
+
130
+ .viewer-ui-panel-renderer .panel-section-group + .panel-section-group {
131
+ padding-top: 8px;
132
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
133
+ }
134
+
135
+ .viewer-ui-panel-renderer .panel-section-group-header {
136
+ display: flex;
137
+ flex-direction: column;
138
+ gap: 2px;
139
+ }
140
+
141
+ .viewer-ui-panel-renderer .panel-section-group-copy {
142
+ display: flex;
143
+ flex-direction: column;
144
+ gap: 2px;
145
+ }
146
+
147
+ .viewer-ui-panel-renderer .panel-section-group-toggle {
133
148
  display: flex;
149
+ align-items: flex-start;
134
150
  justify-content: space-between;
151
+ gap: 10px;
152
+ padding: 0;
153
+ border: 0;
154
+ background: transparent;
155
+ text-align: left;
156
+ color: inherit;
157
+ cursor: pointer;
158
+ }
159
+
160
+ .viewer-ui-panel-renderer .panel-section-group-toggle-copy {
161
+ display: flex;
162
+ flex-direction: column;
163
+ gap: 3px;
164
+ min-width: 0;
165
+ }
166
+
167
+ .viewer-ui-panel-renderer .panel-section-group-title {
168
+ ${panelSystemCompactSubheadingCss}
169
+ margin: 0;
170
+ color: var(--viewer-ui-color-text);
135
171
  font-size: 12px;
136
- letter-spacing: 0.04em;
137
- text-transform: lowercase;
138
- color: var(--viewer-ui-color-text-muted);
139
- font-family: var(--viewer-ui-font-body);
172
+ font-weight: 400;
173
+ line-height: 1.25;
140
174
  }
141
175
 
142
- .viewer-ui-panel-renderer--flat .panel-field-label {
176
+ .viewer-ui-panel-renderer .panel-section-group-summary {
177
+ ${panelSystemCompactBodyTextCss}
143
178
  font-size: 11px;
144
- letter-spacing: 0.12em;
145
- text-transform: uppercase;
179
+ line-height: 1.3;
180
+ color: var(--viewer-ui-color-text-muted);
181
+ }
182
+
183
+ .viewer-ui-panel-renderer .panel-section-group-toggle-icon {
184
+ flex: 0 0 auto;
185
+ min-width: 14px;
186
+ text-align: center;
187
+ font-size: 14px;
188
+ line-height: 1;
189
+ color: var(--viewer-ui-color-text-muted);
190
+ }
191
+
192
+ .viewer-ui-panel-renderer .panel-section-group[data-group-tier='advanced'],
193
+ .viewer-ui-panel-renderer .panel-section-group[data-group-tier='system'] {
194
+ border-radius: 0;
195
+ padding: 8px 0 0;
196
+ background: transparent;
197
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
198
+ }
199
+
200
+ .viewer-ui-panel-renderer .panel-section-group[data-group-tier='system'] {
201
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
202
+ }
203
+
204
+ .viewer-ui-panel-renderer .panel-section-fields {
205
+ display: grid;
206
+ grid-template-columns: repeat(2, minmax(0, 1fr));
207
+ gap: 7px 8px;
208
+ }
209
+
210
+ .viewer-ui-panel-renderer .cfg-field-grid {
211
+ display: grid;
212
+ grid-template-columns: repeat(2, minmax(0, 1fr));
213
+ gap: 7px 8px;
214
+ }
215
+
216
+ .viewer-ui-panel-renderer .panel-section-module--matrix {
217
+ overflow-x: auto;
218
+ overflow-y: hidden;
219
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
220
+ border-radius: 8px;
221
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 94%, var(--viewer-ui-color-control-hover) 6%);
222
+ scrollbar-width: thin;
223
+ scrollbar-color: var(--viewer-ui-color-panel-border) transparent;
224
+ }
225
+
226
+ .viewer-ui-panel-renderer .panel-section-module--matrix::-webkit-scrollbar {
227
+ height: 7px;
228
+ }
229
+
230
+ .viewer-ui-panel-renderer .panel-section-module--matrix::-webkit-scrollbar-track {
231
+ background: transparent;
232
+ }
233
+
234
+ .viewer-ui-panel-renderer .panel-section-module--matrix::-webkit-scrollbar-thumb {
235
+ border-radius: 999px;
236
+ background: var(--viewer-ui-color-panel-border);
237
+ }
238
+
239
+ .viewer-ui-panel-renderer .panel-control-matrix {
240
+ min-width: 100%;
241
+ }
242
+
243
+ .viewer-ui-panel-renderer .panel-control-matrix__header,
244
+ .viewer-ui-panel-renderer .panel-control-matrix__row {
245
+ display: grid;
246
+ grid-template-columns: minmax(58px, 0.85fr) repeat(var(--panel-control-matrix-columns, 4), minmax(48px, 1fr));
247
+ align-items: center;
248
+ }
249
+
250
+ .viewer-ui-panel-renderer .panel-control-matrix__header {
251
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
252
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 78%, var(--viewer-ui-color-control-hover) 22%);
253
+ }
254
+
255
+ .viewer-ui-panel-renderer .panel-control-matrix__row + .panel-control-matrix__row {
256
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
257
+ }
258
+
259
+ .viewer-ui-panel-renderer .panel-control-matrix__corner,
260
+ .viewer-ui-panel-renderer .panel-control-matrix__heading,
261
+ .viewer-ui-panel-renderer .panel-control-matrix__row-label,
262
+ .viewer-ui-panel-renderer .panel-control-matrix__cell {
263
+ min-width: 0;
264
+ padding: 5px 6px;
265
+ }
266
+
267
+ .viewer-ui-panel-renderer .panel-control-matrix__heading {
268
+ ${panelSystemCompactLabelCss}
269
+ display: flex;
270
+ align-items: baseline;
271
+ gap: 3px;
146
272
  color: var(--viewer-ui-color-text-subtle);
273
+ font-size: 10px;
274
+ line-height: 1.2;
275
+ white-space: nowrap;
147
276
  }
148
277
 
149
- .viewer-ui-panel-renderer .panel-field-help {
278
+ .viewer-ui-panel-renderer .panel-control-matrix__unit {
279
+ color: var(--viewer-ui-color-text-muted);
280
+ font-size: 10px;
281
+ }
282
+
283
+ .viewer-ui-panel-renderer .panel-control-matrix__row-label {
284
+ ${panelSystemCompactValueCss}
285
+ color: var(--viewer-ui-color-text);
286
+ font-size: 12px;
287
+ line-height: 1.2;
288
+ overflow: hidden;
289
+ text-overflow: ellipsis;
290
+ white-space: nowrap;
291
+ }
292
+
293
+ .viewer-ui-panel-renderer .panel-control-matrix__cell {
294
+ border-left: 1px solid var(--viewer-ui-color-panel-border-subtle);
295
+ }
296
+
297
+ .viewer-ui-panel-renderer .panel-control-matrix__empty {
298
+ ${panelSystemCompactBodyTextCss}
299
+ color: var(--viewer-ui-color-text-muted);
300
+ }
301
+
302
+ .viewer-ui-panel-renderer .panel-compact-field-list {
303
+ display: flex;
304
+ min-width: 0;
305
+ flex-direction: column;
306
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
307
+ }
308
+
309
+ .viewer-ui-panel-renderer .panel-section-module--compactMeasureList,
310
+ .viewer-ui-panel-renderer .panel-section-module--toggleList,
311
+ .viewer-ui-panel-renderer .panel-section-module--modeStack {
312
+ gap: 4px;
313
+ }
314
+
315
+ .viewer-ui-panel-renderer .panel-compact-field {
316
+ display: grid;
317
+ min-width: 0;
318
+ min-height: 34px;
319
+ grid-template-columns: minmax(0, 1fr) minmax(78px, 104px);
320
+ align-items: center;
321
+ gap: 8px;
322
+ padding: 5px 0;
323
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
324
+ }
325
+
326
+ .viewer-ui-panel-renderer .panel-section-module--toggleList .panel-compact-field {
327
+ grid-template-columns: minmax(0, 1fr) minmax(64px, 78px);
328
+ }
329
+
330
+ .viewer-ui-panel-renderer .panel-section-module--modeStack .panel-compact-field[data-has-condition='true'] {
331
+ padding-left: 8px;
332
+ border-left: 2px solid color-mix(in srgb, var(--viewer-ui-color-button-primary) 48%, transparent);
333
+ }
334
+
335
+ .viewer-ui-panel-renderer .panel-compact-field__copy {
336
+ display: flex;
337
+ min-width: 0;
338
+ flex-wrap: wrap;
339
+ align-items: baseline;
340
+ gap: 3px 5px;
341
+ }
342
+
343
+ .viewer-ui-panel-renderer .panel-compact-field__label {
344
+ ${panelSystemCompactLabelCss}
345
+ min-width: 0;
346
+ color: var(--viewer-ui-color-text);
150
347
  font-size: 11px;
151
- color: var(--viewer-ui-color-text-subtle);
152
- text-transform: lowercase;
153
- letter-spacing: 0.03em;
348
+ line-height: 1.25;
154
349
  }
155
350
 
156
- .viewer-ui-panel-renderer .panel-oneof-fields {
351
+ .viewer-ui-panel-renderer .panel-compact-field__unit {
352
+ ${panelSystemCompactBodyTextCss}
353
+ color: var(--viewer-ui-color-text-muted);
354
+ font-size: 10px;
355
+ line-height: 1.25;
356
+ }
357
+
358
+ .viewer-ui-panel-renderer .panel-compact-field__help {
359
+ flex-basis: 100%;
360
+ min-width: 0;
361
+ }
362
+
363
+ .viewer-ui-panel-renderer .panel-compact-field__help .panel-field-help {
364
+ font-size: 10px;
365
+ line-height: 1.25;
366
+ color: var(--viewer-ui-color-text-muted);
367
+ }
368
+
369
+ .viewer-ui-panel-renderer .panel-compact-field__control {
370
+ min-width: 0;
371
+ justify-self: stretch;
372
+ }
373
+
374
+ .viewer-ui-panel-renderer .panel-compact-field__number,
375
+ .viewer-ui-panel-renderer .panel-array-table__number {
376
+ width: 100%;
377
+ }
378
+
379
+ .viewer-ui-panel-renderer .panel-compact-field__input,
380
+ .viewer-ui-panel-renderer .panel-compact-field__select,
381
+ .viewer-ui-panel-renderer .panel-array-table__input,
382
+ .viewer-ui-panel-renderer .panel-array-table__select {
383
+ width: 100%;
384
+ }
385
+
386
+ .viewer-ui-panel-renderer .panel-compact-field__toggle,
387
+ .viewer-ui-panel-renderer .panel-array-table__toggle {
388
+ width: 100%;
389
+ min-height: 26px;
390
+ padding: 0 8px;
391
+ font-size: 11px;
392
+ line-height: 1.1;
393
+ }
394
+
395
+ .viewer-ui-panel-renderer .panel-array-table {
157
396
  display: flex;
397
+ min-width: 0;
158
398
  flex-direction: column;
159
- gap: 10px;
160
- margin-top: 8px;
399
+ gap: 6px;
161
400
  }
162
401
 
163
- .viewer-ui-panel-renderer .panel-field-control {
402
+ .viewer-ui-panel-renderer .panel-array-table__toolbar {
164
403
  display: flex;
165
404
  align-items: center;
166
- gap: 10px;
405
+ justify-content: space-between;
406
+ gap: 8px;
167
407
  }
168
408
 
169
- .viewer-ui-panel-renderer .panel-field--toggle {
409
+ .viewer-ui-panel-renderer .panel-array-table__title {
410
+ ${panelSystemCompactLabelCss}
170
411
  display: flex;
171
- flex-direction: column;
412
+ align-items: center;
172
413
  gap: 6px;
414
+ color: var(--viewer-ui-color-text);
415
+ font-size: 11px;
416
+ line-height: 1.25;
173
417
  }
174
418
 
175
- .viewer-ui-panel-renderer .panel-field--toggle .viewer-ui-kit-button {
176
- align-self: flex-start;
419
+ .viewer-ui-panel-renderer .panel-array-table__count {
420
+ ${panelSystemCompactBodyTextCss}
421
+ color: var(--viewer-ui-color-text-muted);
422
+ font-variant-numeric: tabular-nums;
423
+ }
424
+
425
+ .viewer-ui-panel-renderer .panel-array-table__grid {
426
+ min-width: 0;
427
+ overflow-x: auto;
428
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
429
+ border-radius: 8px;
430
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 95%, var(--viewer-ui-color-control-hover) 5%);
431
+ scrollbar-width: thin;
432
+ scrollbar-color: var(--viewer-ui-color-panel-border) transparent;
433
+ }
434
+
435
+ .viewer-ui-panel-renderer .panel-array-table__grid::-webkit-scrollbar {
436
+ height: 7px;
437
+ }
438
+
439
+ .viewer-ui-panel-renderer .panel-array-table__grid::-webkit-scrollbar-track {
440
+ background: transparent;
441
+ }
442
+
443
+ .viewer-ui-panel-renderer .panel-array-table__grid::-webkit-scrollbar-thumb {
177
444
  border-radius: 999px;
178
- padding: 6px 14px;
445
+ background: var(--viewer-ui-color-panel-border);
446
+ }
447
+
448
+ .viewer-ui-panel-renderer .panel-array-table__header,
449
+ .viewer-ui-panel-renderer .panel-array-table__row {
450
+ display: grid;
451
+ min-width: max-content;
452
+ grid-template-columns: minmax(86px, 0.9fr) repeat(var(--panel-array-table-columns, 2), minmax(62px, 1fr));
453
+ align-items: center;
454
+ }
455
+
456
+ .viewer-ui-panel-renderer .panel-array-table__header {
457
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
458
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 80%, var(--viewer-ui-color-control-hover) 20%);
459
+ }
460
+
461
+ .viewer-ui-panel-renderer .panel-array-table__row + .panel-array-table__row {
462
+ border-top: 1px solid var(--viewer-ui-color-panel-border-subtle);
463
+ }
464
+
465
+ .viewer-ui-panel-renderer .panel-array-table__corner,
466
+ .viewer-ui-panel-renderer .panel-array-table__heading,
467
+ .viewer-ui-panel-renderer .panel-array-table__row-label,
468
+ .viewer-ui-panel-renderer .panel-array-table__cell {
469
+ min-width: 0;
470
+ padding: 5px 6px;
471
+ }
472
+
473
+ .viewer-ui-panel-renderer .panel-array-table__heading {
474
+ ${panelSystemCompactLabelCss}
475
+ display: flex;
476
+ align-items: baseline;
477
+ gap: 3px;
478
+ color: var(--viewer-ui-color-text-subtle);
479
+ font-size: 10px;
480
+ line-height: 1.2;
481
+ white-space: nowrap;
482
+ }
483
+
484
+ .viewer-ui-panel-renderer .panel-array-table__unit {
485
+ color: var(--viewer-ui-color-text-muted);
486
+ font-size: 10px;
487
+ }
488
+
489
+ .viewer-ui-panel-renderer .panel-array-table__row-label {
490
+ ${panelSystemCompactValueCss}
491
+ display: flex;
492
+ align-items: center;
493
+ justify-content: space-between;
494
+ gap: 6px;
495
+ color: var(--viewer-ui-color-text);
179
496
  font-size: 11px;
180
- letter-spacing: 0.12em;
181
- text-transform: uppercase;
497
+ line-height: 1.2;
498
+ white-space: nowrap;
499
+ }
500
+
501
+ .viewer-ui-panel-renderer .panel-array-table__row-actions {
502
+ display: inline-flex;
503
+ align-items: center;
504
+ gap: 3px;
505
+ }
506
+
507
+ .viewer-ui-panel-renderer .panel-array-table__cell {
508
+ border-left: 1px solid var(--viewer-ui-color-panel-border-subtle);
509
+ }
510
+
511
+ .viewer-ui-panel-renderer .panel-array-table input.panel-number-field__input:not([type='range']):not([type='color']):not([type='file']),
512
+ .viewer-ui-panel-renderer .panel-array-table select.cfg-select,
513
+ .viewer-ui-panel-renderer .panel-array-table input.cfg-input:not([type='range']):not([type='color']):not([type='file']) {
514
+ min-height: 26px;
515
+ padding: 1px 5px;
516
+ border-color: transparent;
517
+ background: transparent;
518
+ font-size: 12px;
519
+ text-align: center;
520
+ }
521
+
522
+ .viewer-ui-panel-renderer .panel-array-table input.panel-number-field__input:not([type='range']):not([type='color']):not([type='file']):focus,
523
+ .viewer-ui-panel-renderer .panel-array-table select.cfg-select:focus,
524
+ .viewer-ui-panel-renderer .panel-array-table input.cfg-input:not([type='range']):not([type='color']):not([type='file']):focus {
525
+ border-color: var(--viewer-ui-color-button-primary);
526
+ background: var(--viewer-ui-color-surface);
527
+ }
528
+
529
+ .viewer-ui-panel-renderer .panel-array-table__move,
530
+ .viewer-ui-panel-renderer .panel-array-table__remove {
531
+ ${panelSystemCompactLabelCss}
532
+ min-height: 0;
533
+ padding: 0;
534
+ border: 0;
535
+ background: transparent;
536
+ color: var(--viewer-ui-color-text-muted);
537
+ font-size: 10px;
538
+ line-height: 1.2;
539
+ cursor: pointer;
540
+ }
541
+
542
+ .viewer-ui-panel-renderer .panel-array-table__move:hover,
543
+ .viewer-ui-panel-renderer .panel-array-table__remove:hover {
544
+ color: var(--viewer-ui-color-text-strong);
545
+ }
546
+
547
+ .viewer-ui-panel-renderer .panel-array-table__move:disabled,
548
+ .viewer-ui-panel-renderer .panel-array-table__remove:disabled {
549
+ cursor: not-allowed;
550
+ opacity: 0.45;
551
+ }
552
+
553
+ .viewer-ui-panel-renderer .panel-array-table__empty {
554
+ ${panelSystemCompactBodyTextCss}
555
+ color: var(--viewer-ui-color-text-muted);
556
+ }
557
+
558
+ .viewer-ui-panel-renderer .panel-section-fields > * {
559
+ min-width: 0;
560
+ grid-column: 1 / -1;
561
+ }
562
+
563
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='half'],
564
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='sm'],
565
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='compact'] {
566
+ grid-column: span 1;
567
+ }
568
+
569
+ .viewer-ui-panel-renderer .panel-section-list {
570
+ display: flex;
571
+ flex-direction: column;
572
+ gap: 0;
573
+ }
574
+
575
+ .viewer-ui-panel-renderer .panel-section-row {
576
+ display: flex;
577
+ align-items: flex-start;
578
+ justify-content: space-between;
579
+ gap: 10px;
580
+ padding: 6px 0;
581
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
582
+ }
583
+
584
+ .viewer-ui-panel-renderer .panel-section-row:last-child {
585
+ border-bottom: 0;
586
+ }
587
+
588
+ .viewer-ui-panel-renderer .panel-section-row[data-tone='warning'],
589
+ .viewer-ui-panel-renderer .panel-section-row[data-tone='error'] {
590
+ color: var(--viewer-ui-color-text-error, var(--brand-primary));
591
+ }
592
+
593
+ .viewer-ui-panel-renderer .panel-section-row[data-tone='ok'] {
594
+ color: var(--viewer-ui-color-button-primary, var(--brand-primary));
595
+ }
596
+
597
+ .viewer-ui-panel-renderer .panel-section-row-copy {
598
+ display: flex;
599
+ min-width: 0;
600
+ flex: 1 1 auto;
601
+ flex-direction: column;
602
+ gap: 2px;
603
+ }
604
+
605
+ .viewer-ui-panel-renderer .panel-section-row-label {
606
+ ${panelSystemCompactLabelCss}
607
+ display: block;
608
+ }
609
+
610
+ .viewer-ui-panel-renderer .panel-section-row-help {
611
+ ${panelSystemCompactBodyTextCss}
612
+ color: var(--viewer-ui-color-text-muted);
613
+ }
614
+
615
+ .viewer-ui-panel-renderer .panel-section-row-value {
616
+ ${panelSystemCompactValueCss}
617
+ color: currentColor;
618
+ max-width: 52%;
619
+ overflow-wrap: anywhere;
620
+ text-align: right;
621
+ white-space: normal;
622
+ font-variant-numeric: tabular-nums;
623
+ }
624
+
625
+ .viewer-ui-panel-renderer .panel-field {
626
+ display: flex;
627
+ flex-direction: column;
628
+ gap: 3px;
629
+ }
630
+
631
+ .viewer-ui-panel-renderer .panel-field--presentation-compactRange {
632
+ gap: 3px;
633
+ }
634
+
635
+ .viewer-ui-panel-renderer .panel-field--tier-advanced .panel-field-label-text,
636
+ .viewer-ui-panel-renderer .panel-field--tier-system .panel-field-label-text,
637
+ .viewer-ui-panel-renderer .panel-field--tier-advanced .panel-field-label,
638
+ .viewer-ui-panel-renderer .panel-field--tier-system .panel-field-label {
639
+ color: var(--viewer-ui-color-text-muted);
640
+ }
641
+
642
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-density='compact'] .panel-field,
643
+ .viewer-ui-panel-renderer .cfg-field-grid > [data-field-density='compact'] .panel-field {
644
+ gap: 2px;
645
+ }
646
+
647
+ .viewer-ui-panel-renderer .panel-section-empty {
648
+ ${panelSystemCompactBodyTextCss}
649
+ color: var(--viewer-ui-color-text-muted);
650
+ }
651
+
652
+ .viewer-ui-panel-renderer .panel-field-label {
653
+ ${panelSystemCompactLabelCss}
654
+ display: flex;
655
+ justify-content: flex-start;
656
+ align-items: baseline;
657
+ flex-wrap: wrap;
658
+ gap: 5px;
659
+ margin: 0;
660
+ font-size: 11px;
661
+ line-height: 1.25;
662
+ }
663
+
664
+ .viewer-ui-panel-renderer--flat .panel-field-label {
665
+ font-size: 11px;
666
+ font-weight: 300;
667
+ letter-spacing: 0;
668
+ text-transform: none;
669
+ color: var(--viewer-ui-color-text-subtle);
670
+ }
671
+
672
+ .viewer-ui-panel-renderer .panel-field-help {
673
+ ${panelSystemCompactBodyTextCss}
674
+ font-size: 11px;
675
+ line-height: 1.3;
676
+ color: var(--viewer-ui-color-text-subtle);
677
+ }
678
+
679
+ .viewer-ui-panel-renderer .panel-field-label-text {
680
+ ${panelSystemCompactLabelCss}
681
+ display: block;
682
+ }
683
+
684
+ .viewer-ui-panel-renderer .panel-field-unit {
685
+ ${panelSystemCompactBodyTextCss}
686
+ font-size: 11px;
687
+ line-height: 1.25;
688
+ color: var(--viewer-ui-color-text-muted);
689
+ }
690
+
691
+ .viewer-ui-panel-renderer .panel-chip-row {
692
+ display: flex;
693
+ flex-wrap: wrap;
694
+ gap: 6px;
695
+ }
696
+
697
+ .viewer-ui-panel-renderer .panel-inline-card,
698
+ .viewer-ui-panel-renderer .panel-action-card {
699
+ ${panelSystemCardCss}
700
+ padding: 10px 12px;
701
+ display: flex;
702
+ flex-direction: column;
703
+ gap: 6px;
704
+ }
705
+
706
+ .viewer-ui-panel-renderer .panel-action-card {
707
+ ${panelSystemActionCardCss}
708
+ min-height: 0;
709
+ align-items: stretch;
710
+ }
711
+
712
+ .viewer-ui-panel-renderer .panel-section-summary {
713
+ ${panelSystemMetricCardCss}
714
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 88%, var(--viewer-ui-color-control-hover) 12%);
715
+ display: flex;
716
+ flex-direction: column;
717
+ gap: 8px;
718
+ }
719
+
720
+ .viewer-ui-panel-renderer .panel-section-summary-head {
721
+ display: flex;
722
+ align-items: baseline;
723
+ justify-content: space-between;
724
+ gap: 10px;
725
+ }
726
+
727
+ .composer-map-search-widget {
728
+ width: 100%;
729
+ min-width: 320px;
730
+ height: 32px;
731
+ position: relative;
732
+ display: flex;
733
+ align-items: center;
734
+ gap: 8px;
735
+ pointer-events: auto;
736
+ z-index: 1;
737
+ }
738
+
739
+ .composer-map-search-widget[data-open='true'] {
740
+ z-index: 80;
741
+ }
742
+
743
+ .composer-map-search-input {
744
+ flex: 1 1 auto;
745
+ min-width: 0;
746
+ height: 32px;
747
+ border: 0;
748
+ background: transparent;
749
+ color: var(--viewer-ui-color-text-muted, #475569);
750
+ caret-color: var(--viewer-ui-color-text-muted, #475569);
751
+ font-size: 14px;
752
+ line-height: 32px;
753
+ padding: 0 12px;
754
+ outline: none;
755
+ border-radius: 4px;
756
+ }
757
+
758
+ .composer-map-search-input::placeholder {
759
+ color: var(--viewer-ui-color-text-subtle, rgba(100,116,139,0.72));
760
+ opacity: 1;
761
+ text-transform: none;
762
+ }
763
+
764
+ .composer-map-search-submit {
765
+ height: 32px;
766
+ min-width: 36px;
767
+ border: 0;
768
+ background: transparent;
769
+ color: var(--viewer-ui-color-text-muted, #475569);
770
+ font-size: 14px;
771
+ letter-spacing: 0;
772
+ text-transform: none;
773
+ padding: 0 10px;
774
+ cursor: pointer;
775
+ border-left: 1px solid var(--viewer-ui-color-panel-border-subtle, rgba(15,23,42,0.08));
776
+ }
777
+
778
+ .composer-map-search-submit:disabled {
779
+ opacity: 0.45;
780
+ cursor: default;
781
+ }
782
+
783
+ .composer-map-search-menu {
784
+ position: absolute;
785
+ left: 0;
786
+ right: 0;
787
+ bottom: calc(100% + 8px);
788
+ display: flex;
789
+ flex-direction: column;
790
+ gap: 2px;
791
+ padding: 6px;
792
+ border-radius: 4px;
793
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle, rgba(15,23,42,0.08));
794
+ background: var(--viewer-ui-color-surface-strong, rgba(255,255,255,0.98));
795
+ box-shadow: 0 16px 24px rgba(15,23,42,0.14);
796
+ max-height: min(320px, calc(100vh - 140px));
797
+ overflow-y: auto;
798
+ overflow-x: hidden;
799
+ overscroll-behavior: contain;
800
+ z-index: 81;
801
+ }
802
+
803
+ .composer-map-search-item {
804
+ border: 0;
805
+ background: transparent;
806
+ text-align: left;
807
+ padding: 8px 10px;
808
+ border-radius: 4px;
809
+ display: flex;
810
+ flex-direction: column;
811
+ gap: 2px;
812
+ color: var(--viewer-ui-color-text-muted, #475569);
813
+ cursor: pointer;
814
+ }
815
+
816
+ .composer-map-search-item[data-active='true'] {
817
+ background: var(--viewer-ui-color-button-primary, var(--brand-primary, #318f4e));
818
+ color: var(--viewer-ui-color-button-primary-text, #ffffff);
819
+ }
820
+
821
+ .composer-map-search-item[data-active='true'] .composer-map-search-item-meta {
822
+ color: currentColor;
823
+ opacity: 0.82;
824
+ }
825
+
826
+ .composer-map-search-item--status {
827
+ cursor: default;
828
+ opacity: 0.72;
829
+ }
830
+
831
+ .composer-map-search-item-label {
832
+ font-size: 14px;
833
+ line-height: 1.35;
834
+ }
835
+
836
+ .composer-map-search-item-meta {
837
+ font-size: 14px;
838
+ line-height: 1.4;
839
+ color: var(--viewer-ui-color-text-subtle, rgba(100,116,139,0.72));
840
+ }
841
+
842
+ .viewer-ui-panel-renderer .panel-section-summary-label {
843
+ ${panelSystemCompactLabelCss}
844
+ color: var(--viewer-ui-color-text-muted);
845
+ }
846
+
847
+ .viewer-ui-panel-renderer .panel-section-summary-value {
848
+ ${panelSystemCompactValueCss}
849
+ color: var(--viewer-ui-color-text-strong);
850
+ }
851
+
852
+ .viewer-ui-panel-renderer .panel-section-summary-copy {
853
+ ${panelSystemCompactBodyTextCss}
854
+ color: var(--viewer-ui-color-text-muted);
855
+ }
856
+
857
+ .viewer-ui-panel-renderer .panel-section-group-actions {
858
+ display: flex;
859
+ flex-wrap: wrap;
860
+ align-items: center;
861
+ gap: 6px;
862
+ }
863
+
864
+ .viewer-ui-panel-renderer .panel-section-group-actions--stack {
865
+ flex-direction: column;
866
+ align-items: stretch;
867
+ }
868
+
869
+ .viewer-ui-panel-renderer .panel-section-note {
870
+ ${panelSystemCompactBodyTextCss}
871
+ color: var(--viewer-ui-color-text-muted);
872
+ }
873
+
874
+ .viewer-ui-panel-renderer .preset-grid {
875
+ display: flex;
876
+ flex-wrap: wrap;
877
+ gap: 8px;
878
+ }
879
+
880
+ .viewer-ui-panel-renderer .preset-chip {
881
+ ${panelSystemFeatureToggleCss}
882
+ }
883
+
884
+ .viewer-ui-panel-renderer .panel-utility-row {
885
+ display: flex;
886
+ flex-wrap: wrap;
887
+ align-items: center;
888
+ gap: 6px;
889
+ }
890
+
891
+ .viewer-ui-panel-renderer .panel-utility-meta {
892
+ ${panelSystemCompactBodyTextCss}
893
+ color: var(--viewer-ui-color-text-muted);
894
+ }
895
+
896
+ .viewer-ui-panel-renderer .panel-utility-button {
897
+ ${panelSystemControlCss}
898
+ display: inline-flex;
899
+ align-items: center;
900
+ justify-content: center;
901
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
902
+ background: transparent;
903
+ color: var(--viewer-ui-color-text-muted);
904
+ padding: 5px 11px;
905
+ transition: border-color 150ms ease, color 150ms ease, background 150ms ease;
906
+ }
907
+
908
+ .viewer-ui-panel-renderer .panel-utility-button:hover {
909
+ border-color: var(--viewer-ui-color-panel-border);
910
+ color: var(--viewer-ui-color-text-strong);
911
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 72%, var(--viewer-ui-color-control-hover) 28%);
912
+ }
913
+
914
+ .viewer-ui-panel-renderer .panel-utility-button:disabled {
915
+ opacity: 0.6;
916
+ cursor: not-allowed;
917
+ }
918
+
919
+ .viewer-ui-panel-renderer .panel-reference-mode-row {
920
+ display: flex;
921
+ flex-wrap: wrap;
922
+ gap: 8px;
923
+ }
924
+
925
+ .viewer-ui-panel-renderer .panel-reference-mode-row .cfg-toggle {
926
+ min-height: 30px;
927
+ padding: 0 12px;
928
+ }
929
+
930
+ .viewer-ui-panel-renderer .panel-reference-mode-chip {
931
+ ${panelSystemControlCss}
932
+ display: inline-flex;
933
+ align-items: center;
934
+ justify-content: center;
935
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
936
+ background: var(--viewer-ui-color-panel-bg);
937
+ color: var(--viewer-ui-color-text-muted);
938
+ padding: 0 12px;
939
+ }
940
+
941
+ .viewer-ui-panel-renderer .panel-reference-upload {
942
+ ${panelSystemActionCardCss}
943
+ position: relative;
944
+ display: flex;
945
+ flex-direction: column;
946
+ align-items: center;
947
+ justify-content: center;
948
+ gap: 3px;
949
+ min-height: 86px;
950
+ border: 1px dashed var(--viewer-ui-color-panel-border);
951
+ padding: 12px 12px;
952
+ text-align: center;
953
+ color: var(--viewer-ui-color-text);
954
+ cursor: pointer;
955
+ overflow: hidden;
956
+ transition: border-color 150ms ease, background 150ms ease, color 150ms ease, opacity 150ms ease;
957
+ }
958
+
959
+ .viewer-ui-panel-renderer .panel-reference-upload:hover,
960
+ .viewer-ui-panel-renderer .panel-reference-upload[data-drop-active='true'] {
961
+ border-color: var(--viewer-ui-color-button-primary);
962
+ background: color-mix(in srgb, var(--viewer-ui-color-control-hover) 28%, var(--viewer-ui-color-surface) 72%);
963
+ color: var(--viewer-ui-color-text-strong);
964
+ }
965
+
966
+ .viewer-ui-panel-renderer .panel-reference-upload[data-disabled='true'] {
967
+ opacity: 0.55;
968
+ cursor: not-allowed;
969
+ }
970
+
971
+ .viewer-ui-panel-renderer .panel-reference-upload:focus-within {
972
+ border-color: var(--viewer-ui-color-button-primary);
973
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--viewer-ui-color-button-primary) 30%, transparent);
974
+ }
975
+
976
+ .viewer-ui-panel-renderer .panel-reference-upload-label {
977
+ ${panelSystemCompactLabelCss}
978
+ }
979
+
980
+ .viewer-ui-panel-renderer .panel-reference-upload-meta {
981
+ ${panelSystemCompactBodyTextCss}
982
+ color: var(--viewer-ui-color-text-muted);
983
+ }
984
+
985
+ .viewer-ui-panel-renderer .panel-reference-upload-input {
986
+ position: absolute;
987
+ inset: 0;
988
+ width: 100%;
989
+ height: 100%;
990
+ cursor: pointer;
991
+ opacity: 0;
992
+ }
993
+
994
+ .viewer-ui-panel-renderer .panel-reference-upload-input:disabled {
995
+ cursor: not-allowed;
996
+ }
997
+
998
+ .viewer-ui-panel-renderer .panel-reference-grid {
999
+ display: grid;
1000
+ grid-template-columns: repeat(auto-fit, minmax(88px, 1fr));
1001
+ gap: 8px;
1002
+ }
1003
+
1004
+ .viewer-ui-panel-renderer .panel-reference-thumb {
1005
+ position: relative;
1006
+ display: flex;
1007
+ flex-direction: column;
1008
+ gap: 4px;
1009
+ }
1010
+
1011
+ .viewer-ui-panel-renderer .panel-reference-thumb-open {
1012
+ border: 0;
1013
+ padding: 0;
1014
+ background: transparent;
1015
+ cursor: zoom-in;
1016
+ text-align: inherit;
1017
+ }
1018
+
1019
+ .viewer-ui-panel-renderer .panel-reference-thumb-image {
1020
+ display: block;
1021
+ width: 100%;
1022
+ aspect-ratio: 1 / 1;
1023
+ object-fit: cover;
1024
+ border-radius: 8px;
1025
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
1026
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 88%, var(--viewer-ui-color-control-hover) 12%);
1027
+ }
1028
+
1029
+ .viewer-ui-panel-renderer .panel-reference-thumb-name {
1030
+ ${panelSystemCompactBodyTextCss}
1031
+ color: var(--viewer-ui-color-text-muted);
1032
+ white-space: nowrap;
1033
+ overflow: hidden;
1034
+ text-overflow: ellipsis;
1035
+ }
1036
+
1037
+ .viewer-ui-panel-renderer .panel-reference-thumb-remove {
1038
+ ${panelSystemControlCss}
1039
+ position: absolute;
1040
+ top: 8px;
1041
+ right: 8px;
1042
+ min-height: 24px;
1043
+ border: 1px solid rgba(255, 255, 255, 0.2);
1044
+ background: rgba(15, 23, 42, 0.72);
1045
+ color: white;
1046
+ padding: 0 8px;
1047
+ backdrop-filter: blur(6px);
1048
+ }
1049
+
1050
+ .viewer-ui-panel-renderer .panel-reference-thumb-remove:hover {
1051
+ background: rgba(15, 23, 42, 0.86);
1052
+ }
1053
+
1054
+ .viewer-ui-panel-renderer .panel-reference-empty {
1055
+ ${panelSystemCompactBodyTextCss}
1056
+ color: var(--viewer-ui-color-text-muted);
1057
+ }
1058
+
1059
+ .viewer-ui-panel-renderer .panel-oneof-fields {
1060
+ display: flex;
1061
+ flex-direction: column;
1062
+ gap: 8px;
1063
+ margin-top: 6px;
1064
+ }
1065
+
1066
+ .viewer-ui-panel-renderer .panel-field-control {
1067
+ display: grid;
1068
+ grid-template-columns: minmax(0, 1fr) 64px;
1069
+ align-items: center;
1070
+ gap: 6px;
1071
+ }
1072
+
1073
+ .viewer-ui-panel-renderer .panel-field-control--range {
1074
+ align-items: center;
1075
+ }
1076
+
1077
+ .viewer-ui-panel-renderer .panel-field-control--color {
1078
+ grid-template-columns: minmax(0, 1fr);
1079
+ }
1080
+
1081
+ .viewer-ui-panel-renderer .panel-field--toggle {
1082
+ display: flex;
1083
+ flex-direction: column;
1084
+ gap: 4px;
1085
+ }
1086
+
1087
+ .viewer-ui-panel-renderer .panel-field--toggle .viewer-ui-kit-button {
1088
+ align-self: flex-start;
1089
+ padding: 6px 14px;
1090
+ font-size: 14px;
1091
+ letter-spacing: 0;
1092
+ text-transform: none;
1093
+ }
1094
+
1095
+ .viewer-ui-panel-renderer .panel-field--toggle .viewer-ui-kit-button {
1096
+ display: inline-flex;
1097
+ align-items: center;
1098
+ justify-content: center;
1099
+ min-width: 64px;
1100
+ font-family: var(--viewer-ui-font-body);
1101
+ }
1102
+
1103
+ .viewer-ui-panel-renderer .cfg-range-row,
1104
+ .viewer-ui-panel-renderer .panel-field-control--range {
1105
+ display: grid;
1106
+ grid-template-columns: minmax(0, 1fr) 64px;
1107
+ align-items: center;
1108
+ gap: 6px;
1109
+ }
1110
+
1111
+ .viewer-ui-panel-renderer .panel-range-field,
1112
+ .viewer-ui-panel-renderer .panel-number-field {
1113
+ display: flex;
1114
+ flex-direction: column;
1115
+ gap: 1px;
1116
+ }
1117
+
1118
+ .viewer-ui-panel-renderer .panel-range-field__meta {
1119
+ display: none;
1120
+ }
1121
+
1122
+ .viewer-ui-panel-renderer .panel-range-field__meta .panel-control-hint {
1123
+ display: none;
1124
+ }
1125
+
1126
+ .viewer-ui-panel-renderer .panel-range-field__slider,
1127
+ .viewer-ui-panel-renderer .cfg-range {
1128
+ ${panelSystemSliderCss}
1129
+ }
1130
+
1131
+ .viewer-ui-panel-renderer .panel-range-field__slider::-webkit-slider-runnable-track,
1132
+ .viewer-ui-panel-renderer .cfg-range::-webkit-slider-runnable-track {
1133
+ background: var(--viewer-ui-color-panel-border-subtle);
1134
+ height: 3px;
1135
+ border-radius: 999px;
1136
+ }
1137
+
1138
+ .viewer-ui-panel-renderer .panel-range-field__slider::-moz-range-track,
1139
+ .viewer-ui-panel-renderer .cfg-range::-moz-range-track {
1140
+ background: var(--viewer-ui-color-panel-border-subtle);
1141
+ height: 3px;
1142
+ border-radius: 999px;
1143
+ }
1144
+
1145
+ .viewer-ui-panel-renderer .panel-range-field__slider::-webkit-slider-thumb,
1146
+ .viewer-ui-panel-renderer .cfg-range::-webkit-slider-thumb {
1147
+ -webkit-appearance: none;
1148
+ appearance: none;
1149
+ width: 10px;
1150
+ height: 10px;
1151
+ margin-top: -3.5px;
1152
+ border-radius: 999px;
1153
+ background: var(--viewer-ui-color-button-primary);
1154
+ border: 0;
1155
+ box-shadow: none;
1156
+ }
1157
+
1158
+ .viewer-ui-panel-renderer .panel-range-field__slider::-moz-range-thumb,
1159
+ .viewer-ui-panel-renderer .cfg-range::-moz-range-thumb {
1160
+ width: 10px;
1161
+ height: 10px;
1162
+ border-radius: 999px;
1163
+ background: var(--viewer-ui-color-button-primary);
1164
+ border: 0;
1165
+ box-shadow: none;
1166
+ }
1167
+
1168
+ .viewer-ui-panel-renderer .panel-number-field {
1169
+ width: 100%;
1170
+ }
1171
+
1172
+ .viewer-ui-panel-renderer .panel-control-hint {
1173
+ font-size: 11px;
1174
+ line-height: 1.25;
1175
+ letter-spacing: 0;
1176
+ color: var(--viewer-ui-color-text-muted);
1177
+ padding-left: 1px;
1178
+ white-space: nowrap;
1179
+ }
1180
+
1181
+ .viewer-ui-panel-renderer .panel-number-field__input {
1182
+ ${panelSystemInputCss}
1183
+ min-height: 30px;
1184
+ padding: 4px 7px;
1185
+ font-size: 13px;
1186
+ }
1187
+
1188
+ .viewer-ui-panel-renderer .panel-number-field__input:focus {
1189
+ border-color: var(--viewer-ui-color-button-primary);
1190
+ box-shadow: none;
1191
+ }
1192
+
1193
+ .viewer-ui-panel-renderer .panel-number-field--compact .panel-number-field__input,
1194
+ .viewer-ui-panel-renderer .panel-point-input .panel-number-field__input,
1195
+ .viewer-ui-panel-renderer .panel-number-input .panel-number-field__input {
1196
+ min-height: 28px;
1197
+ padding: 1px 6px;
1198
+ text-align: center;
1199
+ font-size: 12px;
1200
+ }
1201
+
1202
+ .viewer-ui-panel-renderer .cfg-input,
1203
+ .viewer-ui-panel-renderer .cfg-select,
1204
+ .viewer-ui-panel-renderer .cfg-textarea {
1205
+ ${panelSystemInputCss}
1206
+ min-height: 30px;
1207
+ padding: 4px 7px;
1208
+ font-size: 13px;
1209
+ color: var(--viewer-ui-color-text);
1210
+ }
1211
+
1212
+ .viewer-ui-panel-renderer .cfg-input--compact {
1213
+ min-height: 28px;
1214
+ text-align: center;
1215
+ }
1216
+
1217
+ .viewer-ui-panel-renderer .cfg-textarea {
1218
+ min-height: 112px;
1219
+ resize: vertical;
1220
+ }
1221
+
1222
+ .viewer-ui-panel-renderer .cfg-toggle-group {
1223
+ ${panelSystemToggleBarCss}
1224
+ justify-content: flex-start;
1225
+ flex-wrap: wrap;
1226
+ }
1227
+
1228
+ .viewer-ui-panel-renderer .cfg-toggle {
1229
+ ${panelSystemFeatureToggleCss}
1230
+ }
1231
+
1232
+ .viewer-ui-panel-renderer .cfg-color-row {
1233
+ display: grid;
1234
+ grid-template-columns: 1fr auto;
1235
+ align-items: center;
1236
+ gap: 12px;
1237
+ }
1238
+
1239
+ .viewer-ui-panel-renderer .cfg-color {
1240
+ min-height: 48px;
1241
+ padding: 4px;
1242
+ }
1243
+
1244
+ .viewer-ui-panel-renderer .cfg-color-value {
1245
+ ${panelSystemBodyTextCss}
1246
+ color: var(--viewer-ui-color-text-muted);
1247
+ white-space: nowrap;
1248
+ }
1249
+
1250
+ .viewer-ui-panel-renderer .cfg-action-buttons {
1251
+ display: flex;
1252
+ flex-wrap: wrap;
1253
+ gap: 8px;
1254
+ }
1255
+
1256
+ .viewer-ui-panel-renderer .cfg-action-stack {
1257
+ display: flex;
1258
+ flex-direction: column;
1259
+ gap: 8px;
1260
+ }
1261
+
1262
+ .viewer-ui-panel-renderer .cfg-action-meta {
1263
+ ${panelSystemCompactBodyTextCss}
1264
+ color: var(--viewer-ui-color-text-muted);
1265
+ }
1266
+
1267
+ .viewer-ui-panel-renderer .cfg-action-status {
1268
+ ${panelSystemCompactBodyTextCss}
1269
+ padding: 8px 10px;
1270
+ border-radius: 4px;
1271
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
1272
+ background: color-mix(in srgb, var(--viewer-ui-color-panel-bg) 92%, transparent);
1273
+ }
1274
+
1275
+ .viewer-ui-panel-renderer .cfg-action-status--error {
1276
+ border-color: color-mix(in srgb, var(--viewer-ui-color-text-error, #b33b2e) 35%, var(--viewer-ui-color-panel-border-subtle));
1277
+ color: var(--viewer-ui-color-text-error, #b33b2e);
1278
+ }
1279
+
1280
+ .viewer-ui-panel-renderer .cfg-action-status--warning {
1281
+ border-color: color-mix(in srgb, #b7791f 35%, var(--viewer-ui-color-panel-border-subtle));
1282
+ color: color-mix(in srgb, #7c5a15 90%, var(--viewer-ui-color-text));
1283
+ background: color-mix(in srgb, #f6e7b0 16%, var(--viewer-ui-color-panel-bg));
1284
+ }
1285
+
1286
+ .viewer-ui-panel-renderer .cfg-action-status--ok {
1287
+ border-color: color-mix(in srgb, #2f855a 35%, var(--viewer-ui-color-panel-border-subtle));
1288
+ color: color-mix(in srgb, #21543c 90%, var(--viewer-ui-color-text));
1289
+ background: color-mix(in srgb, #d7f0df 18%, var(--viewer-ui-color-panel-bg));
1290
+ }
1291
+
1292
+ .viewer-ui-panel-renderer .inference-module-browser {
1293
+ display: flex;
1294
+ flex-direction: column;
1295
+ gap: 8px;
1296
+ min-width: 0;
1297
+ }
1298
+
1299
+ .viewer-ui-panel-renderer .inference-module-search {
1300
+ min-height: 36px;
1301
+ }
1302
+
1303
+ .viewer-ui-panel-renderer .inference-module-filter-group {
1304
+ ${panelSystemToggleBarCss}
1305
+ justify-content: flex-start;
1306
+ gap: 6px;
1307
+ padding-bottom: 2px;
1308
+ }
1309
+
1310
+ .viewer-ui-panel-renderer .inference-module-filter {
1311
+ ${panelSystemFeatureToggleCss}
1312
+ gap: 7px;
1313
+ }
1314
+
1315
+ .viewer-ui-panel-renderer .inference-module-filter strong {
1316
+ font-size: 14px;
1317
+ font-variant-numeric: tabular-nums;
1318
+ color: currentColor;
1319
+ opacity: 0.78;
1320
+ }
1321
+
1322
+ .viewer-ui-panel-renderer .inference-module-filter[data-empty='true']:not([data-active='true']) {
1323
+ opacity: 0.58;
1324
+ }
1325
+
1326
+ .viewer-ui-panel-renderer .inference-module-list {
1327
+ display: grid;
1328
+ gap: 8px;
1329
+ max-height: min(380px, calc(100vh - 360px));
1330
+ min-height: 156px;
1331
+ overflow-y: auto;
1332
+ overflow-x: hidden;
1333
+ overscroll-behavior: contain;
1334
+ padding-right: 4px;
1335
+ scrollbar-width: thin;
1336
+ scrollbar-color: var(--viewer-ui-color-panel-border) transparent;
1337
+ }
1338
+
1339
+ .viewer-ui-panel-renderer .inference-module-list::-webkit-scrollbar {
1340
+ width: 7px;
1341
+ }
1342
+
1343
+ .viewer-ui-panel-renderer .inference-module-list::-webkit-scrollbar-track {
1344
+ background: transparent;
1345
+ }
1346
+
1347
+ .viewer-ui-panel-renderer .inference-module-list::-webkit-scrollbar-thumb {
1348
+ border-radius: 999px;
1349
+ background: var(--viewer-ui-color-panel-border);
1350
+ }
1351
+
1352
+ .viewer-ui-panel-renderer .inference-module-row {
1353
+ ${panelSystemCardCss}
1354
+ width: 100%;
1355
+ min-height: 96px;
1356
+ display: flex;
1357
+ flex-direction: column;
1358
+ gap: 6px;
1359
+ color: var(--viewer-ui-color-text);
1360
+ padding: 12px 14px;
1361
+ text-align: left;
1362
+ cursor: pointer;
1363
+ transition: background 150ms ease, border-color 150ms ease, color 150ms ease;
1364
+ }
1365
+
1366
+ .viewer-ui-panel-renderer .inference-module-row:hover {
1367
+ border-color: var(--viewer-ui-color-panel-border);
1368
+ background: color-mix(in srgb, var(--viewer-ui-color-surface) 80%, var(--viewer-ui-color-control-hover) 20%);
1369
+ }
1370
+
1371
+ .viewer-ui-panel-renderer .inference-module-row[data-active='true'] {
1372
+ border-color: var(--viewer-ui-color-button-primary);
1373
+ background: color-mix(in srgb, var(--viewer-ui-color-button-primary) 9%, var(--viewer-ui-color-surface));
1374
+ }
1375
+
1376
+ .viewer-ui-panel-renderer .inference-module-row__top {
1377
+ display: flex;
1378
+ align-items: flex-start;
1379
+ justify-content: space-between;
1380
+ gap: 10px;
1381
+ }
1382
+
1383
+ .viewer-ui-panel-renderer .inference-module-row__title {
1384
+ ${panelSystemSubheadingCss}
1385
+ min-width: 0;
1386
+ color: var(--viewer-ui-color-text-strong);
1387
+ }
1388
+
1389
+ .viewer-ui-panel-renderer .inference-module-row__badge {
1390
+ ${panelSystemControlCss}
1391
+ flex: 0 0 auto;
1392
+ max-width: 108px;
1393
+ overflow: hidden;
1394
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
1395
+ background: var(--viewer-ui-color-panel-bg);
1396
+ color: var(--viewer-ui-color-text-muted);
1397
+ padding: 3px 7px;
1398
+ text-overflow: ellipsis;
1399
+ white-space: nowrap;
1400
+ }
1401
+
1402
+ .viewer-ui-panel-renderer .inference-module-row[data-state='ready'] .inference-module-row__badge {
1403
+ border-color: color-mix(in srgb, var(--viewer-ui-color-text-ok, var(--viewer-ui-color-button-primary)) 35%, var(--viewer-ui-color-panel-border-subtle));
1404
+ color: var(--viewer-ui-color-text-ok, var(--viewer-ui-color-button-primary));
1405
+ }
1406
+
1407
+ .viewer-ui-panel-renderer .inference-module-row[data-state='blocked'] .inference-module-row__badge {
1408
+ border-color: color-mix(in srgb, var(--viewer-ui-color-text-error, var(--viewer-ui-color-text)) 35%, var(--viewer-ui-color-panel-border-subtle));
1409
+ color: var(--viewer-ui-color-text-error, var(--viewer-ui-color-text));
1410
+ }
1411
+
1412
+ .viewer-ui-panel-renderer .inference-module-row__summary {
1413
+ ${panelSystemBodyTextCss}
1414
+ display: -webkit-box;
1415
+ overflow: hidden;
1416
+ color: var(--viewer-ui-color-text-muted);
1417
+ -webkit-box-orient: vertical;
1418
+ -webkit-line-clamp: 2;
1419
+ }
1420
+
1421
+ .viewer-ui-panel-renderer .inference-module-row__meta {
1422
+ ${panelSystemBodyTextCss}
1423
+ color: var(--viewer-ui-color-text-subtle);
1424
+ }
1425
+
1426
+ .viewer-ui-panel-renderer .inference-module-selection {
1427
+ ${panelSystemCardCss}
1428
+ ${panelSystemBodyTextCss}
1429
+ display: flex;
1430
+ flex-direction: column;
1431
+ gap: 5px;
1432
+ background: color-mix(in srgb, var(--viewer-ui-color-panel-bg) 94%, transparent);
1433
+ padding: 11px 12px;
1434
+ color: var(--viewer-ui-color-text-muted);
182
1435
  }
183
1436
 
184
- .viewer-ui-panel-renderer .panel-field--toggle .viewer-ui-kit-button {
185
- display: inline-flex;
186
- align-items: center;
187
- justify-content: center;
188
- min-width: 64px;
189
- font-family: var(--viewer-ui-font-body);
1437
+ .viewer-ui-panel-renderer .inference-module-selection strong {
1438
+ ${panelSystemValueCss}
1439
+ color: var(--viewer-ui-color-text-strong);
190
1440
  }
191
1441
 
192
- .viewer-ui-kit-button {
193
- border-radius: 999px;
194
- border: 1px solid var(--viewer-ui-color-button-primary);
195
- background: var(--viewer-ui-color-button-primary);
196
- color: var(--viewer-ui-color-text-strong);
197
- font-size: 12px;
198
- letter-spacing: 0.08em;
199
- text-transform: uppercase;
200
- font-family: var(--viewer-ui-font-body);
201
- font-weight: 600;
202
- padding: 10px 14px;
203
- cursor: pointer;
204
- transition: all 0.15s ease;
1442
+ .viewer-ui-panel-renderer .inference-module-selection small {
1443
+ ${panelSystemBodyTextCss}
1444
+ color: var(--viewer-ui-color-text-subtle);
205
1445
  }
206
1446
 
207
- .viewer-ui-kit-button:disabled {
1447
+ .viewer-ui-panel-renderer .cfg-button {
1448
+ ${panelSystemFeatureToggleCss}
1449
+ }
1450
+
1451
+ .viewer-ui-panel-renderer .cfg-button:disabled,
1452
+ .viewer-ui-panel-renderer .cfg-toggle:disabled {
1453
+ opacity: 0.6;
208
1454
  cursor: not-allowed;
209
- opacity: 0.65;
210
1455
  }
211
1456
 
212
- .viewer-ui-panel-renderer input:not([type='range']):not([type='color']):not([type='file']),
213
- .viewer-ui-panel-renderer select,
214
- .viewer-ui-panel-renderer textarea {
215
- width: 100%;
216
- background: var(--viewer-ui-color-panel-bg);
217
- border: 1px solid var(--viewer-ui-color-panel-border);
218
- color: var(--viewer-ui-color-text-strong);
219
- border-radius: 12px;
220
- padding: 6px 10px;
221
- font-size: 12px;
222
- font-family: var(--viewer-ui-font-body);
1457
+ .viewer-ui-panel-renderer .cfg-button--primary {
1458
+ background: var(--panel-system-accent);
1459
+ color: var(--viewer-ui-color-button-primary-text, rgb(255 255 255));
223
1460
  }
224
1461
 
225
- .viewer-ui-panel-renderer textarea {
226
- min-height: 96px;
227
- resize: vertical;
1462
+ .viewer-ui-panel-renderer .cfg-button--primary:hover {
1463
+ background: var(--viewer-ui-color-button-primary-hover, var(--panel-system-accent));
228
1464
  }
229
1465
 
230
- .viewer-ui-panel-renderer input[type='number'] {
231
- text-align: center;
232
- max-width: 96px;
1466
+ .viewer-ui-panel-renderer .cfg-button[data-tone='loading'] {
1467
+ background: var(--panel-system-accent);
1468
+ color: var(--viewer-ui-color-button-primary-text, rgb(255 255 255));
233
1469
  }
234
1470
 
235
- .viewer-ui-panel-renderer .panel-field-control input[type='number'] {
236
- max-width: 84px;
1471
+ .viewer-ui-panel-renderer .cfg-button[data-loading='true']:disabled {
1472
+ background: var(--panel-system-accent);
1473
+ color: var(--viewer-ui-color-button-primary-text, rgb(255 255 255));
1474
+ opacity: 1;
1475
+ cursor: progress;
237
1476
  }
238
1477
 
239
- .viewer-ui-panel-renderer input[type='range'] {
240
- accent-color: var(--viewer-ui-color-button-primary);
1478
+ .viewer-ui-panel-renderer .cfg-button--secondary {
1479
+ background: var(--panel-system-toggle-bg, rgba(255, 255, 255, 0.6));
1480
+ color: var(--panel-system-toggle-fg, rgb(0 0 0));
241
1481
  }
242
1482
 
243
- .viewer-ui-panel-renderer .panel-array-items,
244
- .viewer-ui-panel-renderer .panel-point-list,
245
- .viewer-ui-panel-renderer .panel-number-list {
246
- display: flex;
247
- flex-direction: column;
1483
+ .viewer-ui-panel-renderer .cfg-button__content {
1484
+ display: inline-flex;
1485
+ align-items: center;
1486
+ justify-content: center;
248
1487
  gap: 10px;
249
1488
  }
250
1489
 
251
- .viewer-ui-panel-renderer .panel-array-item,
252
- .viewer-ui-panel-renderer .panel-point-row,
253
- .viewer-ui-panel-renderer .panel-number-row {
254
- border: 1px solid var(--viewer-ui-color-panel-border);
255
- background: var(--viewer-ui-color-panel-bg);
256
- border-radius: 14px;
257
- padding: 10px;
258
- display: flex;
1490
+ .viewer-ui-panel-renderer .cfg-button__label-stack {
1491
+ display: inline-flex;
259
1492
  flex-direction: column;
260
- gap: 8px;
261
- }
262
-
263
- .viewer-ui-panel-renderer .panel-array-item-header,
264
- .viewer-ui-panel-renderer .panel-point-row,
265
- .viewer-ui-panel-renderer .panel-number-row {
266
- display: flex;
267
- align-items: center;
268
- justify-content: space-between;
269
- gap: 8px;
270
- font-size: 11px;
271
- text-transform: uppercase;
272
- letter-spacing: 0.12em;
273
- color: var(--viewer-ui-color-text-subtle);
1493
+ align-items: flex-start;
1494
+ gap: 2px;
1495
+ line-height: 1.05;
274
1496
  }
275
1497
 
276
- .viewer-ui-panel-renderer .panel-point-inputs {
277
- display: grid;
278
- grid-template-columns: repeat(auto-fit, minmax(52px, 1fr));
279
- gap: 8px;
1498
+ .viewer-ui-panel-renderer .cfg-button__meta {
1499
+ ${panelSystemBodyTextCss}
1500
+ opacity: 0.9;
280
1501
  }
281
1502
 
282
- .viewer-ui-panel-renderer .panel-array-actions button,
283
- .viewer-ui-panel-renderer .panel-array-item-header button,
284
- .viewer-ui-panel-renderer .panel-point-remove,
285
- .viewer-ui-panel-renderer .panel-number-remove {
1503
+ .viewer-ui-panel-renderer .cfg-button__spinner {
1504
+ width: 12px;
1505
+ height: 12px;
286
1506
  border-radius: 999px;
287
- border: 1px solid var(--viewer-ui-color-panel-border-subtle);
288
- background: transparent;
289
- color: var(--viewer-ui-color-text-muted);
290
- padding: 4px 10px;
291
- font-size: 10px;
292
- letter-spacing: 0.12em;
293
- text-transform: uppercase;
294
- font-family: var(--viewer-ui-font-body);
1507
+ border: 2px solid color-mix(in srgb, var(--viewer-ui-color-button-primary-text) 35%, transparent);
1508
+ border-top-color: var(--viewer-ui-color-button-primary-text);
1509
+ animation: cfg-button-spin 0.75s linear infinite;
1510
+ flex: 0 0 auto;
295
1511
  }
296
1512
 
297
- .viewer-ui-panel-renderer .panel-array-actions button:hover,
298
- .viewer-ui-panel-renderer .panel-array-item-header button:hover,
299
- .viewer-ui-panel-renderer .panel-point-remove:hover,
300
- .viewer-ui-panel-renderer .panel-number-remove:hover {
301
- color: var(--viewer-ui-color-text-strong);
302
- border-color: var(--viewer-ui-color-panel-border);
1513
+ .viewer-ui-panel-renderer .cfg-button--compact {
1514
+ min-height: 28px;
1515
+ padding: 0 9px;
1516
+ font-size: 12px;
1517
+ letter-spacing: 0;
303
1518
  }
304
1519
 
305
1520
  .viewer-ui-kit-button {
306
- border-radius: 999px;
307
- border: 1px solid var(--viewer-ui-color-panel-border-subtle);
308
- background: var(--viewer-ui-color-panel-bg);
309
- color: var(--viewer-ui-color-text);
310
- transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
1521
+ ${panelSystemFeatureToggleCss}
1522
+ }
1523
+
1524
+ .viewer-ui-kit-button:disabled {
1525
+ cursor: not-allowed;
1526
+ opacity: 0.65;
311
1527
  }
312
1528
 
313
1529
  .viewer-ui-kit-button:hover {
@@ -331,185 +1547,228 @@ export const PanelSkin = createGlobalStyle `
331
1547
  color: var(--viewer-ui-color-text);
332
1548
  }
333
1549
 
334
- .viewer-ui-panel-renderer .panel-field-control input[type='number'] {
335
- width: 72px;
1550
+ .viewer-ui-panel-renderer input:not([type='range']):not([type='color']):not([type='file']),
1551
+ .viewer-ui-panel-renderer select,
1552
+ .viewer-ui-panel-renderer textarea {
1553
+ ${panelSystemInputCss}
1554
+ background: var(--viewer-ui-color-panel-bg);
1555
+ min-height: 30px;
1556
+ padding: 4px 7px;
1557
+ font-size: 13px;
1558
+ }
1559
+
1560
+ .viewer-ui-panel-renderer .panel-control-matrix input.panel-number-field__input:not([type='range']):not([type='color']):not([type='file']),
1561
+ .viewer-ui-panel-renderer .panel-control-matrix select.cfg-select {
1562
+ min-height: 26px;
1563
+ padding: 1px 5px;
1564
+ border-color: transparent;
1565
+ background: transparent;
1566
+ font-size: 12px;
336
1567
  text-align: center;
337
- height: 32px;
338
1568
  }
339
1569
 
340
- .viewer-ui-panel-renderer input:not([type='range']):not([type='checkbox']),
341
- .viewer-ui-panel-renderer select,
342
- .viewer-ui-panel-renderer textarea {
343
- border-radius: 10px;
344
- border: 1px solid var(--viewer-ui-color-panel-border-subtle);
1570
+ .viewer-ui-panel-renderer .panel-compact-field input.panel-number-field__input:not([type='range']):not([type='color']):not([type='file']),
1571
+ .viewer-ui-panel-renderer .panel-compact-field select.cfg-select,
1572
+ .viewer-ui-panel-renderer .panel-compact-field input.cfg-input:not([type='range']):not([type='color']):not([type='file']) {
1573
+ min-height: 26px;
1574
+ padding: 1px 6px;
1575
+ font-size: 12px;
1576
+ }
1577
+
1578
+ .viewer-ui-panel-renderer .panel-control-matrix input.panel-number-field__input:not([type='range']):not([type='color']):not([type='file']):focus,
1579
+ .viewer-ui-panel-renderer .panel-control-matrix select.cfg-select:focus {
1580
+ border-color: var(--viewer-ui-color-button-primary);
345
1581
  background: var(--viewer-ui-color-surface);
346
- color: var(--viewer-ui-color-text);
347
- padding: 8px 10px;
348
- font-size: 13px;
349
- outline: none;
350
1582
  }
351
1583
 
352
- .viewer-ui-panel-renderer input[type='range'] {
353
- padding: 0;
354
- height: 22px;
355
- flex: 1;
356
- accent-color: var(--viewer-ui-color-button-primary);
357
- -webkit-appearance: none;
358
- appearance: none;
1584
+ .viewer-ui-panel-renderer .panel-control-matrix__toggle {
1585
+ min-height: 26px;
1586
+ width: 100%;
1587
+ padding: 0 6px;
1588
+ font-size: 11px;
1589
+ line-height: 1.1;
359
1590
  }
360
1591
 
361
- .viewer-ui-panel-renderer input[type='range']::-webkit-slider-thumb {
362
- background: var(--viewer-ui-color-button-primary);
363
- border: 0;
1592
+ .viewer-ui-panel-renderer textarea {
1593
+ min-height: 96px;
1594
+ resize: vertical;
364
1595
  }
365
1596
 
366
- .viewer-ui-panel-renderer input[type='range']::-moz-range-thumb {
367
- background: var(--viewer-ui-color-button-primary);
368
- border: 0;
1597
+ .viewer-ui-panel-renderer input[type='number']::-webkit-outer-spin-button,
1598
+ .viewer-ui-panel-renderer input[type='number']::-webkit-inner-spin-button {
1599
+ -webkit-appearance: none;
1600
+ margin: 0;
369
1601
  }
370
1602
 
371
- .viewer-ui-panel-renderer input[type='range']::-webkit-slider-runnable-track {
372
- background: var(--viewer-ui-color-panel-border-subtle);
373
- height: 4px;
374
- border-radius: 999px;
1603
+ .viewer-ui-panel-renderer input[type='number'] {
1604
+ -moz-appearance: textfield;
375
1605
  }
376
1606
 
377
- .viewer-ui-panel-renderer input[type='range']::-moz-range-track {
378
- background: var(--viewer-ui-color-panel-border-subtle);
379
- height: 4px;
380
- border-radius: 999px;
1607
+ .viewer-ui-panel-renderer .panel-field-control input[type='number'] {
1608
+ width: 100%;
1609
+ max-width: none;
381
1610
  }
382
1611
 
383
- .viewer-ui-panel-renderer .panel-array-item {
384
- border: 1px solid var(--viewer-ui-color-panel-border-subtle);
385
- border-radius: 12px;
386
- padding: 10px;
387
- background: var(--viewer-ui-color-surface);
388
- display: flex;
389
- flex-direction: column;
390
- gap: 10px;
1612
+ .viewer-ui-panel-renderer input[type='range'] {
1613
+ accent-color: var(--viewer-ui-color-button-primary);
391
1614
  }
392
1615
 
393
- .viewer-ui-panel-renderer--flat .panel-array-item {
394
- border: 0;
395
- border-radius: 0;
396
- padding: 0;
397
- background: transparent;
1616
+ .viewer-ui-panel-renderer .panel-array-items,
1617
+ .viewer-ui-panel-renderer .panel-point-list,
1618
+ .viewer-ui-panel-renderer .panel-number-list {
1619
+ display: flex;
1620
+ flex-direction: column;
398
1621
  gap: 8px;
399
1622
  }
400
1623
 
401
- .viewer-ui-panel-renderer--flat .panel-array-item-header,
402
- .viewer-ui-panel-renderer--flat .panel-array-actions {
403
- border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
404
- padding-bottom: 6px;
405
- margin-bottom: 6px;
1624
+ .viewer-ui-panel-renderer .panel-array-item,
1625
+ .viewer-ui-panel-renderer .panel-point-row,
1626
+ .viewer-ui-panel-renderer .panel-number-row {
1627
+ ${panelSystemCardCss}
1628
+ padding: 10px;
1629
+ display: flex;
1630
+ flex-direction: column;
1631
+ gap: 10px;
406
1632
  }
407
1633
 
408
1634
  .viewer-ui-panel-renderer .panel-array-item-header,
409
1635
  .viewer-ui-panel-renderer .panel-array-actions {
1636
+ ${panelSystemLabelCss}
410
1637
  display: flex;
411
- justify-content: space-between;
412
1638
  align-items: center;
413
- font-size: 10px;
414
- text-transform: uppercase;
415
- letter-spacing: 0.1em;
416
- color: var(--viewer-ui-color-text-muted);
1639
+ justify-content: space-between;
1640
+ gap: 8px;
417
1641
  }
418
1642
 
419
- .viewer-ui-panel-renderer .panel-array-item button,
420
- .viewer-ui-panel-renderer .panel-array-actions button {
421
- border-radius: 999px;
422
- border: 1px solid var(--viewer-ui-color-panel-border);
423
- background: transparent;
424
- color: var(--viewer-ui-color-text-muted);
425
- font-size: 10px;
426
- padding: 4px 8px;
427
- cursor: pointer;
1643
+ .viewer-ui-panel-renderer .panel-array-item-controls {
1644
+ display: flex;
1645
+ align-items: center;
1646
+ gap: 6px;
1647
+ flex-wrap: wrap;
1648
+ justify-content: flex-end;
428
1649
  }
429
1650
 
430
- .viewer-ui-panel-renderer .panel-point-list,
431
- .viewer-ui-panel-renderer .panel-number-list {
1651
+ .viewer-ui-panel-renderer .panel-point-disclosure {
432
1652
  display: flex;
433
1653
  flex-direction: column;
434
- gap: 10px;
1654
+ gap: 8px;
435
1655
  }
436
1656
 
437
- .viewer-ui-panel-renderer .panel-point-row,
438
- .viewer-ui-panel-renderer .panel-number-row {
1657
+ .viewer-ui-panel-renderer .panel-point-summary {
1658
+ ${panelSystemLabelCss}
439
1659
  display: flex;
440
1660
  align-items: center;
1661
+ justify-content: space-between;
441
1662
  gap: 10px;
442
- padding: 8px 10px;
443
- border-radius: 12px;
1663
+ color: var(--viewer-ui-color-text-subtle);
1664
+ }
1665
+
1666
+ .viewer-ui-panel-renderer .panel-point-summary-pill {
1667
+ ${panelSystemControlCss}
1668
+ display: inline-flex;
1669
+ align-items: center;
1670
+ justify-content: center;
1671
+ padding: 0 12px;
444
1672
  border: 1px solid var(--viewer-ui-color-panel-border-subtle);
445
1673
  background: var(--viewer-ui-color-surface);
1674
+ color: var(--viewer-ui-color-text-muted);
446
1675
  }
447
1676
 
448
- .viewer-ui-panel-renderer--flat .panel-point-row,
449
- .viewer-ui-panel-renderer--flat .panel-number-row {
450
- border: 0;
451
- background: transparent;
452
- padding: 6px 0;
453
- border-bottom: 1px solid var(--viewer-ui-color-panel-border-subtle);
1677
+ .viewer-ui-panel-renderer .panel-point-summary-pill[data-empty='true'] {
1678
+ color: var(--viewer-ui-color-text-subtle);
454
1679
  }
455
1680
 
456
- .viewer-ui-panel-renderer--flat .panel-point-row:last-child,
457
- .viewer-ui-panel-renderer--flat .panel-number-row:last-child {
458
- border-bottom: 0;
1681
+ .viewer-ui-panel-renderer .panel-point-details {
1682
+ ${panelSystemCardCss}
1683
+ border: 1px solid var(--viewer-ui-color-panel-border-subtle);
1684
+ background: var(--viewer-ui-color-panel-bg);
1685
+ overflow: hidden;
459
1686
  }
460
1687
 
461
- .viewer-ui-panel-renderer .panel-point-label {
462
- font-size: 10px;
463
- text-transform: uppercase;
464
- letter-spacing: 0.12em;
465
- color: var(--viewer-ui-color-text-muted);
466
- min-width: 72px;
1688
+ .viewer-ui-panel-renderer .panel-point-details-toggle {
1689
+ ${panelSystemLabelCss}
1690
+ cursor: pointer;
1691
+ list-style: none;
1692
+ padding: 12px 14px;
1693
+ color: var(--viewer-ui-color-text-subtle);
1694
+ }
1695
+
1696
+ .viewer-ui-panel-renderer .panel-point-details-toggle::-webkit-details-marker {
1697
+ display: none;
1698
+ }
1699
+
1700
+ .viewer-ui-panel-renderer .panel-point-details-body {
1701
+ display: flex;
1702
+ flex-direction: column;
1703
+ gap: 10px;
1704
+ padding: 0 12px 12px;
467
1705
  }
468
1706
 
469
1707
  .viewer-ui-panel-renderer .panel-point-inputs {
470
1708
  display: grid;
471
- grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
1709
+ grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
472
1710
  gap: 8px;
473
- flex: 1;
474
1711
  }
475
1712
 
476
- .viewer-ui-panel-renderer .panel-point-row input[type='number'],
477
- .viewer-ui-panel-renderer .panel-number-row input[type='number'] {
478
- width: 100%;
479
- text-align: center;
480
- height: 32px;
1713
+ .viewer-ui-panel-renderer .panel-array-item-fields {
1714
+ display: grid;
1715
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1716
+ gap: 12px 16px;
481
1717
  }
482
1718
 
1719
+ .viewer-ui-panel-renderer .panel-array-item-fields > * {
1720
+ min-width: 0;
1721
+ }
1722
+
1723
+ .viewer-ui-panel-renderer .panel-array-actions button,
1724
+ .viewer-ui-panel-renderer .panel-array-item-header button,
483
1725
  .viewer-ui-panel-renderer .panel-point-remove,
484
- .viewer-ui-panel-renderer .panel-number-remove {
485
- border-radius: 999px;
486
- border: 1px solid var(--viewer-ui-color-panel-border);
487
- background: transparent;
1726
+ .viewer-ui-panel-renderer .panel-number-remove,
1727
+ .viewer-ui-panel-renderer .panel-array-move {
1728
+ ${panelSystemControlCss}
1729
+ background: var(--viewer-ui-color-panel-bg);
488
1730
  color: var(--viewer-ui-color-text-muted);
489
- font-size: 10px;
490
- padding: 4px 8px;
491
- cursor: pointer;
1731
+ padding: 0 12px;
1732
+ min-height: 32px;
1733
+ }
1734
+
1735
+ .viewer-ui-panel-renderer .panel-array-actions button:hover,
1736
+ .viewer-ui-panel-renderer .panel-array-item-header button:hover,
1737
+ .viewer-ui-panel-renderer .panel-point-remove:hover,
1738
+ .viewer-ui-panel-renderer .panel-number-remove:hover,
1739
+ .viewer-ui-panel-renderer .panel-array-move:hover {
1740
+ color: var(--viewer-ui-color-text-strong);
1741
+ border-color: var(--viewer-ui-color-panel-border);
1742
+ }
1743
+
1744
+ .viewer-ui-panel-renderer .panel-action-card .viewer-ui-kit-button {
1745
+ width: 100%;
1746
+ justify-content: center;
1747
+ }
1748
+
1749
+ .viewer-ui-panel-renderer .panel-action-card .cfg-button {
1750
+ width: 100%;
1751
+ justify-content: center;
492
1752
  }
493
1753
 
494
1754
  .viewer-ui-kit-pill {
495
1755
  width: 100%;
496
- border-radius: 999px;
497
- border: 1px solid var(--viewer-ui-color-panel-border);
498
- background: var(--viewer-ui-color-surface-strong);
499
- padding: 10px 14px;
1756
+ border-radius: 0;
1757
+ border: 0;
1758
+ border-bottom: 1px solid var(--viewer-ui-color-panel-border);
1759
+ background: transparent;
1760
+ padding: 0 0 10px;
500
1761
  display: flex;
501
1762
  align-items: center;
502
1763
  justify-content: space-between;
503
1764
  gap: 12px;
504
1765
  flex-wrap: nowrap;
505
1766
  cursor: pointer;
506
- transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
1767
+ transition: color 0.16s ease, border-color 0.16s ease;
507
1768
  }
508
1769
 
509
1770
  .viewer-ui-kit-pill:hover {
510
- box-shadow: 0 6px 14px rgba(15, 23, 42, 0.2);
511
- transform: translateY(-1px);
512
- border-color: var(--viewer-ui-color-button-primary);
1771
+ border-color: var(--viewer-ui-color-text-strong);
513
1772
  }
514
1773
 
515
1774
  .viewer-ui-kit-pill--loading {
@@ -517,27 +1776,20 @@ export const PanelSkin = createGlobalStyle `
517
1776
  }
518
1777
 
519
1778
  .viewer-ui-kit-pill--loading:hover {
520
- box-shadow: none;
521
- transform: none;
522
1779
  border-color: var(--viewer-ui-color-panel-border);
523
1780
  }
524
1781
 
525
1782
  .viewer-ui-kit-pill-title {
526
- font-size: 20px;
527
- font-weight: 600;
528
- font-family: var(--viewer-ui-font-display);
1783
+ ${panelSystemValueCss}
1784
+ font-size: 15px;
529
1785
  color: var(--viewer-ui-color-text-strong);
530
- letter-spacing: 0.06em;
531
- text-transform: lowercase;
532
1786
  white-space: nowrap;
533
1787
  overflow: hidden;
534
1788
  text-overflow: ellipsis;
535
1789
  }
536
1790
 
537
1791
  .viewer-ui-kit-pill-action {
538
- font-size: 9px;
539
- text-transform: lowercase;
540
- letter-spacing: 0.22em;
1792
+ ${panelSystemBodyTextCss}
541
1793
  color: var(--viewer-ui-color-text-muted);
542
1794
  transition: color 0.2s ease;
543
1795
  white-space: nowrap;
@@ -548,13 +1800,11 @@ export const PanelSkin = createGlobalStyle `
548
1800
  }
549
1801
 
550
1802
  .viewer-ui-kit-pill-status {
1803
+ ${panelSystemBodyTextCss}
551
1804
  display: flex;
552
1805
  align-items: center;
553
1806
  gap: 10px;
554
- font-size: 12px;
555
- font-weight: 600;
556
1807
  color: var(--viewer-ui-color-text-muted);
557
- letter-spacing: 0.02em;
558
1808
  }
559
1809
 
560
1810
  .viewer-ui-kit-pill-spinner {
@@ -590,4 +1840,40 @@ export const PanelSkin = createGlobalStyle `
590
1840
  transform: translateY(-2px);
591
1841
  }
592
1842
  }
1843
+
1844
+ @media (max-width: 780px) {
1845
+ .viewer-ui-panel-renderer .panel-section-fields,
1846
+ .viewer-ui-panel-renderer .cfg-field-grid,
1847
+ .viewer-ui-panel-renderer .panel-array-item-fields,
1848
+ .viewer-ui-panel-renderer .panel-field-control {
1849
+ grid-template-columns: minmax(0, 1fr);
1850
+ }
1851
+
1852
+ .viewer-ui-panel-renderer .cfg-range-row,
1853
+ .viewer-ui-panel-renderer .panel-field-control--range,
1854
+ .viewer-ui-panel-renderer .cfg-color-row {
1855
+ grid-template-columns: minmax(0, 1fr);
1856
+ }
1857
+
1858
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='half'],
1859
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='sm'],
1860
+ .viewer-ui-panel-renderer .panel-section-fields > [data-field-width='compact'] {
1861
+ grid-column: 1 / -1;
1862
+ }
1863
+
1864
+ .viewer-ui-panel-renderer .panel-compact-field {
1865
+ grid-template-columns: minmax(0, 1fr);
1866
+ align-items: stretch;
1867
+ gap: 4px;
1868
+ }
1869
+
1870
+ .viewer-ui-panel-renderer .panel-compact-field__control {
1871
+ justify-self: stretch;
1872
+ }
1873
+
1874
+ .viewer-ui-panel-renderer .panel-array-table__header,
1875
+ .viewer-ui-panel-renderer .panel-array-table__row {
1876
+ grid-template-columns: minmax(82px, 0.9fr) repeat(var(--panel-array-table-columns, 2), minmax(58px, 1fr));
1877
+ }
1878
+ }
593
1879
  `;