pinokiod 7.3.9 → 7.3.11
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/kernel/bin/brew.js +12 -2
- package/kernel/bin/caddy.js +24 -20
- package/kernel/bin/huggingface.js +2 -2
- package/kernel/bin/setup.js +2 -3
- package/kernel/bin/uv.js +13 -6
- package/kernel/connect/index.js +5 -1
- package/kernel/connect/providers/huggingface/index.js +213 -75
- package/kernel/environment.js +16 -1
- package/kernel/router/localhost_home_router.js +7 -0
- package/kernel/shell.js +1 -5
- package/kernel/util.js +1 -0
- package/package.json +1 -1
- package/server/index.js +75 -33
- package/server/public/common.js +52 -88
- package/server/public/install.js +20 -2
- package/server/public/layout.js +1 -1
- package/server/public/nav.js +3 -1
- package/server/public/style.css +1455 -521
- package/server/public/tab-link-popover.css +162 -18
- package/server/public/tab-link-popover.js +230 -21
- package/server/public/task-launcher.css +182 -91
- package/server/public/terminal-settings.js +227 -50
- package/server/public/universal-launcher.css +42 -33
- package/server/public/urldropdown.css +284 -0
- package/server/views/app.ejs +1718 -352
- package/server/views/autolaunch.ejs +4 -5
- package/server/views/checkpoints.ejs +223 -50
- package/server/views/connect/huggingface.ejs +406 -325
- package/server/views/connect.ejs +0 -1
- package/server/views/github.ejs +277 -324
- package/server/views/index.ejs +65 -8
- package/server/views/install.ejs +134 -65
- package/server/views/logs.ejs +9 -8
- package/server/views/net.ejs +341 -64
- package/server/views/network.ejs +85 -63
- package/server/views/partials/main_sidebar.ejs +249 -24
- package/server/views/plugins.ejs +141 -3
- package/server/views/settings.ejs +103 -7
- package/server/views/setup.ejs +0 -5
- package/server/views/skills.ejs +0 -1
- package/server/views/task_list.ejs +0 -1
- package/server/views/terminal.ejs +285 -60
- package/server/views/terminals.ejs +346 -6
- package/server/views/tools.ejs +828 -1691
- package/test/caddy-install.test.js +53 -0
- package/test/connect-setup.test.js +16 -0
- package/test/github-connection.test.js +1 -1
- package/test/huggingface-bin.test.js +4 -4
- package/test/huggingface-connect.test.js +73 -0
- package/test/main-sidebar.test.js +31 -0
- package/test/shell-run-template.test.js +5 -1
- package/test/uv-bin.test.js +29 -0
|
@@ -132,26 +132,6 @@
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
shouldPreferModalInput() {
|
|
135
|
-
if (typeof navigator !== 'undefined') {
|
|
136
|
-
try {
|
|
137
|
-
if (navigator.userAgentData && typeof navigator.userAgentData.mobile === 'boolean') {
|
|
138
|
-
if (navigator.userAgentData.mobile) {
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
} catch (_) {}
|
|
143
|
-
const ua = navigator.userAgent || '';
|
|
144
|
-
if (/Mobi|Android|iPhone|iPad|Tablet/i.test(ua)) {
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
const platform = navigator.platform || '';
|
|
148
|
-
const maxTouchPoints = typeof navigator.maxTouchPoints === 'number'
|
|
149
|
-
? navigator.maxTouchPoints
|
|
150
|
-
: 0;
|
|
151
|
-
if (/Mac/i.test(platform) && maxTouchPoints > 1) {
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
135
|
return false;
|
|
156
136
|
}
|
|
157
137
|
|
|
@@ -651,41 +631,134 @@
|
|
|
651
631
|
return;
|
|
652
632
|
}
|
|
653
633
|
const tracker = {
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
634
|
+
active: false,
|
|
635
|
+
startTime: 0,
|
|
636
|
+
startX: 0,
|
|
637
|
+
startY: 0,
|
|
638
|
+
startScroll: null,
|
|
639
|
+
moved: false,
|
|
640
|
+
handlers: []
|
|
659
641
|
};
|
|
660
|
-
const
|
|
642
|
+
const getScrollSnapshot = () => {
|
|
643
|
+
const viewport = node.querySelector('.xterm-viewport');
|
|
644
|
+
const doc = typeof document !== 'undefined' ? document.documentElement : null;
|
|
645
|
+
const body = typeof document !== 'undefined' ? document.body : null;
|
|
646
|
+
return {
|
|
647
|
+
viewportTop: viewport ? viewport.scrollTop : 0,
|
|
648
|
+
viewportLeft: viewport ? viewport.scrollLeft : 0,
|
|
649
|
+
pageTop: typeof window !== 'undefined' ? (window.pageYOffset || doc && doc.scrollTop || body && body.scrollTop || 0) : 0,
|
|
650
|
+
pageLeft: typeof window !== 'undefined' ? (window.pageXOffset || doc && doc.scrollLeft || body && body.scrollLeft || 0) : 0
|
|
651
|
+
};
|
|
652
|
+
};
|
|
653
|
+
const didScrollChange = (start, end) => {
|
|
654
|
+
if (!start || !end) {
|
|
655
|
+
return false;
|
|
656
|
+
}
|
|
657
|
+
return Math.abs(end.viewportTop - start.viewportTop) > 1
|
|
658
|
+
|| Math.abs(end.viewportLeft - start.viewportLeft) > 1
|
|
659
|
+
|| Math.abs(end.pageTop - start.pageTop) > 1
|
|
660
|
+
|| Math.abs(end.pageLeft - start.pageLeft) > 1;
|
|
661
|
+
};
|
|
662
|
+
const resetTracker = () => {
|
|
663
|
+
tracker.active = false;
|
|
664
|
+
tracker.startScroll = null;
|
|
665
|
+
};
|
|
666
|
+
const getTouchPoint = (event, phase) => {
|
|
661
667
|
if (!event) {
|
|
662
|
-
return;
|
|
668
|
+
return null;
|
|
669
|
+
}
|
|
670
|
+
if (event.touches || event.changedTouches) {
|
|
671
|
+
const list = phase === 'end' ? event.changedTouches : event.touches;
|
|
672
|
+
const touch = list && list[0];
|
|
673
|
+
return touch && typeof touch.clientX === 'number' && typeof touch.clientY === 'number'
|
|
674
|
+
? { x: touch.clientX, y: touch.clientY }
|
|
675
|
+
: null;
|
|
676
|
+
}
|
|
677
|
+
return typeof event.clientX === 'number' && typeof event.clientY === 'number'
|
|
678
|
+
? { x: event.clientX, y: event.clientY }
|
|
679
|
+
: null;
|
|
680
|
+
};
|
|
681
|
+
const isInteractiveTarget = (target) => {
|
|
682
|
+
return Boolean(target && target.closest && target.closest('a, button, input, textarea, select, label, [role="button"], [contenteditable="true"], .terminal-keyboard-modal, .terminal-keyboard-backdrop'));
|
|
683
|
+
};
|
|
684
|
+
const isTouchEvent = (event) => {
|
|
685
|
+
if (!event) {
|
|
686
|
+
return false;
|
|
663
687
|
}
|
|
664
|
-
if (
|
|
688
|
+
if (event.touches || event.changedTouches) {
|
|
689
|
+
const list = event.touches || event.changedTouches;
|
|
690
|
+
if (list && list.length > 1) {
|
|
691
|
+
return false;
|
|
692
|
+
}
|
|
693
|
+
} else if (this.supportsPointer) {
|
|
665
694
|
const pointerType = event.pointerType;
|
|
666
695
|
if (pointerType && pointerType !== 'touch' && pointerType !== 'pen') {
|
|
667
|
-
return;
|
|
696
|
+
return false;
|
|
668
697
|
}
|
|
669
|
-
}
|
|
698
|
+
}
|
|
699
|
+
return true;
|
|
700
|
+
};
|
|
701
|
+
const handleStart = (event) => {
|
|
702
|
+
if (!isTouchEvent(event) || this.modalOpen || isInteractiveTarget(event.target)) {
|
|
703
|
+
resetTracker();
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
706
|
+
const point = getTouchPoint(event, 'start');
|
|
707
|
+
if (!point) {
|
|
708
|
+
resetTracker();
|
|
709
|
+
return;
|
|
710
|
+
}
|
|
711
|
+
tracker.active = true;
|
|
712
|
+
tracker.moved = false;
|
|
713
|
+
tracker.startTime = Date.now();
|
|
714
|
+
tracker.startX = point.x;
|
|
715
|
+
tracker.startY = point.y;
|
|
716
|
+
tracker.startScroll = getScrollSnapshot();
|
|
717
|
+
};
|
|
718
|
+
const handleMove = (event) => {
|
|
719
|
+
if (!tracker.active) {
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
const point = getTouchPoint(event, 'move');
|
|
723
|
+
if (!point) {
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
const distance = Math.hypot(point.x - tracker.startX, point.y - tracker.startY);
|
|
727
|
+
if (distance > 12) {
|
|
728
|
+
tracker.moved = true;
|
|
729
|
+
}
|
|
730
|
+
};
|
|
731
|
+
const handleEnd = (event) => {
|
|
732
|
+
if (!tracker.active) {
|
|
670
733
|
return;
|
|
671
734
|
}
|
|
672
|
-
const
|
|
673
|
-
const
|
|
674
|
-
const
|
|
675
|
-
const
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
if (delta < 320 && distance < 40) {
|
|
735
|
+
const point = getTouchPoint(event, 'end');
|
|
736
|
+
const duration = Date.now() - tracker.startTime;
|
|
737
|
+
const distance = point ? Math.hypot(point.x - tracker.startX, point.y - tracker.startY) : Infinity;
|
|
738
|
+
const scrolled = didScrollChange(tracker.startScroll, getScrollSnapshot());
|
|
739
|
+
resetTracker();
|
|
740
|
+
if (!tracker.moved && !scrolled && duration < 700 && distance <= 12 && !isInteractiveTarget(event.target)) {
|
|
679
741
|
event.preventDefault();
|
|
680
742
|
event.stopPropagation();
|
|
681
743
|
this.openModalFromGesture();
|
|
682
744
|
}
|
|
683
|
-
tracker.lastTime = now;
|
|
684
|
-
tracker.lastX = pointX;
|
|
685
|
-
tracker.lastY = pointY;
|
|
686
745
|
};
|
|
687
|
-
|
|
688
|
-
|
|
746
|
+
const addTrackedListener = (eventName, handler, options) => {
|
|
747
|
+
node.addEventListener(eventName, handler, options);
|
|
748
|
+
tracker.handlers.push({ eventName, handler, options });
|
|
749
|
+
};
|
|
750
|
+
if (this.supportsPointer) {
|
|
751
|
+
addTrackedListener('pointerdown', handleStart, { passive: true });
|
|
752
|
+
addTrackedListener('pointermove', handleMove, { passive: true });
|
|
753
|
+
addTrackedListener('pointerup', handleEnd, { passive: false });
|
|
754
|
+
addTrackedListener('pointercancel', resetTracker, { passive: true });
|
|
755
|
+
}
|
|
756
|
+
if (typeof window !== 'undefined' && 'TouchEvent' in window) {
|
|
757
|
+
addTrackedListener('touchstart', handleStart, { passive: true });
|
|
758
|
+
addTrackedListener('touchmove', handleMove, { passive: true });
|
|
759
|
+
addTrackedListener('touchend', handleEnd, { passive: false });
|
|
760
|
+
addTrackedListener('touchcancel', resetTracker, { passive: true });
|
|
761
|
+
}
|
|
689
762
|
tracker.node = node;
|
|
690
763
|
this.tapTrackers.set(term, tracker);
|
|
691
764
|
}
|
|
@@ -706,9 +779,10 @@
|
|
|
706
779
|
if (!tracker) {
|
|
707
780
|
return;
|
|
708
781
|
}
|
|
709
|
-
if (tracker.node && tracker.
|
|
710
|
-
|
|
711
|
-
|
|
782
|
+
if (tracker.node && Array.isArray(tracker.handlers)) {
|
|
783
|
+
tracker.handlers.forEach(({ eventName, handler, options }) => {
|
|
784
|
+
tracker.node.removeEventListener(eventName, handler, options);
|
|
785
|
+
});
|
|
712
786
|
}
|
|
713
787
|
this.tapTrackers.delete(term);
|
|
714
788
|
}
|
|
@@ -730,6 +804,9 @@
|
|
|
730
804
|
: null;
|
|
731
805
|
this.forceResizeButtons = new WeakMap();
|
|
732
806
|
this.forceResizeHandler = null;
|
|
807
|
+
this.tooltipElement = null;
|
|
808
|
+
this.activeTooltipTarget = null;
|
|
809
|
+
this.boundTooltipReposition = () => this.positionTerminalTooltip();
|
|
733
810
|
this.minimalRunnerMode = detectMinimalRunnerMode();
|
|
734
811
|
this.currentFontFamily = typeof this.preferences.fontFamily === 'string' ? this.preferences.fontFamily.trim() : '';
|
|
735
812
|
if (typeof document !== 'undefined') {
|
|
@@ -1187,6 +1264,8 @@
|
|
|
1187
1264
|
const nextTheme = Object.assign({}, theme);
|
|
1188
1265
|
const applied = this.applyOption(term, 'theme', nextTheme);
|
|
1189
1266
|
|
|
1267
|
+
console.log("nextTheme", nextTheme)
|
|
1268
|
+
|
|
1190
1269
|
const element = term.element;
|
|
1191
1270
|
if (element && element.style) {
|
|
1192
1271
|
if (nextTheme.background) {
|
|
@@ -1287,15 +1366,111 @@
|
|
|
1287
1366
|
return false;
|
|
1288
1367
|
}
|
|
1289
1368
|
|
|
1369
|
+
getTerminalTooltipElement() {
|
|
1370
|
+
if (typeof document === 'undefined' || !document.body) {
|
|
1371
|
+
return null;
|
|
1372
|
+
}
|
|
1373
|
+
if (this.tooltipElement && document.body.contains(this.tooltipElement)) {
|
|
1374
|
+
return this.tooltipElement;
|
|
1375
|
+
}
|
|
1376
|
+
const tooltip = document.createElement('div');
|
|
1377
|
+
tooltip.className = 'terminal-tooltip';
|
|
1378
|
+
tooltip.setAttribute('role', 'tooltip');
|
|
1379
|
+
tooltip.setAttribute('aria-hidden', 'true');
|
|
1380
|
+
document.body.appendChild(tooltip);
|
|
1381
|
+
this.tooltipElement = tooltip;
|
|
1382
|
+
return tooltip;
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
attachTerminalTooltip(target, text) {
|
|
1386
|
+
if (!target || typeof text !== 'string' || !text.trim()) {
|
|
1387
|
+
return;
|
|
1388
|
+
}
|
|
1389
|
+
target.setAttribute('data-terminal-tooltip', text);
|
|
1390
|
+
target.addEventListener('mouseenter', () => this.showTerminalTooltip(target));
|
|
1391
|
+
target.addEventListener('focus', () => this.showTerminalTooltip(target));
|
|
1392
|
+
target.addEventListener('mouseleave', () => this.hideTerminalTooltip(target));
|
|
1393
|
+
target.addEventListener('blur', () => this.hideTerminalTooltip(target));
|
|
1394
|
+
target.addEventListener('click', () => this.hideTerminalTooltip(target));
|
|
1395
|
+
target.addEventListener('keydown', (event) => {
|
|
1396
|
+
if (event && event.key === 'Escape') {
|
|
1397
|
+
this.hideTerminalTooltip(target);
|
|
1398
|
+
}
|
|
1399
|
+
});
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
showTerminalTooltip(target) {
|
|
1403
|
+
if (typeof window === 'undefined' || !target) {
|
|
1404
|
+
return;
|
|
1405
|
+
}
|
|
1406
|
+
const text = target.getAttribute('data-terminal-tooltip') || '';
|
|
1407
|
+
if (!text.trim()) {
|
|
1408
|
+
return;
|
|
1409
|
+
}
|
|
1410
|
+
const tooltip = this.getTerminalTooltipElement();
|
|
1411
|
+
if (!tooltip) {
|
|
1412
|
+
return;
|
|
1413
|
+
}
|
|
1414
|
+
this.activeTooltipTarget = target;
|
|
1415
|
+
tooltip.textContent = text;
|
|
1416
|
+
tooltip.setAttribute('aria-hidden', 'false');
|
|
1417
|
+
tooltip.classList.remove('is-visible');
|
|
1418
|
+
this.positionTerminalTooltip();
|
|
1419
|
+
tooltip.classList.add('is-visible');
|
|
1420
|
+
window.addEventListener('resize', this.boundTooltipReposition);
|
|
1421
|
+
window.addEventListener('scroll', this.boundTooltipReposition, true);
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
hideTerminalTooltip(target) {
|
|
1425
|
+
if (target && this.activeTooltipTarget && target !== this.activeTooltipTarget) {
|
|
1426
|
+
return;
|
|
1427
|
+
}
|
|
1428
|
+
if (typeof window !== 'undefined') {
|
|
1429
|
+
window.removeEventListener('resize', this.boundTooltipReposition);
|
|
1430
|
+
window.removeEventListener('scroll', this.boundTooltipReposition, true);
|
|
1431
|
+
}
|
|
1432
|
+
this.activeTooltipTarget = null;
|
|
1433
|
+
if (this.tooltipElement) {
|
|
1434
|
+
this.tooltipElement.classList.remove('is-visible');
|
|
1435
|
+
this.tooltipElement.setAttribute('aria-hidden', 'true');
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
positionTerminalTooltip() {
|
|
1440
|
+
if (typeof window === 'undefined' || !this.activeTooltipTarget || !this.tooltipElement) {
|
|
1441
|
+
return;
|
|
1442
|
+
}
|
|
1443
|
+
const targetRect = this.activeTooltipTarget.getBoundingClientRect();
|
|
1444
|
+
const tooltipRect = this.tooltipElement.getBoundingClientRect();
|
|
1445
|
+
const viewportWidth = window.innerWidth || document.documentElement.clientWidth || 0;
|
|
1446
|
+
const viewportHeight = window.innerHeight || document.documentElement.clientHeight || 0;
|
|
1447
|
+
const margin = 8;
|
|
1448
|
+
const gap = 8;
|
|
1449
|
+
const tooltipWidth = tooltipRect.width || this.tooltipElement.offsetWidth || 0;
|
|
1450
|
+
const tooltipHeight = tooltipRect.height || this.tooltipElement.offsetHeight || 0;
|
|
1451
|
+
let left = targetRect.right - tooltipWidth;
|
|
1452
|
+
let top = targetRect.bottom + gap;
|
|
1453
|
+
|
|
1454
|
+
if (top + tooltipHeight + margin > viewportHeight && targetRect.top - tooltipHeight - gap >= margin) {
|
|
1455
|
+
top = targetRect.top - tooltipHeight - gap;
|
|
1456
|
+
}
|
|
1457
|
+
left = Math.max(margin, Math.min(left, viewportWidth - tooltipWidth - margin));
|
|
1458
|
+
top = Math.max(margin, Math.min(top, viewportHeight - tooltipHeight - margin));
|
|
1459
|
+
|
|
1460
|
+
this.tooltipElement.style.left = `${Math.round(left)}px`;
|
|
1461
|
+
this.tooltipElement.style.top = `${Math.round(top)}px`;
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1290
1464
|
attachForceResizeButton(runner, host) {
|
|
1291
1465
|
if (typeof document === 'undefined' || !runner || !host || this.forceResizeButtons.has(runner)) {
|
|
1292
1466
|
return;
|
|
1293
1467
|
}
|
|
1294
1468
|
const button = document.createElement('button');
|
|
1295
1469
|
button.type = 'button';
|
|
1296
|
-
button.className = 'btn terminal-resize-button';
|
|
1297
|
-
button.innerHTML = '<i class="fa-solid fa-
|
|
1298
|
-
button.
|
|
1470
|
+
button.className = 'btn terminal-utility-button terminal-resize-button';
|
|
1471
|
+
button.innerHTML = '<i class="fa-solid fa-ruler-combined" aria-hidden="true"></i>';
|
|
1472
|
+
button.setAttribute('aria-label', 'Sync terminal to current viewport');
|
|
1473
|
+
this.attachTerminalTooltip(button, 'Sync terminal to current viewport');
|
|
1299
1474
|
button.addEventListener('click', (event) => {
|
|
1300
1475
|
if (event) {
|
|
1301
1476
|
event.preventDefault();
|
|
@@ -1390,10 +1565,12 @@
|
|
|
1390
1565
|
|
|
1391
1566
|
const button = document.createElement('button');
|
|
1392
1567
|
button.type = 'button';
|
|
1393
|
-
button.className = 'btn terminal-config-button';
|
|
1394
|
-
button.innerHTML = '<span class="terminal-config-label"><i class="fa-solid fa-sliders"></i
|
|
1568
|
+
button.className = 'btn terminal-utility-button terminal-config-button';
|
|
1569
|
+
button.innerHTML = '<span class="terminal-config-label"><i class="fa-solid fa-sliders" aria-hidden="true"></i></span>';
|
|
1395
1570
|
button.setAttribute('aria-haspopup', 'true');
|
|
1396
1571
|
button.setAttribute('aria-expanded', 'false');
|
|
1572
|
+
button.setAttribute('aria-label', 'Terminal appearance');
|
|
1573
|
+
this.attachTerminalTooltip(button, 'Terminal appearance');
|
|
1397
1574
|
|
|
1398
1575
|
const menu = document.createElement('div');
|
|
1399
1576
|
menu.className = 'terminal-config-menu';
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
--universal-launcher-primary-border-hover: var(--universal-quick-action-bg);
|
|
24
24
|
--universal-create-dropdown-surface: #ffffff;
|
|
25
25
|
--universal-create-dropdown-shadow: 0 12px 24px rgba(15, 23, 42, 0.14), 0 2px 8px rgba(15, 23, 42, 0.08);
|
|
26
|
-
--universal-create-dropdown-hover: rgba(
|
|
26
|
+
--universal-create-dropdown-hover: var(--pinokio-sidebar-tab-hover, rgba(15, 23, 42, 0.035));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
body.dark {
|
|
@@ -49,31 +49,29 @@ body.dark {
|
|
|
49
49
|
--universal-launcher-primary-border-hover: var(--universal-quick-action-text);
|
|
50
50
|
--universal-create-dropdown-surface: #151517;
|
|
51
51
|
--universal-create-dropdown-shadow: 0 16px 36px rgba(0, 0, 0, 0.38), 0 2px 10px rgba(0, 0, 0, 0.24);
|
|
52
|
-
--universal-create-dropdown-hover: rgba(
|
|
52
|
+
--universal-create-dropdown-hover: var(--pinokio-sidebar-tab-hover, rgba(255, 255, 255, 0.055));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
.main-sidebar .universal-create-dropdown {
|
|
56
|
-
position:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
z-index: 80;
|
|
61
|
-
min-width: 172px;
|
|
62
|
-
width: max-content;
|
|
63
|
-
max-width: min(220px, calc(100vw - 24px));
|
|
56
|
+
position: static;
|
|
57
|
+
min-width: 0;
|
|
58
|
+
width: 100%;
|
|
59
|
+
max-width: none;
|
|
64
60
|
height: auto !important;
|
|
65
61
|
max-height: none !important;
|
|
66
62
|
display: none;
|
|
67
63
|
flex-direction: column;
|
|
68
64
|
align-items: stretch;
|
|
69
65
|
align-content: flex-start;
|
|
70
|
-
gap:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
border
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
66
|
+
gap: 1px;
|
|
67
|
+
margin: 1px 0 3px;
|
|
68
|
+
padding: 1px 0 1px 27px;
|
|
69
|
+
border: 0;
|
|
70
|
+
border-radius: 0;
|
|
71
|
+
background: transparent;
|
|
72
|
+
box-shadow: none;
|
|
73
|
+
overflow: visible;
|
|
74
|
+
box-sizing: border-box;
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
.main-sidebar .universal-create-menu:not([open]) .universal-create-dropdown {
|
|
@@ -84,6 +82,15 @@ body.dark {
|
|
|
84
82
|
display: flex !important;
|
|
85
83
|
}
|
|
86
84
|
|
|
85
|
+
.main-sidebar .universal-create-menu[open] > summary {
|
|
86
|
+
background: var(--pinokio-sidebar-tab-hover, transparent) !important;
|
|
87
|
+
color: var(--pinokio-sidebar-tab-active-color, var(--universal-launcher-text)) !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.main-sidebar .universal-create-menu[open] > summary .main-sidebar-action-icon {
|
|
91
|
+
color: var(--pinokio-sidebar-icon-active, currentColor) !important;
|
|
92
|
+
}
|
|
93
|
+
|
|
87
94
|
.main-sidebar .universal-create-dropdown button {
|
|
88
95
|
appearance: none;
|
|
89
96
|
border: 0;
|
|
@@ -92,15 +99,15 @@ body.dark {
|
|
|
92
99
|
align-items: center;
|
|
93
100
|
justify-content: flex-start;
|
|
94
101
|
background: transparent;
|
|
95
|
-
color: var(--universal-launcher-text);
|
|
102
|
+
color: var(--pinokio-sidebar-tab-muted, var(--universal-launcher-text));
|
|
96
103
|
text-align: left;
|
|
97
|
-
min-height:
|
|
104
|
+
min-height: 25px;
|
|
98
105
|
gap: 3px;
|
|
99
|
-
padding:
|
|
106
|
+
padding: 3px 5px;
|
|
100
107
|
border-radius: 6px;
|
|
101
|
-
font-size:
|
|
102
|
-
font-weight:
|
|
103
|
-
line-height: 1;
|
|
108
|
+
font-size: 12px;
|
|
109
|
+
font-weight: 500;
|
|
110
|
+
line-height: 1.25;
|
|
104
111
|
white-space: nowrap;
|
|
105
112
|
cursor: pointer;
|
|
106
113
|
box-sizing: border-box;
|
|
@@ -110,12 +117,14 @@ body.dark {
|
|
|
110
117
|
.main-sidebar .universal-create-dropdown button:hover,
|
|
111
118
|
.main-sidebar .universal-create-dropdown button:focus-visible {
|
|
112
119
|
background: var(--universal-create-dropdown-hover);
|
|
120
|
+
color: var(--pinokio-sidebar-tab-active-color, var(--universal-launcher-text));
|
|
113
121
|
outline: none;
|
|
114
122
|
}
|
|
115
123
|
|
|
116
124
|
body.dark .main-sidebar .universal-create-dropdown button:hover,
|
|
117
125
|
body.dark .main-sidebar .universal-create-dropdown button:focus-visible {
|
|
118
126
|
background: var(--universal-create-dropdown-hover);
|
|
127
|
+
color: var(--pinokio-sidebar-tab-active-color, var(--universal-launcher-text));
|
|
119
128
|
}
|
|
120
129
|
|
|
121
130
|
.universal-launcher-overlay {
|
|
@@ -1752,9 +1761,9 @@ body.dark .universal-launcher-error {
|
|
|
1752
1761
|
|
|
1753
1762
|
.swal2-popup.universal-launcher-download-modal {
|
|
1754
1763
|
border: 1px solid var(--universal-launcher-border);
|
|
1755
|
-
border-radius:
|
|
1764
|
+
border-radius: 8px;
|
|
1756
1765
|
background: var(--universal-launcher-panel-bg);
|
|
1757
|
-
box-shadow: 0
|
|
1766
|
+
box-shadow: 0 18px 50px rgba(15, 23, 42, 0.16);
|
|
1758
1767
|
}
|
|
1759
1768
|
|
|
1760
1769
|
.swal2-container.universal-launcher-download-container {
|
|
@@ -1782,7 +1791,7 @@ body.dark .universal-launcher-error {
|
|
|
1782
1791
|
.universal-launcher-download-icon {
|
|
1783
1792
|
width: 32px;
|
|
1784
1793
|
height: 32px;
|
|
1785
|
-
border-radius:
|
|
1794
|
+
border-radius: 7px;
|
|
1786
1795
|
border: 1px solid var(--universal-launcher-border);
|
|
1787
1796
|
background: var(--universal-launcher-panel-bg-muted);
|
|
1788
1797
|
color: var(--universal-launcher-title-color);
|
|
@@ -1799,10 +1808,10 @@ body.dark .universal-launcher-error {
|
|
|
1799
1808
|
}
|
|
1800
1809
|
|
|
1801
1810
|
.universal-launcher-download-title {
|
|
1802
|
-
font-size:
|
|
1803
|
-
line-height: 1.
|
|
1804
|
-
font-weight:
|
|
1805
|
-
letter-spacing:
|
|
1811
|
+
font-size: 16px;
|
|
1812
|
+
line-height: 1.25;
|
|
1813
|
+
font-weight: 600;
|
|
1814
|
+
letter-spacing: 0;
|
|
1806
1815
|
color: var(--universal-launcher-text);
|
|
1807
1816
|
}
|
|
1808
1817
|
|
|
@@ -1844,9 +1853,9 @@ body.dark .universal-launcher-error {
|
|
|
1844
1853
|
.universal-launcher-download-input {
|
|
1845
1854
|
width: 100%;
|
|
1846
1855
|
box-sizing: border-box;
|
|
1847
|
-
min-height:
|
|
1848
|
-
padding: 0
|
|
1849
|
-
border-radius:
|
|
1856
|
+
min-height: 36px;
|
|
1857
|
+
padding: 0 10px;
|
|
1858
|
+
border-radius: 6px;
|
|
1850
1859
|
border: 1px solid var(--universal-launcher-border-strong);
|
|
1851
1860
|
background: var(--universal-launcher-control-surface);
|
|
1852
1861
|
color: var(--universal-launcher-text);
|