@kingsimba/nc-ui 0.1.11 → 0.1.12

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.
package/dist/styles.css DELETED
@@ -1,1429 +0,0 @@
1
- :root {
2
- color-scheme: dark;
3
-
4
- /* Core colors */
5
- --nc-bg: #171e27;
6
- --nc-bg-secondary: #1a2332;
7
- --nc-bg-tertiary: #232d3d;
8
- --nc-bg-quaternary: #2c3847;
9
- --nc-bg-text: var(--nc-bg);
10
- --nc-muted: #7a8a9a;
11
- --nc-text: #e8eef6;
12
- --nc-text-weak: #6b7280;
13
- --nc-text-weaker: #4b5563;
14
- --nc-primary: #3b82f6;
15
- --nc-danger: #ef4444;
16
- --nc-warning: #f59e0b;
17
- --nc-success: #22c55e;
18
-
19
- /* UI element colors */
20
- --nc-border: #1f2937;
21
- --nc-button-border: #223042;
22
- --nc-button-bg: var(--nc-bg-tertiary);
23
- --nc-button-hover: #162332;
24
- --nc-button-active: #1d2e42;
25
- --nc-input-bg: var(--nc-bg-tertiary);
26
- --nc-overlay-hover: rgba(255, 255, 255, 0.05);
27
-
28
- /* YAML syntax highlighting */
29
- --nc-code-string: #f48771;
30
- --nc-code-boolean: #7cc5ff;
31
- --nc-code-null: #7cc5ff;
32
- --nc-code-number: #b5cea8;
33
- --nc-code-key: #9cdcfe;
34
- --nc-code-comment: #6a9955;
35
- }
36
-
37
- /* Light theme */
38
- :root.light {
39
- color-scheme: light;
40
-
41
- /* Core colors */
42
- --nc-bg: #dde5ef;
43
- --nc-bg-secondary: #e8eef5;
44
- --nc-bg-tertiary: #f8fafc;
45
- --nc-bg-quaternary: #ffffff;
46
- --nc-bg-text: var(--nc-bg-quaternary);
47
- --nc-muted: #64748b;
48
- --nc-text: #1e293b;
49
- --nc-text-weak: #64748b;
50
- --nc-text-weaker: #b5c2d5;
51
- --nc-primary: #2563eb;
52
- --nc-danger: #dc2626;
53
- --nc-warning: #d97706;
54
- --nc-success: #16a34a;
55
-
56
- /* UI element colors */
57
- --nc-border: #e2e8f0;
58
- --nc-button-border: #cbd5e1;
59
- --nc-button-bg: var(--nc-bg-tertiary);
60
- --nc-button-hover: #f1f5f9;
61
- --nc-button-active: #e2e8f0;
62
- --nc-input-bg: var(--nc-bg-tertiary);
63
- --nc-overlay-hover: rgba(0, 0, 0, 0.05);
64
-
65
- /* YAML syntax highlighting */
66
- --nc-code-string: #a31515;
67
- --nc-code-boolean: #0000ff;
68
- --nc-code-null: #0000ff;
69
- --nc-code-number: #098658;
70
- --nc-code-key: #001080;
71
- --nc-code-comment: #008000;
72
- }
73
-
74
- /* ===== REUSABLE PUBLIC STYLES ===== */
75
-
76
- /* Typography - Headings */
77
- h1, .h1 { font-size: 2rem; font-weight: 700; color: var(--nc-text); margin: 0.5em 0 0.5em 0; line-height: 1.2; }
78
- h1:first-child, .h1:first-child { margin-top: 0; }
79
- h2, .h2 { font-size: 1.5rem; font-weight: 600; color: var(--nc-text); margin: 0.5em 0 0.5em 0; line-height: 1.3; }
80
- h2:first-child, .h2:first-child { margin-top: 0; }
81
- h3, .h3 { font-size: 1.25rem; font-weight: 600; color: var(--nc-text); margin: 0.4em 0 0.4em 0; line-height: 1.4; }
82
- h3:first-child, .h3:first-child { margin-top: 0; }
83
- h4, .h4 { font-size: 1rem; font-weight: 600; color: var(--nc-text); margin: 0.4em 0 0.4em 0; line-height: 1.4; }
84
- h4:first-child, .h4:first-child { margin-top: 0; }
85
-
86
- /* Text colors */
87
- p.weak { color: var(--nc-text-weak); }
88
- p.weaker { color: var(--nc-text-weaker); }
89
-
90
- /* Inline code */
91
- code, .code {
92
- font-family: 'SF Mono', 'Menlo', 'Monaco', 'Consolas', monospace;
93
- font-size: 0.875em;
94
- padding: 2px 6px;
95
- border-radius: 4px;
96
- background: var(--nc-bg-tertiary);
97
- color: var(--nc-text);
98
- border: 1px solid var(--nc-border);
99
- }
100
-
101
- /* Code block */
102
- .code-block {
103
- font-family: 'SF Mono', 'Menlo', 'Monaco', 'Consolas', monospace;
104
- font-size: 13px;
105
- padding: 16px;
106
- border-radius: 8px;
107
- background: var(--nc-bg-tertiary);
108
- color: var(--nc-text);
109
- border: 1px solid var(--nc-border);
110
- overflow-x: auto;
111
- white-space: pre;
112
- line-height: 1.5;
113
- }
114
-
115
- /* Tags */
116
- .tag {
117
- display: inline-flex;
118
- align-items: center;
119
- padding: 4px 10px;
120
- border-radius: 9999px;
121
- font-size: 12px;
122
- font-weight: 500;
123
- background: var(--nc-bg-tertiary);
124
- color: var(--nc-text);
125
- border: 1px solid var(--nc-border);
126
- white-space: nowrap;
127
- }
128
-
129
- .tag.red { background: rgba(239, 68, 68, 0.15); color: #f87171; border-color: rgba(239, 68, 68, 0.3); }
130
- .tag.yellow { background: rgba(245, 158, 11, 0.15); color: #fbbf24; border-color: rgba(245, 158, 11, 0.3); }
131
- .tag.green { background: rgba(34, 197, 94, 0.15); color: #4ade80; border-color: rgba(34, 197, 94, 0.3); }
132
- .tag.blue { background: rgba(59, 130, 246, 0.15); color: #60a5fa; border-color: rgba(59, 130, 246, 0.3); }
133
-
134
- /* Light theme tag adjustments */
135
- :root.light .tag.red { color: #dc2626; }
136
- :root.light .tag.yellow { color: #d97706; }
137
- :root.light .tag.green { color: #16a34a; }
138
- :root.light .tag.blue { color: #2563eb; }
139
-
140
- /* Block container */
141
- .block {
142
- padding: 16px;
143
- border-radius: 8px;
144
- background: var(--nc-bg-quaternary);
145
- border: 1px solid var(--nc-border);
146
- margin: 0;
147
- position: relative;
148
- }
149
-
150
- .block.icon { padding-left: 44px; }
151
-
152
- .block.icon::before {
153
- position: absolute;
154
- left: 14px;
155
- top: 16px;
156
- font-size: 18px;
157
- line-height: 1;
158
- }
159
-
160
- .block.note { background: rgba(59, 130, 246, 0.1); border-color: rgba(59, 130, 246, 0.3); }
161
- .block.note.icon::before { content: "ℹ️"; }
162
-
163
- .block.warning { background: rgba(245, 158, 11, 0.1); border-color: rgba(245, 158, 11, 0.3); }
164
- .block.warning.icon::before { content: "⚠️"; }
165
-
166
- .block.danger { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.3); }
167
- .block.danger.icon::before { content: "🚨"; }
168
-
169
- .block.dashed { border-style: dashed; border-width: 2px; }
170
-
171
- /* Paragraph */
172
- p { margin: 0.5em 0; color: var(--nc-text); }
173
- p:first-child { margin-top: 0; }
174
-
175
- /* Lists */
176
- ul, ol { margin: 0.5em 0; padding-left: 1.5em; color: var(--nc-text); }
177
- ul.no-dots { list-style-type: none; padding-left: 0; }
178
- li { margin: 0.75em 0; }
179
- li::marker { color: var(--nc-text-weak); }
180
-
181
- /* Button component */
182
- .nc-button {
183
- padding: 9px 14px;
184
- border-radius: 8px;
185
- border: 1px solid var(--nc-button-border);
186
- background: var(--nc-button-bg);
187
- color: var(--nc-text);
188
- cursor: pointer;
189
- transition: background 100ms, transform 80ms;
190
- text-transform: uppercase;
191
- display: inline-flex;
192
- align-items: center;
193
- gap: 8px;
194
- justify-content: center;
195
- position: relative;
196
- }
197
-
198
- .nc-button:hover { background: var(--nc-button-hover); }
199
- .nc-button:active { transform: scale(0.97); background: var(--nc-button-active); }
200
- .nc-button.nc-block { width: 100%; }
201
-
202
- .nc-button.nc-primary { background: var(--nc-primary); border-color: var(--nc-primary); color: white; }
203
- .nc-button.nc-primary:hover { filter: brightness(1.05); }
204
- .nc-button.nc-primary:active { filter: brightness(0.95); transform: scale(0.97); }
205
-
206
- .nc-button.nc-danger { background: var(--nc-danger); border-color: var(--nc-danger); color: white; }
207
- .nc-button.nc-danger:hover { filter: brightness(1.05); }
208
- .nc-button.nc-danger:active { filter: brightness(0.9); transform: scale(0.97); }
209
-
210
- .nc-button.nc-warning { background: var(--nc-warning); border-color: var(--nc-warning); color: white; }
211
- .nc-button.nc-warning:hover { filter: brightness(1.05); }
212
- .nc-button.nc-warning:active { filter: brightness(0.9); transform: scale(0.97); }
213
-
214
- .nc-button.nc-success { background: var(--nc-success); border-color: var(--nc-success); color: white; }
215
- .nc-button.nc-success:hover { filter: brightness(1.05); }
216
- .nc-button.nc-success:active { filter: brightness(0.9); transform: scale(0.97); }
217
-
218
- .nc-button.nc-ghost { background: transparent; border-width: 0; color: var(--nc-text); }
219
- .nc-button.nc-ghost:hover { background: var(--nc-button-hover); }
220
- .nc-button.nc-ghost:active { background: var(--nc-button-active); transform: scale(0.97); }
221
-
222
- .nc-button.nc-small { padding: 2px 10px; font-size: 12px; margin: 0; border-radius: 6px; height: 32px; }
223
- .nc-button.nc-large { padding: 10px 24px; font-size: 16px; min-height: 60px; font-weight: bold; }
224
- .nc-button.nc-text-selectable { user-select: text; -webkit-user-select: text; text-transform: none; }
225
-
226
- /* Disabled state */
227
- .nc-button.nc-disabled, .nc-button:disabled { opacity: 0.5; cursor: default; pointer-events: none; }
228
-
229
- /* Loading state */
230
- .nc-button.nc-loading { color: transparent; }
231
- .nc-button.nc-loading>*:not(.nc-button-spinner) { visibility: hidden; }
232
- .nc-button-spinner { position: absolute; }
233
-
234
- /* Activity Indicator */
235
- .nc-activity-indicator {
236
- animation: nc-spin 2s linear infinite;
237
- box-sizing: border-box;
238
- color: var(--nc-primary);
239
- }
240
-
241
- .nc-activity-indicator.nc-small { width: 16px; height: 16px; }
242
- .nc-activity-indicator.nc-default { width: 24px; height: 24px; }
243
- .nc-activity-indicator.nc-large { width: 32px; height: 32px; }
244
-
245
- .nc-activity-indicator-circle {
246
- stroke: currentColor;
247
- stroke-dasharray: 1, 150;
248
- stroke-dashoffset: 0;
249
- animation: nc-dash 1.5s ease-in-out infinite;
250
- }
251
-
252
- /* Overlay mode - covers parent element (parent must have position: relative) */
253
- .nc-activity-indicator-overlay {
254
- position: absolute;
255
- inset: 0;
256
- display: flex;
257
- align-items: center;
258
- justify-content: center;
259
- background: var(--nc-overlay-bg, rgba(128, 128, 128, 0.1));
260
- border-radius: inherit;
261
- pointer-events: all;
262
- z-index: 1;
263
- }
264
-
265
- @keyframes nc-spin {
266
- to {
267
- transform: rotate(360deg);
268
- }
269
- }
270
-
271
- @keyframes nc-dash {
272
- 0% {
273
- stroke-dasharray: 1, 150;
274
- stroke-dashoffset: 0;
275
- }
276
- 50% {
277
- stroke-dasharray: 90, 150;
278
- stroke-dashoffset: -35;
279
- }
280
- 100% {
281
- stroke-dasharray: 90, 150;
282
- stroke-dashoffset: -124;
283
- }
284
- }
285
-
286
- /* Input component */
287
- .nc-input {
288
- background: var(--nc-input-bg);
289
- color: var(--nc-text);
290
- border: 1px solid var(--nc-button-border);
291
- border-radius: 8px;
292
- padding: 10px 12px;
293
- font-size: inherit;
294
- resize: none;
295
- }
296
-
297
- .nc-input.nc-small { padding: 6px 12px; font-size: 12px; min-height: 32px; height: 32px; border-radius: 4px; }
298
-
299
- .nc-input.nc-error {
300
- border-color: var(--nc-danger);
301
- }
302
-
303
- .nc-input:disabled {
304
- color: var(--nc-text-weak);
305
- cursor: not-allowed;
306
- pointer-events: none;
307
- }
308
-
309
- .nc-error-message {
310
- font-size: 13px;
311
- color: var(--nc-danger);
312
- margin-top: 4px;
313
- display: block;
314
- }
315
-
316
- /* Label component */
317
- .nc-label { font-size: 14px; color: var(--nc-text); margin-bottom: 4px; }
318
- .nc-label.nc-small { font-size: 12px; }
319
-
320
- /* ComboBox component */
321
- .nc-combo-container { display: flex; flex-direction: column; }
322
-
323
- .nc-combo-button {
324
- position: absolute;
325
- padding: 0;
326
- min-height: 0;
327
- border: none;
328
- display: flex;
329
- align-items: center;
330
- justify-content: center;
331
- padding: 2px;
332
- }
333
-
334
- .nc-combo-button.nc-small { height: 24px; width: 14px; font-size: 10px; padding: 2px; }
335
- .nc-combo-button:not(.nc-small) { height: 34px; width: 24px; font-size: 14px; }
336
- .nc-combo-clear { right: 4px; }
337
- .nc-combo-clear.nc-small { right: 4px; }
338
- .nc-combo-toggle { right: 4px; transition: transform 140ms ease; }
339
- .nc-combo-toggle.nc-open { transform: rotate(180deg); }
340
-
341
- .nc-combo-dropdown { background: var(--nc-button-bg); border: 1px solid var(--nc-button-border); border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); }
342
-
343
- .nc-combo-dropdown-option { padding: 6px 10px; font-size: 12px; cursor: pointer; }
344
- .nc-combo-dropdown-option:not(.nc-small) { padding: 10px 12px; font-size: inherit; }
345
- .nc-combo-dropdown-option:hover { background: var(--nc-button-hover); }
346
-
347
- .nc-combo-overlay-text { color: var(--nc-text); overflow: hidden; text-overflow: ellipsis; }
348
- .nc-combo-overlay-text.nc-small { font-size: 13px; }
349
- .nc-combo-overlay-default { color: var(--nc-text-weak); }
350
- .nc-combo-overlay-default.nc-small { font-size: 10px; }
351
-
352
- /* Checkbox component */
353
- .nc-checkbox-label {
354
- display: flex;
355
- flex-direction: row;
356
- gap: 10px;
357
- align-items: center;
358
- cursor: pointer;
359
- padding: 6px 0;
360
- width: 100%;
361
- user-select: none;
362
- font-size: 14px;
363
- }
364
-
365
- .nc-checkbox-label.nc-small { gap: 8px; padding: 6px 0; font-size: 12px; }
366
- .nc-checkbox-label.nc-disabled { cursor: not-allowed; opacity: 0.5; }
367
-
368
- .nc-checkbox-box {
369
- border-radius: 4px;
370
- border: 2px solid var(--nc-button-border);
371
- background: transparent;
372
- display: inline-flex;
373
- align-items: center;
374
- justify-content: center;
375
- color: white;
376
- flex-shrink: 0;
377
- transition: border-color 160ms, background 160ms;
378
- width: 18px;
379
- height: 18px;
380
- }
381
-
382
- .nc-checkbox-box.nc-small { width: 14px; height: 14px; border-radius: 3px; }
383
- .nc-checkbox-box.nc-checked { border-color: var(--nc-primary); background: var(--nc-primary); }
384
- .nc-checkbox-text { flex: 1; color: var(--nc-text); }
385
- .nc-checkbox-icon { width: 12px; height: 12px; }
386
- .nc-checkbox-icon.nc-small { width: 10px; height: 10px; }
387
-
388
- /* Icon button component (common buttons) */
389
- .nc-icon-button {
390
- display: flex;
391
- align-items: center;
392
- justify-content: center;
393
- border: none;
394
- border-radius: 4px;
395
- background: transparent;
396
- color: var(--nc-text-weak);
397
- cursor: pointer;
398
- transition: background 100ms, color 100ms;
399
- }
400
-
401
- .nc-icon-button[data-size="small"] { width: 24px; height: 24px; }
402
- .nc-icon-button[data-size="default"] { width: 28px; height: 28px; }
403
- .nc-icon-button[data-size="large"] { width: 32px; height: 32px; }
404
-
405
- .nc-icon-button:hover { background: var(--nc-button-hover); color: var(--nc-text); }
406
- .nc-icon-button:active { transform: scale(0.95); }
407
- .nc-icon-button:disabled { cursor: not-allowed; opacity: 0.5; }
408
- .nc-icon-button:disabled:active { transform: none; }
409
-
410
- /* Close button variant */
411
- .nc-icon-button-close:hover { background: var(--nc-danger); color: white; }
412
-
413
- /* Edit button variant */
414
- .nc-icon-button-edit:hover { background: var(--nc-primary); color: white; }
415
-
416
- /* Trash button variant */
417
- .nc-icon-button-trash { color: var(--nc-danger); }
418
- .nc-icon-button-trash:hover { background: var(--nc-danger); color: white; }
419
-
420
- /* Spinning animation for refresh icon */
421
- .nc-spinning { animation: nc-spin 1s linear infinite; }
422
-
423
- /* Hyperlink component */
424
- .nc-hyperlink {
425
- background: none;
426
- border: none;
427
- color: var(--nc-primary);
428
- cursor: pointer;
429
- font-size: inherit;
430
- padding: 0;
431
- text-decoration: underline;
432
- text-underline-offset: 2px;
433
- }
434
-
435
- .nc-hyperlink:hover { filter: brightness(1.2); }
436
- .nc-hyperlink:disabled { opacity: 0.5; cursor: not-allowed; }
437
- .nc-hyperlink[data-size="small"] { font-size: 12px; }
438
-
439
- /* Alert component */
440
- .nc-alert {
441
- display: flex;
442
- gap: 8px;
443
- padding: 12px 16px 12px 5px;
444
- margin: 6px 0;
445
- border-radius: 6px;
446
- min-height: 56px;
447
- align-items: flex-start;
448
- flex-direction: column;
449
- }
450
-
451
- .nc-alert.nc-error { background: rgba(239, 68, 68, 0.15); }
452
- .nc-alert.nc-warning { background: rgba(245, 158, 11, 0.15); }
453
-
454
- .nc-alert-message {
455
- padding: 2px 10px;
456
- color: var(--nc-text);
457
- font-size: 15px;
458
- white-space: normal;
459
- word-break: break-word;
460
- overflow-wrap: anywhere;
461
- line-height: 1.6;
462
- font-weight: 600;
463
- text-align: left;
464
- }
465
-
466
- .nc-alert-message.nc-error { color: var(--nc-danger); }
467
- .nc-alert-message.nc-warning { color: var(--nc-warning); }
468
- .nc-alert-code { font-size: 1.1em; font-weight: bold; margin-right: 8px; }
469
- .nc-alert-action { align-self: flex-end; }
470
-
471
- /* Battery component */
472
- .nc-battery { display: block; }
473
-
474
- /* ButtonGroup component */
475
- .nc-button-group {
476
- display: inline-flex;
477
- border-radius: 8px;
478
- border: 1px solid var(--nc-button-border);
479
- overflow: hidden;
480
- background: var(--nc-button-bg);
481
- width: fit-content;
482
- }
483
-
484
- .nc-button-group.nc-small .nc-button-group-item {
485
- padding: 6px 12px;
486
- font-size: 13px;
487
- }
488
-
489
- .nc-button-group-item {
490
- padding: 10px 20px;
491
- border: none;
492
- background: transparent;
493
- color: var(--nc-text);
494
- cursor: pointer;
495
- transition: background 120ms, color 120ms;
496
- font-size: inherit;
497
- font-family: inherit;
498
- text-transform: capitalize;
499
- }
500
-
501
- .nc-button-group-item.nc-has-border { border-right: 1px solid var(--nc-button-border); }
502
- .nc-button-group-item.nc-active { background: var(--nc-primary); color: white; }
503
- .nc-button-group-item:hover:not(:disabled):not(.nc-active) { background: var(--nc-button-hover); }
504
- .nc-button-group-item:active:not(:disabled) { transform: scale(0.98); }
505
- .nc-button-group-item:disabled { cursor: not-allowed; opacity: 0.5; }
506
-
507
- /* ContextMenu component */
508
- .nc-context-menu {
509
- background: var(--nc-button-bg);
510
- border: 1px solid var(--nc-border);
511
- border-radius: 6px;
512
- box-shadow: 0 10px 38px rgba(0, 0, 0, 0.2), 0 5px 20px rgba(0, 0, 0, 0.15);
513
- min-width: 160px;
514
- overflow: hidden;
515
- animation: nc-context-menu-enter 0.15s ease-out;
516
- }
517
-
518
- @keyframes nc-context-menu-enter {
519
- from {
520
- opacity: 0;
521
- transform: scale(0.95);
522
- }
523
-
524
- to {
525
- opacity: 1;
526
- transform: scale(1);
527
- }
528
- }
529
-
530
- .nc-context-menu-item {
531
- display: flex;
532
- align-items: center;
533
- gap: 12px;
534
- width: 100%;
535
- padding: 8px 12px;
536
- background: none;
537
- border: none;
538
- color: var(--nc-text);
539
- cursor: pointer;
540
- text-align: left;
541
- font-size: 14px;
542
- transition: background-color 0.2s ease;
543
- }
544
-
545
- .nc-context-menu-item:not(.nc-disabled):hover { background-color: var(--nc-overlay-hover); }
546
- .nc-context-menu-item:not(.nc-disabled):active { background-color: var(--nc-button-active); }
547
- .nc-context-menu-item.nc-disabled { color: var(--nc-text-weak); cursor: not-allowed; }
548
- .nc-context-menu-item.nc-indented { padding-left: 40px; }
549
- .nc-context-menu-item.nc-danger { color: var(--nc-danger); }
550
- .nc-context-menu-item.nc-danger:not(.nc-disabled):hover { background-color: rgba(239, 68, 68, 0.1); }
551
- .nc-context-menu-item.nc-danger:not(.nc-disabled):active { background-color: rgba(239, 68, 68, 0.15); }
552
-
553
- .nc-context-menu-item.nc-primary { color: var(--nc-primary); }
554
- .nc-context-menu-item.nc-primary:not(.nc-disabled):hover { background-color: rgba(59, 130, 246, 0.1); }
555
- .nc-context-menu-item.nc-primary:not(.nc-disabled):active { background-color: rgba(59, 130, 246, 0.15); }
556
-
557
- .nc-context-menu-item.nc-warning { color: var(--nc-warning); }
558
- .nc-context-menu-item.nc-warning:not(.nc-disabled):hover { background-color: rgba(245, 158, 11, 0.1); }
559
- .nc-context-menu-item.nc-warning:not(.nc-disabled):active { background-color: rgba(245, 158, 11, 0.15); }
560
-
561
- .nc-context-menu-separator {
562
- height: 1px;
563
- background-color: var(--nc-border);
564
- margin: 4px 8px;
565
- }
566
-
567
- .nc-context-menu-icon {
568
- display: flex;
569
- align-items: center;
570
- justify-content: center;
571
- width: 16px;
572
- height: 16px;
573
- flex-shrink: 0;
574
- }
575
-
576
- .nc-context-menu-label {
577
- flex: 1;
578
- white-space: nowrap;
579
- overflow: hidden;
580
- text-overflow: ellipsis;
581
- }
582
-
583
- /* NumberInput component */
584
- .nc-number-input-container { display: flex; align-items: stretch; }
585
- .nc-number-input-container.nc-small { gap: 4px; }
586
- .nc-number-input-container:not(.nc-small) { gap: 6px; }
587
- .nc-number-input { text-align: center; }
588
- .nc-number-input.nc-small { width: 80px; font-size: 12px; padding: 0 4px; border-radius: 4px; }
589
- .nc-number-input:not(.nc-small) { width: 120px; }
590
- .nc-number-input-button { padding: 0; font-weight: normal; display: flex; align-items: center; justify-content: center; font-family: Arial, sans-serif; }
591
- .nc-number-input-button.nc-small { width: 28px; min-height: 28px; font-size: 16px; }
592
- .nc-number-input-button:not(.nc-small) { width: 42px; min-height: 42px; font-size: 24px; }
593
- .nc-number-input-col.nc-small { gap: 4px; }
594
- .nc-number-input-col:not(.nc-small) { gap: 6px; }
595
-
596
- /* Hide number input spinner arrows */
597
- input[type="number"]::-webkit-inner-spin-button,
598
- input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
599
- input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
600
-
601
- /* Layout utilities */
602
- .nc-label { color: var(--nc-muted); font-size: 12px; }
603
- .nc-row { display: flex; gap: 8px; align-items: center; }
604
- .nc-col { display: flex; flex-direction: column; gap: 6px; }
605
- .nc-section { padding: 12px; }
606
- .nc-section+.nc-section { border-top: 1px solid var(--nc-border); }
607
-
608
- /* ComboBox dropdown options */
609
- .nc-combo-dropdown .nc-section { padding: 8px 12px; }
610
- .nc-combo-dropdown .nc-section + .nc-section { border-top: none; }
611
- .nc-combo-dropdown .nc-section:hover { background: var(--nc-overlay-hover); }
612
-
613
- /* Slider component */
614
- .nc-slider {
615
- -webkit-appearance: none;
616
- appearance: none;
617
- height: 6px;
618
- border-radius: 3px;
619
- background: linear-gradient(
620
- to right,
621
- var(--nc-primary) 0%,
622
- var(--nc-primary) var(--nc-slider-percentage, 50%),
623
- var(--nc-button-bg) var(--nc-slider-percentage, 50%),
624
- var(--nc-button-bg) 100%
625
- );
626
- border: 1px solid var(--nc-button-border);
627
- outline: none;
628
- cursor: pointer;
629
- }
630
-
631
- .nc-slider::-webkit-slider-thumb {
632
- -webkit-appearance: none;
633
- appearance: none;
634
- width: 18px;
635
- height: 18px;
636
- border-radius: 50%;
637
- background: var(--nc-primary);
638
- border: 2px solid var(--nc-primary);
639
- cursor: pointer;
640
- transition: transform 100ms, box-shadow 100ms;
641
- }
642
-
643
- .nc-slider::-webkit-slider-thumb:hover {
644
- transform: scale(1.1);
645
- box-shadow: 0 0 8px rgba(59, 130, 246, 0.5);
646
- }
647
-
648
- .nc-slider::-webkit-slider-thumb:active {
649
- transform: scale(0.95);
650
- }
651
-
652
- .nc-slider::-moz-range-thumb {
653
- width: 18px;
654
- height: 18px;
655
- border-radius: 50%;
656
- background: var(--nc-primary);
657
- border: 2px solid var(--nc-primary);
658
- cursor: pointer;
659
- transition: transform 100ms, box-shadow 100ms;
660
- }
661
-
662
- .nc-slider::-moz-range-thumb:hover { transform: scale(1.1); box-shadow: 0 0 8px rgba(59, 130, 246, 0.5); }
663
- .nc-slider:disabled { opacity: 0.5; cursor: not-allowed; }
664
- .nc-slider:disabled::-webkit-slider-thumb { cursor: not-allowed; }
665
- .nc-slider:disabled::-moz-range-thumb { cursor: not-allowed; }
666
-
667
- /* ListGroup component */
668
- .nc-list-group { margin-bottom: 0; margin-top: 16px; }
669
- .nc-list-group:first-child { margin-top: 0; }
670
- .nc-list-group:last-child { margin-bottom: 16px; }
671
-
672
- .nc-list-group-title {
673
- font-size: 12px;
674
- font-weight: 600;
675
- color: var(--nc-text-weak);
676
- text-transform: uppercase;
677
- letter-spacing: 0.5px;
678
- margin-bottom: 8px;
679
- padding-left: 2px;
680
- display: flex;
681
- align-items: center;
682
- justify-content: space-between;
683
- }
684
-
685
- .nc-list-group-content {
686
- background: var(--nc-bg-tertiary);
687
- border: 1px solid var(--nc-border);
688
- border-radius: 8px;
689
- overflow: hidden;
690
- }
691
-
692
- .nc-list-group-item {
693
- padding: 12px 14px;
694
- cursor: default;
695
- border-bottom: 1px solid var(--nc-border);
696
- min-height: 56px;
697
- box-sizing: border-box;
698
- display: flex;
699
- align-items: center;
700
- transition: background-color 150ms ease-out;
701
- }
702
-
703
- .nc-list-group-item:last-child { border-bottom: none; }
704
- .nc-list-group-item-clickable:hover { background-color: var(--nc-overlay-hover); }
705
- .nc-list-group-item-active { background-color: var(--nc-button-active); }
706
-
707
- .nc-list-group-title-tools { display: flex; gap: 8px; }
708
-
709
- /* Tabs component */
710
- .nc-tab-container {
711
- position: relative;
712
- display: flex;
713
- align-items: center;
714
- border-bottom: 1px solid var(--nc-border);
715
- background: var(--nc-bg-secondary);
716
- }
717
-
718
- .nc-tab-scroll-wrapper {
719
- position: relative;
720
- display: flex;
721
- flex: 1;
722
- min-width: 0;
723
- overflow: hidden;
724
- }
725
-
726
- .nc-tab-scroll {
727
- display: flex;
728
- align-items: center;
729
- overflow-x: auto;
730
- overflow-y: hidden;
731
- scrollbar-width: none;
732
- -ms-overflow-style: none;
733
- flex: 1;
734
- min-width: 0;
735
- }
736
-
737
- .nc-tab-scroll::-webkit-scrollbar { display: none; }
738
-
739
- .nc-tab-scroll.nc-multiline {
740
- flex-wrap: wrap;
741
- overflow-x: visible;
742
- }
743
-
744
- .nc-tab-item {
745
- padding: 12px 16px;
746
- font-size: 12px;
747
- font-weight: 600;
748
- color: var(--nc-text-weak);
749
- cursor: pointer;
750
- transition: color 120ms, border-color 120ms;
751
- border-bottom: 2px solid transparent;
752
- text-transform: uppercase;
753
- letter-spacing: 0.5px;
754
- white-space: nowrap;
755
- flex-shrink: 0;
756
- }
757
-
758
- .nc-tab-scroll.nc-multiline .nc-tab-item { flex-shrink: 1; }
759
-
760
- .nc-tab-item:hover { color: var(--nc-text); }
761
- .nc-tab-item.nc-active { color: var(--nc-primary); border-bottom-color: var(--nc-primary); }
762
-
763
- .nc-tab-toolbar {
764
- display: flex;
765
- gap: 8px;
766
- align-items: center;
767
- padding: 0 12px;
768
- flex-shrink: 0;
769
- border-left: 1px solid var(--nc-border);
770
- }
771
-
772
- .nc-tab-scroll-indicator {
773
- position: absolute;
774
- top: 0;
775
- bottom: 0;
776
- width: 40px;
777
- pointer-events: none;
778
- z-index: 10;
779
- display: flex;
780
- align-items: center;
781
- justify-content: center;
782
- color: var(--nc-text-weak);
783
- }
784
-
785
- .nc-tab-scroll-indicator.nc-left {
786
- left: 0;
787
- background: linear-gradient(to right, var(--nc-bg-secondary) 20%, transparent);
788
- justify-content: flex-start;
789
- padding-left: 4px;
790
- }
791
-
792
- .nc-tab-scroll-indicator.nc-right {
793
- right: 0;
794
- background: linear-gradient(to left, var(--nc-bg-secondary) 20%, transparent);
795
- justify-content: flex-end;
796
- padding-right: 4px;
797
- }
798
-
799
- /* Vertical tabs */
800
- .nc-tab-container.nc-vertical {
801
- flex-direction: column;
802
- align-items: stretch;
803
- border-bottom: none;
804
- }
805
-
806
- .nc-tab-container.nc-verticalLeft {
807
- border-right: 1px solid var(--nc-border);
808
- }
809
-
810
- .nc-tab-container.nc-verticalRight {
811
- border-left: 1px solid var(--nc-border);
812
- }
813
-
814
- .nc-tab-container.nc-vertical .nc-tab-scroll {
815
- flex-direction: column;
816
- overflow-x: hidden;
817
- overflow-y: auto;
818
- padding: 8px;
819
- gap: 4px;
820
- }
821
-
822
- .nc-tab-container.nc-vertical .nc-tab-item {
823
- padding: 10px 12px;
824
- font-size: 14px;
825
- border-bottom: none;
826
- border-radius: 4px;
827
- text-transform: none;
828
- letter-spacing: normal;
829
- width: 100%;
830
- }
831
-
832
- .nc-tab-container.nc-verticalLeft .nc-tab-item {
833
- text-align: left;
834
- }
835
-
836
- .nc-tab-container.nc-verticalRight .nc-tab-item {
837
- text-align: right;
838
- }
839
-
840
- .nc-tab-container.nc-vertical .nc-tab-item:hover {
841
- background: var(--nc-bg-tertiary);
842
- }
843
-
844
- .nc-tab-container.nc-vertical .nc-tab-item.nc-active {
845
- background: var(--nc-primary);
846
- color: white;
847
- }
848
-
849
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator {
850
- left: 0;
851
- right: 0;
852
- width: auto;
853
- height: 40px;
854
- flex-direction: column;
855
- }
856
-
857
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator.nc-top {
858
- top: 0;
859
- bottom: auto;
860
- background: linear-gradient(to bottom, var(--nc-bg-secondary) 20%, transparent);
861
- justify-content: flex-start;
862
- padding-top: 4px;
863
- }
864
-
865
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator.nc-bottom {
866
- bottom: 0;
867
- top: auto;
868
- background: linear-gradient(to top, var(--nc-bg-secondary) 20%, transparent);
869
- justify-content: flex-end;
870
- padding-bottom: 4px;
871
- }
872
-
873
- .nc-tab-panels {
874
- display: flex;
875
- flex-direction: column;
876
- flex: 1;
877
- min-height: 0;
878
- overflow: auto;
879
- }
880
-
881
- .nc-tab-panel {
882
- height: 100%;
883
- }
884
-
885
- .nc-tab-panel-wrapper {
886
- display: flex;
887
- flex-direction: column;
888
- flex: 1;
889
- min-height: 0;
890
- height: 100%;
891
- }
892
-
893
- /* Toggle component */
894
- .nc-toggle {
895
- position: relative;
896
- width: 56px;
897
- height: 30px;
898
- border-radius: 18px;
899
- padding: 4px;
900
- display: inline-flex;
901
- align-items: center;
902
- justify-content: flex-start;
903
- transition: border-color 160ms, background 160ms;
904
- cursor: pointer;
905
- }
906
-
907
- .nc-toggle.nc-checked { border-color: var(--nc-primary); background: rgba(59, 130, 246, 0.08); }
908
- .nc-toggle:not(.nc-checked) { border: 2px solid var(--nc-button-border); background: transparent; }
909
-
910
- .nc-toggle-thumb {
911
- width: 22px;
912
- height: 22px;
913
- border-radius: 12px;
914
- transition: transform 160ms, background 160ms;
915
- border: none;
916
- }
917
-
918
- .nc-toggle-thumb.nc-checked { background: var(--nc-text); transform: translateX(24px); box-shadow: 0 2px 6px rgba(59, 130, 246, 0.28); }
919
- .nc-toggle-thumb:not(.nc-checked) { background: var(--nc-muted); transform: translateX(0); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); }
920
-
921
- /* Dialog component */
922
- .nc-dialog-overlay {
923
- position: absolute;
924
- inset: 0;
925
- background: rgba(0, 0, 0, 0.6);
926
- display: flex;
927
- align-items: center;
928
- justify-content: center;
929
- z-index: 100;
930
- animation: nc-dialog-fade-in 150ms ease-out;
931
- }
932
-
933
- .nc-dialog-overlay.nc-fullscreen {
934
- position: fixed;
935
- z-index: 1000;
936
- }
937
-
938
- .nc-dialog-container {
939
- background: var(--nc-bg-secondary);
940
- border-radius: 12px;
941
- border: 1px solid var(--nc-border);
942
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
943
- display: flex;
944
- flex-direction: column;
945
- animation: nc-dialog-slide-up 200ms ease-out;
946
- outline: none;
947
- width: 360px;
948
- max-width: 90%;
949
- max-height: 95%;
950
- }
951
-
952
- .nc-dialog-header {
953
- display: flex;
954
- align-items: center;
955
- justify-content: space-between;
956
- padding: 16px 20px;
957
- border-bottom: 1px solid var(--nc-border);
958
- }
959
-
960
- .nc-dialog-title {
961
- font-size: 16px;
962
- font-weight: 600;
963
- color: var(--nc-text);
964
- margin: 0;
965
- }
966
-
967
- .nc-dialog-content {
968
- padding: 20px;
969
- overflow-y: auto;
970
- flex: 1;
971
- color: var(--nc-text);
972
- }
973
-
974
- .nc-dialog-footer {
975
- display: flex;
976
- gap: 8px;
977
- padding: 16px 20px;
978
- border-top: 1px solid var(--nc-border);
979
- justify-content: flex-end;
980
- }
981
-
982
- @keyframes nc-dialog-fade-in {
983
- from {
984
- opacity: 0;
985
- }
986
- to {
987
- opacity: 1;
988
- }
989
- }
990
-
991
- @keyframes nc-dialog-slide-up {
992
- from {
993
- opacity: 0;
994
- transform: translateY(20px) scale(0.95);
995
- }
996
- to {
997
- opacity: 1;
998
- transform: translateY(0) scale(1);
999
- }
1000
- }
1001
-
1002
- /* App Title Bar */
1003
- .nc-app-title-bar {
1004
- display: flex;
1005
- align-items: center;
1006
- justify-content: space-between;
1007
- padding: 6px 8px;
1008
- background: var(--nc-bg-secondary);
1009
- border-bottom: 1px solid var(--nc-border);
1010
- flex-shrink: 0;
1011
- min-height: 36px;
1012
- }
1013
-
1014
- .nc-app-title-bar-left {
1015
- display: flex;
1016
- align-items: center;
1017
- gap: 8px;
1018
- flex: 1;
1019
- min-width: 0;
1020
- }
1021
-
1022
- .nc-app-title-bar-title {
1023
- font-size: 13px;
1024
- font-weight: 600;
1025
- color: var(--nc-text);
1026
- white-space: nowrap;
1027
- overflow: hidden;
1028
- text-overflow: ellipsis;
1029
- }
1030
-
1031
- .nc-app-title-bar-back {
1032
- display: flex;
1033
- align-items: center;
1034
- justify-content: center;
1035
- width: 28px;
1036
- height: 28px;
1037
- border: none;
1038
- background: transparent;
1039
- color: var(--nc-text);
1040
- border-radius: 6px;
1041
- cursor: pointer;
1042
- transition: background-color 0.15s ease;
1043
- flex-shrink: 0;
1044
- }
1045
-
1046
- .nc-app-title-bar-back:hover {
1047
- background-color: var(--nc-bg-tertiary);
1048
- }
1049
-
1050
- .nc-app-title-bar-back:active {
1051
- background-color: var(--nc-bg-quaternary);
1052
- }
1053
-
1054
- .nc-app-title-bar-right {
1055
- display: flex;
1056
- align-items: center;
1057
- gap: 4px;
1058
- flex-shrink: 0;
1059
- }
1060
-
1061
- .nc-app-title-bar-toolbar {
1062
- display: flex;
1063
- align-items: center;
1064
- gap: 4px;
1065
- }
1066
-
1067
- .nc-app-content-wrapper {
1068
- overflow-y: auto;
1069
- }
1070
-
1071
- /* App Taskbar */
1072
- .nc-app-taskbar {
1073
- display: flex;
1074
- flex-direction: column;
1075
- align-items: center;
1076
- gap: 6px;
1077
- padding: 8px;
1078
- background: var(--nc-bg-secondary);
1079
- border-right: 1px solid var(--nc-border);
1080
- flex-shrink: 0;
1081
- width: 56px;
1082
- }
1083
-
1084
- .nc-app-taskbar-button {
1085
- display: flex;
1086
- align-items: center;
1087
- justify-content: center;
1088
- width: 40px;
1089
- height: 40px;
1090
- border: none;
1091
- background: transparent;
1092
- color: var(--nc-text);
1093
- border-radius: 8px;
1094
- cursor: pointer;
1095
- transition: background-color 0.15s ease, transform 0.1s ease;
1096
- position: relative;
1097
- user-select: none;
1098
- }
1099
-
1100
- .nc-app-taskbar-button:hover {
1101
- background-color: var(--nc-bg-tertiary);
1102
- }
1103
-
1104
- .nc-app-taskbar-button:active {
1105
- transform: scale(0.95);
1106
- background-color: var(--nc-bg-quaternary);
1107
- }
1108
-
1109
- .nc-app-taskbar-button.nc-active {
1110
- background-color: var(--nc-bg-tertiary);
1111
- }
1112
-
1113
- .nc-app-taskbar-button.nc-active:hover {
1114
- background-color: var(--nc-bg-quaternary);
1115
- }
1116
-
1117
- /* Running indicator dot under the icon */
1118
- .nc-app-taskbar-indicator {
1119
- position: absolute;
1120
- bottom: 2px;
1121
- left: 50%;
1122
- transform: translateX(-50%);
1123
- width: 4px;
1124
- height: 4px;
1125
- border-radius: 50%;
1126
- background-color: var(--nc-primary);
1127
- }
1128
-
1129
- .nc-app-taskbar-button.nc-active .nc-app-taskbar-indicator {
1130
- width: 16px;
1131
- border-radius: 2px;
1132
- }
1133
-
1134
- /* Separator between pinned and non-pinned apps */
1135
- .nc-app-taskbar-separator {
1136
- width: 24px;
1137
- height: 1px;
1138
- background-color: var(--nc-border);
1139
- margin: 4px 0;
1140
- }
1141
-
1142
- /* Desktop separator (keep horizontal) */
1143
- .nc-app-taskbar.nc-desktop .nc-app-taskbar-separator {
1144
- width: 32px;
1145
- height: 1px;
1146
- background: var(--nc-border);
1147
- margin: 4px 0;
1148
- }
1149
-
1150
- /* Mobile taskbar - horizontal at bottom */
1151
- @media (max-width: 767px) {
1152
- .nc-app-taskbar.nc-mobile {
1153
- flex-direction: row;
1154
- width: 100%;
1155
- height: 56px;
1156
- border-right: none;
1157
- border-top: 1px solid var(--nc-border);
1158
- position: fixed;
1159
- bottom: 0;
1160
- left: 0;
1161
- right: 0;
1162
- z-index: 100;
1163
- justify-content: center;
1164
- overflow-x: auto;
1165
- }
1166
-
1167
- /* Adjust running indicator for horizontal layout */
1168
- .nc-app-taskbar.nc-mobile .nc-app-taskbar-indicator {
1169
- bottom: auto;
1170
- top: 2px;
1171
- }
1172
-
1173
- /* Separator becomes vertical divider */
1174
- .nc-app-taskbar.nc-mobile .nc-app-taskbar-separator {
1175
- width: 1px;
1176
- height: 32px;
1177
- background: var(--nc-border);
1178
- margin: 0 4px;
1179
- }
1180
-
1181
- .nc-app-panel {
1182
- width: 100% !important;
1183
- }
1184
- }
1185
-
1186
- /* AppDialog component */
1187
- .nc-app-dialog-container {
1188
- width: 95vw;
1189
- height: 95vh;
1190
- max-width: 1200px;
1191
- max-height: 900px;
1192
- background: var(--nc-bg);
1193
- border: 1px solid var(--nc-border);
1194
- border-radius: 12px;
1195
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
1196
- display: flex;
1197
- flex-direction: column;
1198
- overflow: hidden;
1199
- animation: nc-dialog-slide-up 200ms ease-out;
1200
- }
1201
-
1202
- /* YAML Editor syntax highlighting tokens */
1203
- .nc-token-string { color: var(--nc-code-string) !important; }
1204
- .nc-token-boolean { color: var(--nc-code-boolean) !important; }
1205
- .nc-token-constant { color: var(--nc-code-null) !important; }
1206
- .nc-token-number { color: var(--nc-code-number) !important; }
1207
- .nc-token-atrule { color: var(--nc-code-key) !important; }
1208
- .nc-token-comment { color: var(--nc-code-comment) !important; }
1209
-
1210
- /* YamlTextArea component */
1211
- .nc-yaml-textarea {
1212
- display: flex;
1213
- flex-direction: column;
1214
- gap: 4px;
1215
- }
1216
-
1217
- .nc-yaml-textarea-container {
1218
- display: flex;
1219
- border: 1px solid var(--nc-border);
1220
- border-radius: 4px;
1221
- overflow: hidden;
1222
- background: var(--nc-bg-secondary);
1223
- min-height: 100px;
1224
- flex-grow: 1;
1225
- }
1226
-
1227
- .nc-yaml-textarea-container.error {
1228
- border-color: var(--nc-danger);
1229
- }
1230
-
1231
- /* ===== NOTIFICATION COMPONENT ===== */
1232
- .nc-notification {
1233
- min-width: 320px;
1234
- max-width: 400px;
1235
- background: var(--nc-bg-tertiary);
1236
- border: 1px solid var(--nc-border);
1237
- border-radius: 8px;
1238
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1239
- overflow: hidden;
1240
- }
1241
-
1242
- .nc-notification-content {
1243
- display: flex;
1244
- align-items: flex-start;
1245
- padding: 12px 16px;
1246
- gap: 12px;
1247
- }
1248
-
1249
- .nc-notification-body {
1250
- flex: 1;
1251
- min-width: 0;
1252
- }
1253
-
1254
- .nc-notification-title {
1255
- font-weight: 600;
1256
- font-size: 14px;
1257
- color: var(--nc-text);
1258
- margin-bottom: 4px;
1259
- }
1260
-
1261
- .nc-notification-message {
1262
- font-size: 13px;
1263
- color: var(--nc-text-weak);
1264
- line-height: 1.4;
1265
- word-wrap: break-word;
1266
- }
1267
-
1268
- .nc-notification-dismiss {
1269
- flex-shrink: 0;
1270
- background: none;
1271
- border: none;
1272
- padding: 4px;
1273
- cursor: pointer;
1274
- color: var(--nc-text-weak);
1275
- border-radius: 4px;
1276
- display: flex;
1277
- align-items: center;
1278
- justify-content: center;
1279
- transition: background-color 150ms ease, color 150ms ease;
1280
- }
1281
-
1282
- .nc-notification-dismiss:hover {
1283
- background: var(--nc-overlay-hover);
1284
- color: var(--nc-text);
1285
- }
1286
-
1287
- /* Notification type variants */
1288
- .nc-notification-success {
1289
- border-left: 3px solid var(--nc-success);
1290
- }
1291
-
1292
- .nc-notification-success .nc-notification-title {
1293
- color: var(--nc-success);
1294
- }
1295
-
1296
- .nc-notification-danger {
1297
- border-left: 3px solid var(--nc-danger);
1298
- }
1299
-
1300
- .nc-notification-danger .nc-notification-title {
1301
- color: var(--nc-danger);
1302
- }
1303
-
1304
- .nc-notification-warning {
1305
- border-left: 3px solid var(--nc-warning);
1306
- }
1307
-
1308
- .nc-notification-warning .nc-notification-title {
1309
- color: var(--nc-warning);
1310
- }
1311
-
1312
- .nc-notification-info {
1313
- border-left: 3px solid var(--nc-primary);
1314
- }
1315
-
1316
- .nc-notification-info .nc-notification-title {
1317
- color: var(--nc-primary);
1318
- }
1319
-
1320
- /* ===== MONTH RANGE PICKER ===== */
1321
-
1322
- .nc-month-range-picker {
1323
- display: flex;
1324
- flex-direction: column;
1325
- gap: 4px;
1326
- }
1327
-
1328
- .nc-month-range-picker-input {
1329
- width: 100%;
1330
- padding: 8px 12px;
1331
- background: var(--nc-button-bg);
1332
- border: 1px solid var(--nc-button-border);
1333
- border-radius: 6px;
1334
- color: var(--nc-text);
1335
- font-size: 14px;
1336
- text-align: left;
1337
- cursor: pointer;
1338
- transition: all 0.15s ease;
1339
- }
1340
-
1341
- .nc-month-range-picker-input:hover:not(:disabled) {
1342
- background: var(--nc-button-hover);
1343
- border-color: var(--nc-primary);
1344
- }
1345
-
1346
- .nc-month-range-picker-input:disabled {
1347
- opacity: 0.5;
1348
- cursor: not-allowed;
1349
- }
1350
-
1351
- .nc-month-range-picker-popup {
1352
- background: var(--nc-bg-tertiary);
1353
- border: 1px solid var(--nc-border);
1354
- border-radius: 8px;
1355
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1356
- overflow: hidden;
1357
- }
1358
-
1359
- .nc-month-range-picker-content {
1360
- display: flex;
1361
- flex-direction: column;
1362
- gap: 16px;
1363
- padding: 16px;
1364
- }
1365
-
1366
- .nc-month-range-picker-row {
1367
- display: flex;
1368
- gap: 16px;
1369
- }
1370
-
1371
- .nc-month-range-picker-column {
1372
- flex: 1;
1373
- display: flex;
1374
- flex-direction: column;
1375
- gap: 8px;
1376
- }
1377
-
1378
- .nc-month-input {
1379
- width: 100%;
1380
- padding: 8px 12px;
1381
- background: var(--nc-button-bg);
1382
- border: 1px solid var(--nc-button-border);
1383
- border-radius: 6px;
1384
- color: var(--nc-text);
1385
- font-size: 14px;
1386
- font-family: inherit;
1387
- transition: all 0.15s ease;
1388
- }
1389
-
1390
- .nc-month-input:hover {
1391
- border-color: var(--nc-primary);
1392
- }
1393
-
1394
- .nc-month-input:focus {
1395
- outline: none;
1396
- border-color: var(--nc-primary);
1397
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1398
- }
1399
-
1400
- .nc-month-input.nc-error {
1401
- border-color: var(--nc-danger);
1402
- }
1403
-
1404
- .nc-month-input.nc-error:focus {
1405
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
1406
- }
1407
-
1408
- .nc-month-error-text {
1409
- font-size: 12px;
1410
- color: var(--nc-danger);
1411
- margin-top: -4px;
1412
- }
1413
-
1414
- .nc-month-range-error {
1415
- padding: 8px 12px;
1416
- background: rgba(239, 68, 68, 0.1);
1417
- border: 1px solid var(--nc-danger);
1418
- border-radius: 6px;
1419
- color: var(--nc-danger);
1420
- font-size: 14px;
1421
- }
1422
-
1423
- .nc-month-range-picker-footer {
1424
- display: flex;
1425
- justify-content: flex-end;
1426
- gap: 8px;
1427
- padding-top: 8px;
1428
- border-top: 1px solid var(--nc-border);
1429
- }