@kingsimba/nc-ui 0.1.10 → 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,1412 +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:hover { background: var(--nc-danger); color: white; }
418
-
419
- /* Spinning animation for refresh icon */
420
- .nc-spinning { animation: nc-spin 1s linear infinite; }
421
-
422
- /* Hyperlink component */
423
- .nc-hyperlink {
424
- background: none;
425
- border: none;
426
- color: var(--nc-primary);
427
- cursor: pointer;
428
- font-size: inherit;
429
- padding: 0;
430
- text-decoration: underline;
431
- text-underline-offset: 2px;
432
- }
433
-
434
- .nc-hyperlink:hover { filter: brightness(1.2); }
435
- .nc-hyperlink:disabled { opacity: 0.5; cursor: not-allowed; }
436
- .nc-hyperlink[data-size="small"] { font-size: 12px; }
437
-
438
- /* Alert component */
439
- .nc-alert {
440
- display: flex;
441
- gap: 8px;
442
- padding: 12px 16px 12px 5px;
443
- margin: 6px 0;
444
- border-radius: 6px;
445
- min-height: 56px;
446
- align-items: flex-start;
447
- flex-direction: column;
448
- }
449
-
450
- .nc-alert.nc-error { background: rgba(239, 68, 68, 0.15); }
451
- .nc-alert.nc-warning { background: rgba(245, 158, 11, 0.15); }
452
-
453
- .nc-alert-message {
454
- padding: 2px 10px;
455
- color: var(--nc-text);
456
- font-size: 15px;
457
- white-space: normal;
458
- word-break: break-word;
459
- overflow-wrap: anywhere;
460
- line-height: 1.6;
461
- font-weight: 600;
462
- text-align: left;
463
- }
464
-
465
- .nc-alert-message.nc-error { color: var(--nc-danger); }
466
- .nc-alert-message.nc-warning { color: var(--nc-warning); }
467
- .nc-alert-code { font-size: 1.1em; font-weight: bold; margin-right: 8px; }
468
- .nc-alert-action { align-self: flex-end; }
469
-
470
- /* Battery component */
471
- .nc-battery { display: block; }
472
-
473
- /* ButtonGroup component */
474
- .nc-button-group {
475
- display: inline-flex;
476
- border-radius: 8px;
477
- border: 1px solid var(--nc-button-border);
478
- overflow: hidden;
479
- background: var(--nc-button-bg);
480
- width: fit-content;
481
- }
482
-
483
- .nc-button-group.nc-small .nc-button-group-item {
484
- padding: 6px 12px;
485
- font-size: 13px;
486
- }
487
-
488
- .nc-button-group-item {
489
- padding: 10px 20px;
490
- border: none;
491
- background: transparent;
492
- color: var(--nc-text);
493
- cursor: pointer;
494
- transition: background 120ms, color 120ms;
495
- font-size: inherit;
496
- font-family: inherit;
497
- text-transform: capitalize;
498
- }
499
-
500
- .nc-button-group-item.nc-has-border { border-right: 1px solid var(--nc-button-border); }
501
- .nc-button-group-item.nc-active { background: var(--nc-primary); color: white; }
502
- .nc-button-group-item:hover:not(:disabled):not(.nc-active) { background: var(--nc-button-hover); }
503
- .nc-button-group-item:active:not(:disabled) { transform: scale(0.98); }
504
- .nc-button-group-item:disabled { cursor: not-allowed; opacity: 0.5; }
505
-
506
- /* ContextMenu component */
507
- .nc-context-menu {
508
- background: var(--nc-button-bg);
509
- border: 1px solid var(--nc-border);
510
- border-radius: 6px;
511
- box-shadow: 0 10px 38px rgba(0, 0, 0, 0.2), 0 5px 20px rgba(0, 0, 0, 0.15);
512
- min-width: 160px;
513
- overflow: hidden;
514
- animation: nc-context-menu-enter 0.15s ease-out;
515
- }
516
-
517
- @keyframes nc-context-menu-enter {
518
- from {
519
- opacity: 0;
520
- transform: scale(0.95);
521
- }
522
-
523
- to {
524
- opacity: 1;
525
- transform: scale(1);
526
- }
527
- }
528
-
529
- .nc-context-menu-item {
530
- display: flex;
531
- align-items: center;
532
- gap: 12px;
533
- width: 100%;
534
- padding: 8px 12px;
535
- background: none;
536
- border: none;
537
- color: var(--nc-text);
538
- cursor: pointer;
539
- text-align: left;
540
- font-size: 14px;
541
- transition: background-color 0.2s ease;
542
- }
543
-
544
- .nc-context-menu-item:not(.nc-disabled):hover { background-color: var(--nc-overlay-hover); }
545
- .nc-context-menu-item:not(.nc-disabled):active { background-color: var(--nc-button-active); }
546
- .nc-context-menu-item.nc-disabled { color: var(--nc-text-weak); cursor: not-allowed; }
547
- .nc-context-menu-item.nc-indented { padding-left: 40px; }
548
- .nc-context-menu-item.nc-danger { color: var(--nc-danger); }
549
- .nc-context-menu-item.nc-danger:not(.nc-disabled):hover { background-color: rgba(239, 68, 68, 0.1); }
550
- .nc-context-menu-item.nc-danger:not(.nc-disabled):active { background-color: rgba(239, 68, 68, 0.15); }
551
-
552
- .nc-context-menu-item.nc-primary { color: var(--nc-primary); }
553
- .nc-context-menu-item.nc-primary:not(.nc-disabled):hover { background-color: rgba(59, 130, 246, 0.1); }
554
- .nc-context-menu-item.nc-primary:not(.nc-disabled):active { background-color: rgba(59, 130, 246, 0.15); }
555
-
556
- .nc-context-menu-item.nc-warning { color: var(--nc-warning); }
557
- .nc-context-menu-item.nc-warning:not(.nc-disabled):hover { background-color: rgba(245, 158, 11, 0.1); }
558
- .nc-context-menu-item.nc-warning:not(.nc-disabled):active { background-color: rgba(245, 158, 11, 0.15); }
559
-
560
- .nc-context-menu-separator {
561
- height: 1px;
562
- background-color: var(--nc-border);
563
- margin: 4px 8px;
564
- }
565
-
566
- .nc-context-menu-icon {
567
- display: flex;
568
- align-items: center;
569
- justify-content: center;
570
- width: 16px;
571
- height: 16px;
572
- flex-shrink: 0;
573
- }
574
-
575
- .nc-context-menu-label {
576
- flex: 1;
577
- white-space: nowrap;
578
- overflow: hidden;
579
- text-overflow: ellipsis;
580
- }
581
-
582
- /* NumberInput component */
583
- .nc-number-input-container { display: flex; align-items: stretch; }
584
- .nc-number-input-container.nc-small { gap: 4px; }
585
- .nc-number-input-container:not(.nc-small) { gap: 6px; }
586
- .nc-number-input { text-align: center; }
587
- .nc-number-input.nc-small { width: 80px; font-size: 12px; padding: 0 4px; border-radius: 4px; }
588
- .nc-number-input:not(.nc-small) { width: 120px; }
589
- .nc-number-input-button { padding: 0; font-weight: normal; display: flex; align-items: center; justify-content: center; font-family: Arial, sans-serif; }
590
- .nc-number-input-button.nc-small { width: 28px; min-height: 28px; font-size: 16px; }
591
- .nc-number-input-button:not(.nc-small) { width: 42px; min-height: 42px; font-size: 24px; }
592
- .nc-number-input-col.nc-small { gap: 4px; }
593
- .nc-number-input-col:not(.nc-small) { gap: 6px; }
594
-
595
- /* Hide number input spinner arrows */
596
- input[type="number"]::-webkit-inner-spin-button,
597
- input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
598
- input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
599
-
600
- /* Layout utilities */
601
- .nc-label { color: var(--nc-muted); font-size: 12px; }
602
- .nc-row { display: flex; gap: 8px; align-items: center; }
603
- .nc-col { display: flex; flex-direction: column; gap: 6px; }
604
- .nc-section { padding: 12px; }
605
- .nc-section+.nc-section { border-top: 1px solid var(--nc-border); }
606
-
607
- /* ComboBox dropdown options */
608
- .nc-combo-dropdown .nc-section { padding: 8px 12px; }
609
- .nc-combo-dropdown .nc-section + .nc-section { border-top: none; }
610
- .nc-combo-dropdown .nc-section:hover { background: var(--nc-overlay-hover); }
611
-
612
- /* Slider component */
613
- .nc-slider {
614
- -webkit-appearance: none;
615
- appearance: none;
616
- height: 6px;
617
- border-radius: 3px;
618
- background: linear-gradient(
619
- to right,
620
- var(--nc-primary) 0%,
621
- var(--nc-primary) var(--nc-slider-percentage, 50%),
622
- var(--nc-button-bg) var(--nc-slider-percentage, 50%),
623
- var(--nc-button-bg) 100%
624
- );
625
- border: 1px solid var(--nc-button-border);
626
- outline: none;
627
- cursor: pointer;
628
- }
629
-
630
- .nc-slider::-webkit-slider-thumb {
631
- -webkit-appearance: none;
632
- appearance: none;
633
- width: 18px;
634
- height: 18px;
635
- border-radius: 50%;
636
- background: var(--nc-primary);
637
- border: 2px solid var(--nc-primary);
638
- cursor: pointer;
639
- transition: transform 100ms, box-shadow 100ms;
640
- }
641
-
642
- .nc-slider::-webkit-slider-thumb:hover {
643
- transform: scale(1.1);
644
- box-shadow: 0 0 8px rgba(59, 130, 246, 0.5);
645
- }
646
-
647
- .nc-slider::-webkit-slider-thumb:active {
648
- transform: scale(0.95);
649
- }
650
-
651
- .nc-slider::-moz-range-thumb {
652
- width: 18px;
653
- height: 18px;
654
- border-radius: 50%;
655
- background: var(--nc-primary);
656
- border: 2px solid var(--nc-primary);
657
- cursor: pointer;
658
- transition: transform 100ms, box-shadow 100ms;
659
- }
660
-
661
- .nc-slider::-moz-range-thumb:hover { transform: scale(1.1); box-shadow: 0 0 8px rgba(59, 130, 246, 0.5); }
662
- .nc-slider:disabled { opacity: 0.5; cursor: not-allowed; }
663
- .nc-slider:disabled::-webkit-slider-thumb { cursor: not-allowed; }
664
- .nc-slider:disabled::-moz-range-thumb { cursor: not-allowed; }
665
-
666
- /* ListGroup component */
667
- .nc-list-group { margin-bottom: 0; margin-top: 16px; }
668
- .nc-list-group:first-child { margin-top: 0; }
669
- .nc-list-group:last-child { margin-bottom: 16px; }
670
-
671
- .nc-list-group-title {
672
- font-size: 12px;
673
- font-weight: 600;
674
- color: var(--nc-text-weak);
675
- text-transform: uppercase;
676
- letter-spacing: 0.5px;
677
- margin-bottom: 8px;
678
- padding-left: 2px;
679
- display: flex;
680
- align-items: center;
681
- justify-content: space-between;
682
- }
683
-
684
- .nc-list-group-content {
685
- background: var(--nc-bg-tertiary);
686
- border: 1px solid var(--nc-border);
687
- border-radius: 8px;
688
- overflow: hidden;
689
- }
690
-
691
- .nc-list-group-item {
692
- padding: 12px 14px;
693
- cursor: default;
694
- border-bottom: 1px solid var(--nc-border);
695
- min-height: 56px;
696
- box-sizing: border-box;
697
- display: flex;
698
- align-items: center;
699
- transition: background-color 150ms ease-out;
700
- }
701
-
702
- .nc-list-group-item:last-child { border-bottom: none; }
703
- .nc-list-group-item-clickable:hover { background-color: var(--nc-overlay-hover); }
704
- .nc-list-group-item-active { background-color: var(--nc-button-active); }
705
-
706
- .nc-list-group-title-tools { display: flex; gap: 8px; }
707
-
708
- /* Tabs component */
709
- .nc-tab-container {
710
- position: relative;
711
- display: flex;
712
- align-items: center;
713
- border-bottom: 1px solid var(--nc-border);
714
- background: var(--nc-bg-secondary);
715
- }
716
-
717
- .nc-tab-scroll-wrapper {
718
- position: relative;
719
- display: flex;
720
- flex: 1;
721
- min-width: 0;
722
- overflow: hidden;
723
- }
724
-
725
- .nc-tab-scroll {
726
- display: flex;
727
- align-items: center;
728
- overflow-x: auto;
729
- overflow-y: hidden;
730
- scrollbar-width: none;
731
- -ms-overflow-style: none;
732
- flex: 1;
733
- min-width: 0;
734
- }
735
-
736
- .nc-tab-scroll::-webkit-scrollbar { display: none; }
737
-
738
- .nc-tab-scroll.nc-multiline {
739
- flex-wrap: wrap;
740
- overflow-x: visible;
741
- }
742
-
743
- .nc-tab-item {
744
- padding: 12px 16px;
745
- font-size: 12px;
746
- font-weight: 600;
747
- color: var(--nc-text-weak);
748
- cursor: pointer;
749
- transition: color 120ms, border-color 120ms;
750
- border-bottom: 2px solid transparent;
751
- text-transform: uppercase;
752
- letter-spacing: 0.5px;
753
- white-space: nowrap;
754
- flex-shrink: 0;
755
- }
756
-
757
- .nc-tab-scroll.nc-multiline .nc-tab-item { flex-shrink: 1; }
758
-
759
- .nc-tab-item:hover { color: var(--nc-text); }
760
- .nc-tab-item.nc-active { color: var(--nc-primary); border-bottom-color: var(--nc-primary); }
761
-
762
- .nc-tab-toolbar {
763
- display: flex;
764
- gap: 8px;
765
- align-items: center;
766
- padding: 0 12px;
767
- flex-shrink: 0;
768
- border-left: 1px solid var(--nc-border);
769
- }
770
-
771
- .nc-tab-scroll-indicator {
772
- position: absolute;
773
- top: 0;
774
- bottom: 0;
775
- width: 40px;
776
- pointer-events: none;
777
- z-index: 10;
778
- display: flex;
779
- align-items: center;
780
- justify-content: center;
781
- color: var(--nc-text-weak);
782
- }
783
-
784
- .nc-tab-scroll-indicator.nc-left {
785
- left: 0;
786
- background: linear-gradient(to right, var(--nc-bg-secondary) 20%, transparent);
787
- justify-content: flex-start;
788
- padding-left: 4px;
789
- }
790
-
791
- .nc-tab-scroll-indicator.nc-right {
792
- right: 0;
793
- background: linear-gradient(to left, var(--nc-bg-secondary) 20%, transparent);
794
- justify-content: flex-end;
795
- padding-right: 4px;
796
- }
797
-
798
- /* Vertical tabs */
799
- .nc-tab-container.nc-vertical {
800
- flex-direction: column;
801
- align-items: stretch;
802
- border-bottom: none;
803
- }
804
-
805
- .nc-tab-container.nc-verticalLeft {
806
- border-right: 1px solid var(--nc-border);
807
- }
808
-
809
- .nc-tab-container.nc-verticalRight {
810
- border-left: 1px solid var(--nc-border);
811
- }
812
-
813
- .nc-tab-container.nc-vertical .nc-tab-scroll {
814
- flex-direction: column;
815
- overflow-x: hidden;
816
- overflow-y: auto;
817
- padding: 8px;
818
- gap: 4px;
819
- }
820
-
821
- .nc-tab-container.nc-vertical .nc-tab-item {
822
- padding: 10px 12px;
823
- font-size: 14px;
824
- border-bottom: none;
825
- border-radius: 4px;
826
- text-transform: none;
827
- letter-spacing: normal;
828
- width: 100%;
829
- }
830
-
831
- .nc-tab-container.nc-verticalLeft .nc-tab-item {
832
- text-align: left;
833
- }
834
-
835
- .nc-tab-container.nc-verticalRight .nc-tab-item {
836
- text-align: right;
837
- }
838
-
839
- .nc-tab-container.nc-vertical .nc-tab-item:hover {
840
- background: var(--nc-bg-tertiary);
841
- }
842
-
843
- .nc-tab-container.nc-vertical .nc-tab-item.nc-active {
844
- background: var(--nc-primary);
845
- color: white;
846
- }
847
-
848
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator {
849
- left: 0;
850
- right: 0;
851
- width: auto;
852
- height: 40px;
853
- flex-direction: column;
854
- }
855
-
856
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator.nc-top {
857
- top: 0;
858
- bottom: auto;
859
- background: linear-gradient(to bottom, var(--nc-bg-secondary) 20%, transparent);
860
- justify-content: flex-start;
861
- padding-top: 4px;
862
- }
863
-
864
- .nc-tab-container.nc-vertical .nc-tab-scroll-indicator.nc-bottom {
865
- bottom: 0;
866
- top: auto;
867
- background: linear-gradient(to top, var(--nc-bg-secondary) 20%, transparent);
868
- justify-content: flex-end;
869
- padding-bottom: 4px;
870
- }
871
-
872
- /* Toggle component */
873
- .nc-toggle {
874
- position: relative;
875
- width: 56px;
876
- height: 30px;
877
- border-radius: 18px;
878
- padding: 4px;
879
- display: inline-flex;
880
- align-items: center;
881
- justify-content: flex-start;
882
- transition: border-color 160ms, background 160ms;
883
- cursor: pointer;
884
- }
885
-
886
- .nc-toggle.nc-checked { border-color: var(--nc-primary); background: rgba(59, 130, 246, 0.08); }
887
- .nc-toggle:not(.nc-checked) { border: 2px solid var(--nc-button-border); background: transparent; }
888
-
889
- .nc-toggle-thumb {
890
- width: 22px;
891
- height: 22px;
892
- border-radius: 12px;
893
- transition: transform 160ms, background 160ms;
894
- border: none;
895
- }
896
-
897
- .nc-toggle-thumb.nc-checked { background: var(--nc-text); transform: translateX(24px); box-shadow: 0 2px 6px rgba(59, 130, 246, 0.28); }
898
- .nc-toggle-thumb:not(.nc-checked) { background: var(--nc-muted); transform: translateX(0); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); }
899
-
900
- /* Dialog component */
901
- .nc-dialog-overlay {
902
- position: absolute;
903
- inset: 0;
904
- background: rgba(0, 0, 0, 0.6);
905
- display: flex;
906
- align-items: center;
907
- justify-content: center;
908
- z-index: 100;
909
- animation: nc-dialog-fade-in 150ms ease-out;
910
- }
911
-
912
- .nc-dialog-overlay.nc-fullscreen {
913
- position: fixed;
914
- z-index: 1000;
915
- }
916
-
917
- .nc-dialog-container {
918
- background: var(--nc-bg-secondary);
919
- border-radius: 12px;
920
- border: 1px solid var(--nc-border);
921
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
922
- display: flex;
923
- flex-direction: column;
924
- animation: nc-dialog-slide-up 200ms ease-out;
925
- outline: none;
926
- width: 360px;
927
- max-width: 90%;
928
- max-height: 95%;
929
- }
930
-
931
- .nc-dialog-header {
932
- display: flex;
933
- align-items: center;
934
- justify-content: space-between;
935
- padding: 16px 20px;
936
- border-bottom: 1px solid var(--nc-border);
937
- }
938
-
939
- .nc-dialog-title {
940
- font-size: 16px;
941
- font-weight: 600;
942
- color: var(--nc-text);
943
- margin: 0;
944
- }
945
-
946
- .nc-dialog-content {
947
- padding: 20px;
948
- overflow-y: auto;
949
- flex: 1;
950
- color: var(--nc-text);
951
- }
952
-
953
- .nc-dialog-footer {
954
- display: flex;
955
- gap: 8px;
956
- padding: 16px 20px;
957
- border-top: 1px solid var(--nc-border);
958
- justify-content: flex-end;
959
- }
960
-
961
- @keyframes nc-dialog-fade-in {
962
- from {
963
- opacity: 0;
964
- }
965
- to {
966
- opacity: 1;
967
- }
968
- }
969
-
970
- @keyframes nc-dialog-slide-up {
971
- from {
972
- opacity: 0;
973
- transform: translateY(20px) scale(0.95);
974
- }
975
- to {
976
- opacity: 1;
977
- transform: translateY(0) scale(1);
978
- }
979
- }
980
-
981
- /* App Title Bar */
982
- .nc-app-title-bar {
983
- display: flex;
984
- align-items: center;
985
- justify-content: space-between;
986
- padding: 6px 8px;
987
- background: var(--nc-bg-secondary);
988
- border-bottom: 1px solid var(--nc-border);
989
- flex-shrink: 0;
990
- min-height: 36px;
991
- }
992
-
993
- .nc-app-title-bar-left {
994
- display: flex;
995
- align-items: center;
996
- gap: 8px;
997
- flex: 1;
998
- min-width: 0;
999
- }
1000
-
1001
- .nc-app-title-bar-title {
1002
- font-size: 13px;
1003
- font-weight: 600;
1004
- color: var(--nc-text);
1005
- white-space: nowrap;
1006
- overflow: hidden;
1007
- text-overflow: ellipsis;
1008
- }
1009
-
1010
- .nc-app-title-bar-back {
1011
- display: flex;
1012
- align-items: center;
1013
- justify-content: center;
1014
- width: 28px;
1015
- height: 28px;
1016
- border: none;
1017
- background: transparent;
1018
- color: var(--nc-text);
1019
- border-radius: 6px;
1020
- cursor: pointer;
1021
- transition: background-color 0.15s ease;
1022
- flex-shrink: 0;
1023
- }
1024
-
1025
- .nc-app-title-bar-back:hover {
1026
- background-color: var(--nc-bg-tertiary);
1027
- }
1028
-
1029
- .nc-app-title-bar-back:active {
1030
- background-color: var(--nc-bg-quaternary);
1031
- }
1032
-
1033
- .nc-app-title-bar-right {
1034
- display: flex;
1035
- align-items: center;
1036
- gap: 4px;
1037
- flex-shrink: 0;
1038
- }
1039
-
1040
- .nc-app-title-bar-toolbar {
1041
- display: flex;
1042
- align-items: center;
1043
- gap: 4px;
1044
- }
1045
-
1046
- .nc-app-content-wrapper {
1047
- overflow-y: auto;
1048
- }
1049
-
1050
- /* App Taskbar */
1051
- .nc-app-taskbar {
1052
- display: flex;
1053
- flex-direction: column;
1054
- align-items: center;
1055
- gap: 6px;
1056
- padding: 8px;
1057
- background: var(--nc-bg-secondary);
1058
- border-right: 1px solid var(--nc-border);
1059
- flex-shrink: 0;
1060
- width: 56px;
1061
- }
1062
-
1063
- .nc-app-taskbar-button {
1064
- display: flex;
1065
- align-items: center;
1066
- justify-content: center;
1067
- width: 40px;
1068
- height: 40px;
1069
- border: none;
1070
- background: transparent;
1071
- color: var(--nc-text);
1072
- border-radius: 8px;
1073
- cursor: pointer;
1074
- transition: background-color 0.15s ease, transform 0.1s ease;
1075
- position: relative;
1076
- user-select: none;
1077
- }
1078
-
1079
- .nc-app-taskbar-button:hover {
1080
- background-color: var(--nc-bg-tertiary);
1081
- }
1082
-
1083
- .nc-app-taskbar-button:active {
1084
- transform: scale(0.95);
1085
- background-color: var(--nc-bg-quaternary);
1086
- }
1087
-
1088
- .nc-app-taskbar-button.nc-active {
1089
- background-color: var(--nc-bg-tertiary);
1090
- }
1091
-
1092
- .nc-app-taskbar-button.nc-active:hover {
1093
- background-color: var(--nc-bg-quaternary);
1094
- }
1095
-
1096
- /* Running indicator dot under the icon */
1097
- .nc-app-taskbar-indicator {
1098
- position: absolute;
1099
- bottom: 2px;
1100
- left: 50%;
1101
- transform: translateX(-50%);
1102
- width: 4px;
1103
- height: 4px;
1104
- border-radius: 50%;
1105
- background-color: var(--nc-primary);
1106
- }
1107
-
1108
- .nc-app-taskbar-button.nc-active .nc-app-taskbar-indicator {
1109
- width: 16px;
1110
- border-radius: 2px;
1111
- }
1112
-
1113
- /* Separator between pinned and non-pinned apps */
1114
- .nc-app-taskbar-separator {
1115
- width: 24px;
1116
- height: 1px;
1117
- background-color: var(--nc-border);
1118
- margin: 4px 0;
1119
- }
1120
-
1121
- /* Desktop separator (keep horizontal) */
1122
- .nc-app-taskbar.nc-desktop .nc-app-taskbar-separator {
1123
- width: 32px;
1124
- height: 1px;
1125
- background: var(--nc-border);
1126
- margin: 4px 0;
1127
- }
1128
-
1129
- /* Mobile taskbar - horizontal at bottom */
1130
- @media (max-width: 767px) {
1131
- .nc-app-taskbar.nc-mobile {
1132
- flex-direction: row;
1133
- width: 100%;
1134
- height: 56px;
1135
- border-right: none;
1136
- border-top: 1px solid var(--nc-border);
1137
- position: fixed;
1138
- bottom: 0;
1139
- left: 0;
1140
- right: 0;
1141
- z-index: 100;
1142
- justify-content: center;
1143
- overflow-x: auto;
1144
- }
1145
-
1146
- /* Adjust running indicator for horizontal layout */
1147
- .nc-app-taskbar.nc-mobile .nc-app-taskbar-indicator {
1148
- bottom: auto;
1149
- top: 2px;
1150
- }
1151
-
1152
- /* Separator becomes vertical divider */
1153
- .nc-app-taskbar.nc-mobile .nc-app-taskbar-separator {
1154
- width: 1px;
1155
- height: 32px;
1156
- background: var(--nc-border);
1157
- margin: 0 4px;
1158
- }
1159
-
1160
- .nc-app-panel {
1161
- width: 100% !important;
1162
- }
1163
- }
1164
-
1165
- /* AppDialog component */
1166
- .nc-app-dialog-container {
1167
- width: 95vw;
1168
- height: 95vh;
1169
- max-width: 1200px;
1170
- max-height: 900px;
1171
- background: var(--nc-bg);
1172
- border: 1px solid var(--nc-border);
1173
- border-radius: 12px;
1174
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
1175
- display: flex;
1176
- flex-direction: column;
1177
- overflow: hidden;
1178
- animation: nc-dialog-slide-up 200ms ease-out;
1179
- }
1180
-
1181
- /* YAML Editor syntax highlighting tokens */
1182
- .nc-token-string { color: var(--nc-code-string) !important; }
1183
- .nc-token-boolean { color: var(--nc-code-boolean) !important; }
1184
- .nc-token-constant { color: var(--nc-code-null) !important; }
1185
- .nc-token-number { color: var(--nc-code-number) !important; }
1186
- .nc-token-atrule { color: var(--nc-code-key) !important; }
1187
- .nc-token-comment { color: var(--nc-code-comment) !important; }
1188
-
1189
- /* YamlTextArea component */
1190
- .nc-yaml-textarea {
1191
- display: flex;
1192
- flex-direction: column;
1193
- gap: 4px;
1194
- }
1195
-
1196
- .nc-yaml-textarea-container {
1197
- display: flex;
1198
- border: 1px solid var(--nc-border);
1199
- border-radius: 4px;
1200
- overflow: hidden;
1201
- background: var(--nc-bg-secondary);
1202
- min-height: 100px;
1203
- flex-grow: 1;
1204
- }
1205
-
1206
- .nc-yaml-textarea-container.error {
1207
- border-color: var(--nc-danger);
1208
- }
1209
-
1210
- /* ===== NOTIFICATION COMPONENT ===== */
1211
- .nc-notification {
1212
- min-width: 320px;
1213
- max-width: 400px;
1214
- background: var(--nc-bg-tertiary);
1215
- border: 1px solid var(--nc-border);
1216
- border-radius: 8px;
1217
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1218
- overflow: hidden;
1219
- }
1220
-
1221
- .nc-notification-content {
1222
- display: flex;
1223
- align-items: flex-start;
1224
- padding: 12px 16px;
1225
- gap: 12px;
1226
- }
1227
-
1228
- .nc-notification-body {
1229
- flex: 1;
1230
- min-width: 0;
1231
- }
1232
-
1233
- .nc-notification-title {
1234
- font-weight: 600;
1235
- font-size: 14px;
1236
- color: var(--nc-text);
1237
- margin-bottom: 4px;
1238
- }
1239
-
1240
- .nc-notification-message {
1241
- font-size: 13px;
1242
- color: var(--nc-text-weak);
1243
- line-height: 1.4;
1244
- word-wrap: break-word;
1245
- }
1246
-
1247
- .nc-notification-dismiss {
1248
- flex-shrink: 0;
1249
- background: none;
1250
- border: none;
1251
- padding: 4px;
1252
- cursor: pointer;
1253
- color: var(--nc-text-weak);
1254
- border-radius: 4px;
1255
- display: flex;
1256
- align-items: center;
1257
- justify-content: center;
1258
- transition: background-color 150ms ease, color 150ms ease;
1259
- }
1260
-
1261
- .nc-notification-dismiss:hover {
1262
- background: var(--nc-overlay-hover);
1263
- color: var(--nc-text);
1264
- }
1265
-
1266
- /* Notification type variants */
1267
- .nc-notification-success {
1268
- border-left: 3px solid var(--nc-success);
1269
- }
1270
-
1271
- .nc-notification-success .nc-notification-title {
1272
- color: var(--nc-success);
1273
- }
1274
-
1275
- .nc-notification-danger {
1276
- border-left: 3px solid var(--nc-danger);
1277
- }
1278
-
1279
- .nc-notification-danger .nc-notification-title {
1280
- color: var(--nc-danger);
1281
- }
1282
-
1283
- .nc-notification-warning {
1284
- border-left: 3px solid var(--nc-warning);
1285
- }
1286
-
1287
- .nc-notification-warning .nc-notification-title {
1288
- color: var(--nc-warning);
1289
- }
1290
-
1291
- .nc-notification-info {
1292
- border-left: 3px solid var(--nc-primary);
1293
- }
1294
-
1295
- .nc-notification-info .nc-notification-title {
1296
- color: var(--nc-primary);
1297
- }
1298
-
1299
- /* ===== MONTH RANGE PICKER ===== */
1300
-
1301
- .nc-month-range-picker {
1302
- display: flex;
1303
- flex-direction: column;
1304
- gap: 4px;
1305
- }
1306
-
1307
- .nc-month-range-picker-input {
1308
- width: 100%;
1309
- padding: 8px 12px;
1310
- background: var(--nc-button-bg);
1311
- border: 1px solid var(--nc-button-border);
1312
- border-radius: 6px;
1313
- color: var(--nc-text);
1314
- font-size: 14px;
1315
- text-align: left;
1316
- cursor: pointer;
1317
- transition: all 0.15s ease;
1318
- }
1319
-
1320
- .nc-month-range-picker-input:hover:not(:disabled) {
1321
- background: var(--nc-button-hover);
1322
- border-color: var(--nc-primary);
1323
- }
1324
-
1325
- .nc-month-range-picker-input:disabled {
1326
- opacity: 0.5;
1327
- cursor: not-allowed;
1328
- }
1329
-
1330
- .nc-month-range-picker-popup {
1331
- background: var(--nc-bg-tertiary);
1332
- border: 1px solid var(--nc-border);
1333
- border-radius: 8px;
1334
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
1335
- overflow: hidden;
1336
- }
1337
-
1338
- .nc-month-range-picker-content {
1339
- display: flex;
1340
- flex-direction: column;
1341
- gap: 16px;
1342
- padding: 16px;
1343
- }
1344
-
1345
- .nc-month-range-picker-row {
1346
- display: flex;
1347
- gap: 16px;
1348
- }
1349
-
1350
- .nc-month-range-picker-column {
1351
- flex: 1;
1352
- display: flex;
1353
- flex-direction: column;
1354
- gap: 8px;
1355
- }
1356
-
1357
- .nc-month-input {
1358
- width: 100%;
1359
- padding: 8px 12px;
1360
- background: var(--nc-button-bg);
1361
- border: 1px solid var(--nc-button-border);
1362
- border-radius: 6px;
1363
- color: var(--nc-text);
1364
- font-size: 14px;
1365
- font-family: inherit;
1366
- transition: all 0.15s ease;
1367
- }
1368
-
1369
- .nc-month-input:hover {
1370
- border-color: var(--nc-primary);
1371
- }
1372
-
1373
- .nc-month-input:focus {
1374
- outline: none;
1375
- border-color: var(--nc-primary);
1376
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1377
- }
1378
-
1379
- .nc-month-input.nc-error {
1380
- border-color: var(--nc-danger);
1381
- }
1382
-
1383
- .nc-month-input.nc-error:focus {
1384
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
1385
- }
1386
-
1387
- .nc-month-error-text {
1388
- font-size: 12px;
1389
- color: var(--nc-danger);
1390
- margin-top: -4px;
1391
- }
1392
-
1393
- .nc-month-range-error {
1394
- padding: 8px 12px;
1395
- background: rgba(239, 68, 68, 0.1);
1396
- border: 1px solid var(--nc-danger);
1397
- border-radius: 6px;
1398
- color: var(--nc-danger);
1399
- font-size: 14px;
1400
- }
1401
-
1402
- .nc-month-range-picker-footer {
1403
- display: flex;
1404
- justify-content: flex-end;
1405
- gap: 8px;
1406
- padding-top: 8px;
1407
- border-top: 1px solid var(--nc-border);
1408
- }
1409
-
1410
- .nc-tab-panel-wrapper {
1411
- height: 100%;
1412
- }