@devframes/plugin-terminals 0.0.1

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.
@@ -0,0 +1 @@
1
+ .xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--un-bg-opacity:100%;--un-border-opacity:100%;--un-text-opacity:100%;--un-ring-opacity:100%;--un-leading:initial}}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-leading{syntax:"*";inherits:false}@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-bg-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-ring-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-inset-ring-color{syntax:"*";inherits:false}@property --un-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow-color{syntax:"*";inherits:false}@property --un-ring-color{syntax:"*";inherits:false}@property --un-ring-inset{syntax:"*";inherits:false}@property --un-ring-offset-color{syntax:"*";inherits:false}@property --un-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --un-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow-color{syntax:"*";inherits:false}@property --un-blur{syntax:"*";inherits:false}@property --un-brightness{syntax:"*";inherits:false}@property --un-contrast{syntax:"*";inherits:false}@property --un-drop-shadow{syntax:"*";inherits:false}@property --un-grayscale{syntax:"*";inherits:false}@property --un-hue-rotate{syntax:"*";inherits:false}@property --un-invert{syntax:"*";inherits:false}@property --un-saturate{syntax:"*";inherits:false}@property --un-sepia{syntax:"*";inherits:false}@property --un-numeric-figure{syntax:"*";inherits:false}@property --un-numeric-fraction{syntax:"*";inherits:false}@property --un-numeric-spacing{syntax:"*";inherits:false}@property --un-ordinal{syntax:"*";inherits:false}@property --un-slashed-zero{syntax:"*";inherits:false}:root,:host{--radius-md:.375rem;--spacing:.25rem;--colors-white:#fff;--text-xs-fontSize:.75rem;--text-xs-lineHeight:1rem;--colors-neutral-800:oklch(26.9% 0 0);--colors-neutral-200:oklch(92.2% 0 0);--radius-DEFAULT:.25rem;--font-mono:DM Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-transition-timingFunction:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--radius-lg:.5rem;--font-sans:DM Sans,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--fontWeight-semibold:600;--radius-xl:.75rem;--colors-error-DEFAULT:#f63d68;--colors-success-DEFAULT:#12b76a;--colors-neutral-400:oklch(70.8% 0 0);--text-sm-fontSize:.875rem;--text-sm-lineHeight:1.25rem;--text-5xl-fontSize:3rem;--text-5xl-lineHeight:1;--text-base-fontSize:1rem;--text-base-lineHeight:1.5rem;--colors-primary-500:#578861;--fontWeight-medium:500;--leading-none:1;--colors-blue-400:oklch(70.7% .165 254.624);--colors-amber-400:oklch(82.8% .189 84.429);--colors-green-400:oklch(79.2% .209 151.711);--colors-red-400:oklch(70.4% .191 22.216);--colors-sky-400:oklch(74.6% .16 232.661);--colors-violet-400:oklch(70.2% .183 293.541);--colors-rose-400:oklch(71.2% .194 13.428);--colors-teal-400:oklch(77.7% .152 181.912);--colors-orange-400:oklch(75% .183 55.934);--colors-emerald-400:oklch(76.5% .177 163.223);--colors-primary-600:#40704b;--colors-blue-700:oklch(48.8% .243 264.376);--colors-blue-600:oklch(54.6% .245 262.881);--colors-amber-700:oklch(55.5% .163 48.998);--colors-amber-600:oklch(66.6% .179 58.318);--colors-green-700:oklch(52.7% .154 150.069);--colors-green-600:oklch(62.7% .194 149.214);--colors-red-700:oklch(50.5% .213 27.518);--colors-red-600:oklch(57.7% .245 27.325);--colors-sky-700:oklch(50% .134 242.749);--colors-sky-600:oklch(58.8% .158 241.966);--colors-violet-700:oklch(49.1% .27 292.581);--colors-violet-600:oklch(54.1% .281 293.009);--colors-rose-700:oklch(51.4% .222 16.935);--colors-rose-600:oklch(58.6% .253 17.585);--colors-teal-700:oklch(51.1% .096 186.391);--colors-teal-600:oklch(60% .118 184.704);--colors-orange-700:oklch(55.3% .195 38.402);--colors-orange-600:oklch(64.6% .222 41.116);--colors-emerald-700:oklch(50.8% .118 165.612);--colors-emerald-600:oklch(59.6% .145 163.225);--colors-neutral-600:oklch(43.9% 0 0);--colors-neutral-500:oklch(55.6% 0 0);--colors-primary-400:#75a67e;--colors-primary-300:#93c69d;--colors-blue-300:oklch(80.9% .105 251.813);--colors-amber-300:oklch(87.9% .169 91.605);--colors-green-300:oklch(87.1% .15 154.449);--colors-red-300:oklch(80.8% .114 19.571);--colors-sky-300:oklch(82.8% .111 230.318);--colors-violet-300:oklch(81.1% .111 293.571);--colors-rose-300:oklch(81% .117 11.638);--colors-teal-300:oklch(85.5% .138 181.071);--colors-orange-300:oklch(83.7% .128 66.29);--colors-emerald-300:oklch(84.5% .143 164.978);--default-font-family:var(--font-sans);--default-monoFont-family:var(--font-mono)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-featureSettings,normal);font-variation-settings:var(--default-font-variationSettings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-monoFont-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-monoFont-featureSettings,normal);font-variation-settings:var(--default-monoFont-variationSettings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden~=until-found])){display:none!important}*,:before,:after{border-color:#8882}.i-ph-arrow-clockwise-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M216 128a88 88 0 1 1-88-88a88 88 0 0 1 88 88' opacity='.2'/%3E%3Cpath d='M240 56v48a8 8 0 0 1-8 8h-48a8 8 0 0 1 0-16h27.4l-26.59-24.36l-.25-.24a80 80 0 1 0-1.67 114.78a8 8 0 0 1 11 11.63A95.44 95.44 0 0 1 128 224h-1.32a96 96 0 1 1 69.07-164L224 85.8V56a8 8 0 1 1 16 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-caret-down{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-code-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='m240 128l-48 40H64l-48-40l48-40h128Z' opacity='.2'/%3E%3Cpath d='M69.12 94.15L28.5 128l40.62 33.85a8 8 0 1 1-10.24 12.29l-48-40a8 8 0 0 1 0-12.29l48-40a8 8 0 0 1 10.24 12.3m176 27.7l-48-40a8 8 0 1 0-10.24 12.3L227.5 128l-40.62 33.85a8 8 0 1 0 10.24 12.29l48-40a8 8 0 0 0 0-12.29m-82.39-89.37a8 8 0 0 0-10.25 4.79l-64 176a8 8 0 0 0 4.79 10.26A8.1 8.1 0 0 0 96 224a8 8 0 0 0 7.52-5.27l64-176a8 8 0 0 0-4.79-10.25'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-folder-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M128 80H32V56a8 8 0 0 1 8-8h52.69a8 8 0 0 1 5.65 2.34Z' opacity='.2'/%3E%3Cpath d='M216 72h-84.69L104 44.69A15.86 15.86 0 0 0 92.69 40H40a16 16 0 0 0-16 16v144.62A15.4 15.4 0 0 0 39.38 216h177.51A15.13 15.13 0 0 0 232 200.89V88a16 16 0 0 0-16-16M92.69 56l16 16H40V56ZM216 200H40V88h176Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-git-branch-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M224 64a24 24 0 1 1-24-24a24 24 0 0 1 24 24' opacity='.2'/%3E%3Cpath d='M232 64a32 32 0 1 0-40 31v17a8 8 0 0 1-8 8H96a23.8 23.8 0 0 0-8 1.38V95a32 32 0 1 0-16 0v66a32 32 0 1 0 16 0v-17a8 8 0 0 1 8-8h88a24 24 0 0 0 24-24V95a32.06 32.06 0 0 0 24-31M64 64a16 16 0 1 1 16 16a16 16 0 0 1-16-16m32 128a16 16 0 1 1-16-16a16 16 0 0 1 16 16M200 80a16 16 0 1 1 16-16a16 16 0 0 1-16 16'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-magnifying-glass-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M192 112a80 80 0 1 1-80-80a80 80 0 0 1 80 80' opacity='.2'/%3E%3Cpath d='m229.66 218.34l-50.06-50.06a88.21 88.21 0 1 0-11.32 11.31l50.06 50.07a8 8 0 0 0 11.32-11.32M40 112a72 72 0 1 1 72 72a72.08 72.08 0 0 1-72-72'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-person-arms-spread-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M104 40a24 24 0 1 1 24 24a24 24 0 0 1-24-24m108 40H44c-12.87 0-16.71 17.5-5 22.9L96 128l-22.87 86.93a12 12 0 0 0 21.75 10.14L128 168l33.12 57.07a12 12 0 0 0 21.75-10.14L160 128l57-25.1c11.69-5.4 7.85-22.9-5-22.9' opacity='.2'/%3E%3Cpath d='M160 40a32 32 0 1 0-32 32a32 32 0 0 0 32-32m-32 16a16 16 0 1 1 16-16a16 16 0 0 1-16 16m103.5 31.71A19.62 19.62 0 0 0 212 72H44a20 20 0 0 0-8.38 38.16l.13.06l50.75 22.35l-21 79.72a20 20 0 0 0 36.5 16.53l26-44.88l26 44.88a20 20 0 0 0 36.4-16.53l-21-79.72l50.75-22.35l.13-.06a19.63 19.63 0 0 0 11.22-22.45m-17.8 7.9l-56.93 25.07a8 8 0 0 0-4.51 9.36L175.13 217a7 7 0 0 0 .49 1.35a4 4 0 1 1-7.25 3.38c-.11-.22-.22-.43-.34-.63L134.92 164a8 8 0 0 0-13.84 0L88 221.06c-.12.2-.23.41-.34.63a4 4 0 1 1-7.25-3.38a7 7 0 0 0 .49-1.35L103.74 130a8 8 0 0 0-4.51-9.36L42.3 95.61A4 4 0 0 1 44 88h168a4 4 0 0 1 1.73 7.61Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-play-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M228.23 134.69L84.15 222.81A8 8 0 0 1 72 216.12V39.88a8 8 0 0 1 12.15-6.69l144.08 88.12a7.82 7.82 0 0 1 0 13.38' opacity='.2'/%3E%3Cpath d='M232.4 114.49L88.32 26.35a16 16 0 0 0-16.2-.3A15.86 15.86 0 0 0 64 39.87v176.26A15.94 15.94 0 0 0 80 232a16.07 16.07 0 0 0 8.36-2.35l144.04-88.14a15.81 15.81 0 0 0 0-27ZM80 215.94V40l143.83 88Z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-plus{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M224 128a8 8 0 0 1-8 8h-80v80a8 8 0 0 1-16 0v-80H40a8 8 0 0 1 0-16h80V40a8 8 0 0 1 16 0v80h80a8 8 0 0 1 8 8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-terminal-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M216 80v112H40V64h160a16 16 0 0 1 16 16' opacity='.2'/%3E%3Cpath d='m117.31 134l-72 64a8 8 0 1 1-10.63-12L100 128L34.69 70a8 8 0 1 1 10.63-12l72 64a8 8 0 0 1 0 12ZM216 184h-96a8 8 0 0 0 0 16h96a8 8 0 0 0 0-16'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-terminal-window-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M224 56v144a8 8 0 0 1-8 8H40a8 8 0 0 1-8-8V56a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8' opacity='.2'/%3E%3Cpath d='M128 128a8 8 0 0 1-3 6.25l-40 32a8 8 0 1 1-10-12.5L107.19 128L75 102.25a8 8 0 1 1 10-12.5l40 32a8 8 0 0 1 3 6.25m48 24h-40a8 8 0 0 0 0 16h40a8 8 0 0 0 0-16m56-96v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-16 144V56H40v144z'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-trash-duotone{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='currentColor'%3E%3Cpath d='M200 56v152a8 8 0 0 1-8 8H64a8 8 0 0 1-8-8V56Z' opacity='.2'/%3E%3Cpath d='M216 48h-40v-8a24 24 0 0 0-24-24h-48a24 24 0 0 0-24 24v8H40a8 8 0 0 0 0 16h8v144a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V64h8a8 8 0 0 0 0-16M96 40a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v8H96Zm96 168H64V64h128Zm-80-104v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0m48 0v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.i-ph-x{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1.11em' height='1.11em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128L50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;color:inherit;background-color:currentColor;width:1.11em;height:1.11em;-webkit-mask-size:100% 100%;mask-size:100% 100%}.badge{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-active{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-primary-600) var(--un-text-opacity), transparent) ;--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) ;gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-muted{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-neutral-600) var(--un-text-opacity), transparent) ;--un-leading:var(--leading-none);line-height:var(--leading-none);--un-font-weight:var(--fontWeight-medium);font-weight:var(--fontWeight-medium);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);border-radius:var(--radius-md);background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) ;gap:calc(var(--spacing) * 1);align-items:center;display:inline-flex}.badge-color-amber{color:color-mix(in srgb, var(--colors-amber-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-amber-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-amber-400) 20%, transparent) }.dark .badge-color-amber{color:color-mix(in srgb, var(--colors-amber-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-amber-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-amber-400) 10%, transparent) }.badge-color-blue{color:color-mix(in srgb, var(--colors-blue-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-blue-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-blue-400) 20%, transparent) }.dark .badge-color-blue{color:color-mix(in srgb, var(--colors-blue-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-blue-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-blue-400) 10%, transparent) }.badge-color-emerald{color:color-mix(in srgb, var(--colors-emerald-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-emerald-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-emerald-400) 20%, transparent) }.dark .badge-color-emerald{color:color-mix(in srgb, var(--colors-emerald-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-emerald-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-emerald-400) 10%, transparent) }.badge-color-green{color:color-mix(in srgb, var(--colors-green-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-green-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-green-400) 20%, transparent) }.dark .badge-color-green{color:color-mix(in srgb, var(--colors-green-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-green-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-green-400) 10%, transparent) }.badge-color-orange{color:color-mix(in srgb, var(--colors-orange-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-orange-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-orange-400) 20%, transparent) }.dark .badge-color-orange{color:color-mix(in srgb, var(--colors-orange-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-orange-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-orange-400) 10%, transparent) }.badge-color-red{color:color-mix(in srgb, var(--colors-red-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-red-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-red-400) 20%, transparent) }.dark .badge-color-red{color:color-mix(in srgb, var(--colors-red-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-red-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-red-400) 10%, transparent) }.badge-color-rose{color:color-mix(in srgb, var(--colors-rose-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-rose-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-rose-400) 20%, transparent) }.dark .badge-color-rose{color:color-mix(in srgb, var(--colors-rose-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-rose-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-rose-400) 10%, transparent) }.badge-color-sky{color:color-mix(in srgb, var(--colors-sky-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-sky-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-sky-400) 20%, transparent) }.dark .badge-color-sky{color:color-mix(in srgb, var(--colors-sky-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-sky-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-sky-400) 10%, transparent) }.badge-color-teal{color:color-mix(in srgb, var(--colors-teal-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-teal-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-teal-400) 20%, transparent) }.dark .badge-color-teal{color:color-mix(in srgb, var(--colors-teal-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-teal-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-teal-400) 10%, transparent) }.badge-color-violet{color:color-mix(in srgb, var(--colors-violet-700) var(--un-text-opacity), transparent) ;border-width:1px;border-color:color-mix(in srgb, var(--colors-violet-600) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-violet-400) 20%, transparent) }.dark .badge-color-violet{color:color-mix(in srgb, var(--colors-violet-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in srgb, var(--colors-violet-300) 15%, transparent) ;background-color:color-mix(in srgb, var(--colors-violet-400) 10%, transparent) }.btn-primary{color:color-mix(in srgb, var(--colors-white) var(--un-text-opacity), transparent) ;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);--un-outline-style:none;border-radius:var(--radius-DEFAULT);background-color:color-mix(in srgb, var(--colors-primary-500) var(--un-bg-opacity), transparent) ;gap:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;align-items:center;display:flex}.dark .badge-active,.dark .color-active{color:color-mix(in srgb, var(--colors-primary-300) var(--un-text-opacity), transparent) }.dark .badge-muted,.dark .color-muted{color:color-mix(in srgb, var(--colors-neutral-400) var(--un-text-opacity), transparent) }.color-active{color:color-mix(in srgb, var(--colors-primary-600) var(--un-text-opacity), transparent) }.color-base,.data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent) }.dark .color-base,.dark .data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent) }.color-muted{color:color-mix(in srgb, var(--colors-neutral-600) var(--un-text-opacity), transparent) }.dark .hover\:color-base:hover{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent) }.hover\:color-base:hover{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent) }.dark .placeholder\:color-faint::placeholder,.placeholder\:color-faint::placeholder{color:color-mix(in srgb, var(--colors-neutral-500) var(--un-text-opacity), transparent) }.btn-action{padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);--un-outline-style:none;border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) ;border-radius:var(--radius-DEFAULT);opacity:.75;gap:calc(var(--spacing) * 2);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;align-items:center;display:flex}.btn-icon{--un-outline-style:none;opacity:.65;width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));border-radius:3.40282e38px;outline-style:none;justify-content:center;align-items:center;display:flex}.btn-icon-square{--un-outline-style:none;border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) ;border-radius:var(--radius-DEFAULT);opacity:.65;width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration));outline-style:none;justify-content:center;align-items:center;display:flex}.border-active{border-color:color-mix(in srgb, var(--colors-primary-600) 25%, transparent) }.border-active\!{border-color:color-mix(in srgb, var(--colors-primary-600) 25%, transparent) !important}.dark .border-active{border-color:color-mix(in srgb, var(--colors-primary-400) 25%, transparent) }.dark .border-active\!{border-color:color-mix(in srgb, var(--colors-primary-400) 25%, transparent) !important}.border-base{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) }.border-base\!{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) !important}.dark .focus-visible\:border-active:focus-visible{border-color:color-mix(in srgb, var(--colors-primary-400) 25%, transparent) }.focus-visible\:border-active:focus-visible{border-color:color-mix(in srgb, var(--colors-primary-600) 25%, transparent) }.bg-active{background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) }.bg-active\!{background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) !important}.bg-base,.data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in srgb, var(--colors-white) var(--un-bg-opacity), transparent) }.dark .bg-base,.dark .data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in oklab, #111 var(--un-bg-opacity), transparent) }.bg-secondary{background-color:color-mix(in oklab, #f5f5f5 var(--un-bg-opacity), transparent) }.dark .bg-secondary{background-color:color-mix(in oklab, #1a1a1a var(--un-bg-opacity), transparent) }.hover\:bg-active:hover{background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) }.btn-action:hover,.btn-icon:hover,.btn-icon-square:hover{background-color:color-mix(in oklab, #8881 var(--un-bg-opacity), transparent) ;opacity:1}.btn-primary:hover{background-color:color-mix(in srgb, var(--colors-primary-600) var(--un-bg-opacity), transparent) }.dark .btn-icon,.dark .btn-icon-square,.dark .op-fade{opacity:.55}.op-fade{opacity:.65}.dark .op-mute{opacity:.25}.op-mute{opacity:.3}.btn-action:disabled{pointer-events:none;opacity:.3!important}.btn-icon:disabled,.btn-icon-square:disabled{opacity:.3;pointer-events:none}.btn-primary:disabled{opacity:.5;pointer-events:none}.container{width:100%}.btn-action:focus-visible,.btn-icon:focus-visible,.btn-icon-square:focus-visible,.btn-primary:focus-visible{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(2px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);--un-ring-color:color-mix(in srgb, var(--colors-primary-500) 40%, transparent) }.z-nav{z-index:30}@supports (color:color-mix(in lab, red, red)){.badge-color-amber{color:color-mix(in oklab, var(--colors-amber-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-amber-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-amber-400) 20%, transparent) }.dark .badge-color-amber{color:color-mix(in oklab, var(--colors-amber-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-amber-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-amber-400) 10%, transparent) }.badge-color-blue{color:color-mix(in oklab, var(--colors-blue-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-blue-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-blue-400) 20%, transparent) }.dark .badge-color-blue{color:color-mix(in oklab, var(--colors-blue-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-blue-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-blue-400) 10%, transparent) }.badge-color-emerald{color:color-mix(in oklab, var(--colors-emerald-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-emerald-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-emerald-400) 20%, transparent) }.dark .badge-color-emerald{color:color-mix(in oklab, var(--colors-emerald-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-emerald-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-emerald-400) 10%, transparent) }.badge-color-green{color:color-mix(in oklab, var(--colors-green-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-green-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-green-400) 20%, transparent) }.dark .badge-color-green{color:color-mix(in oklab, var(--colors-green-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-green-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-green-400) 10%, transparent) }.badge-color-orange{color:color-mix(in oklab, var(--colors-orange-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-orange-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-orange-400) 20%, transparent) }.dark .badge-color-orange{color:color-mix(in oklab, var(--colors-orange-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-orange-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-orange-400) 10%, transparent) }.badge-color-red{color:color-mix(in oklab, var(--colors-red-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-red-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-red-400) 20%, transparent) }.dark .badge-color-red{color:color-mix(in oklab, var(--colors-red-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-red-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-red-400) 10%, transparent) }.badge-color-rose{color:color-mix(in oklab, var(--colors-rose-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-rose-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-rose-400) 20%, transparent) }.dark .badge-color-rose{color:color-mix(in oklab, var(--colors-rose-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-rose-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-rose-400) 10%, transparent) }.badge-color-sky{color:color-mix(in oklab, var(--colors-sky-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-sky-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-sky-400) 20%, transparent) }.dark .badge-color-sky{color:color-mix(in oklab, var(--colors-sky-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-sky-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-sky-400) 10%, transparent) }.badge-color-teal{color:color-mix(in oklab, var(--colors-teal-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-teal-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-teal-400) 20%, transparent) }.dark .badge-color-teal{color:color-mix(in oklab, var(--colors-teal-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-teal-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-teal-400) 10%, transparent) }.badge-color-violet{color:color-mix(in oklab, var(--colors-violet-700) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-violet-600) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-violet-400) 20%, transparent) }.dark .badge-color-violet{color:color-mix(in oklab, var(--colors-violet-300) var(--un-text-opacity), transparent) ;border-color:color-mix(in oklab, var(--colors-violet-300) 15%, transparent) ;background-color:color-mix(in oklab, var(--colors-violet-400) 10%, transparent) }.btn-primary{color:color-mix(in oklab, var(--colors-white) var(--un-text-opacity), transparent) ;background-color:color-mix(in oklab, var(--colors-primary-500) var(--un-bg-opacity), transparent) }.badge-active{color:color-mix(in oklab, var(--colors-primary-600) var(--un-text-opacity), transparent) }.dark .badge-active{color:color-mix(in oklab, var(--colors-primary-300) var(--un-text-opacity), transparent) }.badge-muted{color:color-mix(in oklab, var(--colors-neutral-600) var(--un-text-opacity), transparent) }.dark .badge-muted{color:color-mix(in oklab, var(--colors-neutral-400) var(--un-text-opacity), transparent) }.color-active{color:color-mix(in oklab, var(--colors-primary-600) var(--un-text-opacity), transparent) }.dark .color-active{color:color-mix(in oklab, var(--colors-primary-300) var(--un-text-opacity), transparent) }.color-base{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent) }.dark .color-base,.dark .data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent) }.data-\[state\=active\]\:color-base[data-state=active]{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent) }.color-muted{color:color-mix(in oklab, var(--colors-neutral-600) var(--un-text-opacity), transparent) }.dark .color-muted{color:color-mix(in oklab, var(--colors-neutral-400) var(--un-text-opacity), transparent) }.dark .hover\:color-base:hover{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent) }.hover\:color-base:hover{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent) }.dark .placeholder\:color-faint::placeholder,.placeholder\:color-faint::placeholder{color:color-mix(in oklab, var(--colors-neutral-500) var(--un-text-opacity), transparent) }.border-active{border-color:color-mix(in oklab, var(--colors-primary-600) 25%, transparent) }.border-active\!{border-color:color-mix(in oklab, var(--colors-primary-600) 25%, transparent) !important}.dark .border-active{border-color:color-mix(in oklab, var(--colors-primary-400) 25%, transparent) }.dark .border-active\!{border-color:color-mix(in oklab, var(--colors-primary-400) 25%, transparent) !important}.dark .focus-visible\:border-active:focus-visible{border-color:color-mix(in oklab, var(--colors-primary-400) 25%, transparent) }.focus-visible\:border-active:focus-visible{border-color:color-mix(in oklab, var(--colors-primary-600) 25%, transparent) }.bg-base,.data-\[state\=active\]\:bg-base[data-state=active]{background-color:color-mix(in oklab, var(--colors-white) var(--un-bg-opacity), transparent) }.btn-primary:hover{background-color:color-mix(in oklab, var(--colors-primary-600) var(--un-bg-opacity), transparent) }.btn-action:focus-visible,.btn-icon:focus-visible,.btn-icon-square:focus-visible,.btn-primary:focus-visible{--un-ring-color:color-mix(in oklab, var(--colors-primary-500) 40%, transparent) }}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}.text-5xl{font-size:var(--text-5xl-fontSize);line-height:var(--un-leading,var(--text-5xl-lineHeight))}.text-base{font-size:var(--text-base-fontSize);line-height:var(--un-leading,var(--text-base-lineHeight))}.text-sm{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight))}.text-xs{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight))}.text-error{color:color-mix(in srgb, var(--colors-error-DEFAULT) var(--un-text-opacity), transparent) }.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-semibold{--un-font-weight:var(--fontWeight-semibold);font-weight:var(--fontWeight-semibold)}.tab{tab-size:4}.m\[u\[c\]\]{margin:u[c]}.me{margin-inline-end:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.ms{margin-inline-start:calc(var(--spacing) * 4)}.mt-1{margin-top:calc(var(--spacing) * 1)}.p-1{padding:calc(var(--spacing) * 1)}.p\[key\]{padding:key}.px{padding-inline:calc(var(--spacing) * 4)}.px-2,.px2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-2\.5\!{padding-inline:calc(var(--spacing) * 2.5)!important}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4\!{padding-inline:calc(var(--spacing) * 4)!important}.py-1,.py1{padding-block:calc(var(--spacing) * 1)}.py-1\!{padding-block:calc(var(--spacing) * 1)!important}.py-2\!{padding-block:calc(var(--spacing) * 2)!important}.py1\.5{padding-block:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pt{padding-top:calc(var(--spacing) * 4)}.text-left{text-align:left}.outline{outline-style:var(--un-outline-style);outline-width:1px}.outline-none{--un-outline-style:none;outline-style:none}.b,.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-current{border-color:currentColor}.border-error\/30\!{border-color:color-mix(in srgb, var(--colors-error-DEFAULT) 30%, transparent) !important}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.rounded{border-radius:var(--radius-DEFAULT)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.bg-error{background-color:color-mix(in srgb, var(--colors-error-DEFAULT) var(--un-bg-opacity), transparent) }.bg-neutral-400{background-color:color-mix(in srgb, var(--colors-neutral-400) var(--un-bg-opacity), transparent) }.bg-success{background-color:color-mix(in srgb, var(--colors-success-DEFAULT) var(--un-bg-opacity), transparent) }.op0{opacity:0}.op100\!{opacity:1!important}.op75{opacity:.75}.group:hover .group-hover\:op60{opacity:.6}.hover\:op100:hover{opacity:1}.hover\:op100\!:hover{opacity:1!important}.disabled\:op30\!:disabled{opacity:.3!important}.underline,.hover\:underline:hover{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.flex{display:flex}.inline-flex{display:inline-flex}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-10{height:calc(var(--spacing) * 10)}.h-7\!{height:calc(var(--spacing) * 7)!important}.h-8{height:calc(var(--spacing) * 8)}.max-w-52{max-width:calc(var(--spacing) * 52)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-52{min-width:calc(var(--spacing) * 52)}.w-44{width:calc(var(--spacing) * 44)}.w-7\!{width:calc(var(--spacing) * 7)!important}.w-full{width:100%}.w-max{width:max-content}.inline{display:inline}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.contents{display:contents}.hidden{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.cursor-pointer{cursor:pointer}.disabled\:pointer-events-none:disabled{pointer-events:none}.resize{resize:both}.select-none{-webkit-user-select:none;user-select:none}.whitespace-nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.italic{font-style:italic}.ring{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(1px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.focus-visible\:ring-2:focus-visible{--un-ring-shadow:var(--un-ring-inset,) 0 0 0 calc(2px + var(--un-ring-offset-width)) var(--un-ring-color,currentColor);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.focus-visible\:ring-primary-500\/40:focus-visible{--un-ring-color:color-mix(in srgb, var(--colors-primary-500) 40%, transparent) }.data-\[state\=active\]\:shadow-sm[data-state=active],.shadow,.shadow_root_init\),.shadow-sm{--un-shadow:0 1px 3px 0 var(--un-shadow-color,#0000001a),0 1px 2px -1px var(--un-shadow-color,#0000001a);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.shadow-lg{--un-shadow:0 10px 15px -3px var(--un-shadow-color,#0000001a),0 4px 6px -4px var(--un-shadow-color,#0000001a);box-shadow:var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)}.transform{transform:var(--un-rotate-x) var(--un-rotate-y) var(--un-rotate-z) var(--un-skew-x) var(--un-skew-y)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,--un-gradient-from,--un-gradient-via,--un-gradient-to;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--un-ease,var(--default-transition-timingFunction));transition-duration:var(--un-duration,var(--default-transition-duration))}.items-center{align-items:center}.inset-0{inset:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.justify-center{justify-content:center}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.of-hidden{overflow:hidden}.of-x-auto{overflow-x:auto}.of-y-hidden{overflow-y:hidden}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.blur{--un-blur:blur(8px);filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,)}.filter{filter:var(--un-blur,) var(--un-brightness,) var(--un-contrast,) var(--un-grayscale,) var(--un-hue-rotate,) var(--un-invert,) var(--un-saturate,) var(--un-sepia,) var(--un-drop-shadow,)}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal,) var(--un-slashed-zero,) var(--un-numeric-figure,) var(--un-numeric-spacing,) var(--un-numeric-fraction,)}@supports (color:color-mix(in lab, red, red)){.text-error{color:color-mix(in oklab, var(--colors-error-DEFAULT) var(--un-text-opacity), transparent) }.border-error\/30\!{border-color:color-mix(in oklab, var(--colors-error-DEFAULT) 30%, transparent) !important}.bg-error{background-color:color-mix(in oklab, var(--colors-error-DEFAULT) var(--un-bg-opacity), transparent) }.bg-neutral-400{background-color:color-mix(in oklab, var(--colors-neutral-400) var(--un-bg-opacity), transparent) }.bg-success{background-color:color-mix(in oklab, var(--colors-success-DEFAULT) var(--un-bg-opacity), transparent) }.focus-visible\:ring-primary-500\/40:focus-visible{--un-ring-color:color-mix(in oklab, var(--colors-primary-500) 40%, transparent) }}@media (width>=40rem){.sm\:inline{display:inline}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent) ;background-color:color-mix(in srgb, var(--colors-white) var(--un-bg-opacity), transparent) }@supports (color:color-mix(in lab, red, red)){html{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent) ;background-color:color-mix(in oklab, var(--colors-white) var(--un-bg-opacity), transparent) }}.dark html{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent) ;background-color:color-mix(in oklab, #111 var(--un-bg-opacity), transparent) }@supports (color:color-mix(in lab, red, red)){.dark html{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent) }}*{scrollbar-width:thin;scrollbar-color:#88888859 transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#8888884d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#88888880}@keyframes af-spin{to{transform:rotate(360deg)}}@keyframes af-spin-reverse{to{transform:rotate(-360deg)}}.af-spin{animation:1s linear infinite af-spin}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:9999}html.dark::view-transition-old(root){z-index:9999}html.dark::view-transition-new(root){z-index:1}@media (prefers-reduced-motion:reduce){::view-transition-old(root){animation:none!important}::view-transition-new(root){animation:none!important}}[data-reka-popper-content-wrapper]{z-index:70}[data-af-animate][data-state=open]{animation:.15s both af-fade-in}[data-af-animate][data-state=closed]{animation:.15s both af-fade-out}[data-af-modal][data-state=open]{animation:.18s cubic-bezier(.16,1,.3,1) both af-modal-in}[data-af-modal][data-state=closed]{animation:.15s both af-modal-out}[data-af-drawer]{animation-duration:.22s;animation-timing-function:cubic-bezier(.32,.72,0,1);animation-fill-mode:both}[data-af-drawer][data-side=right]{animation-name:af-slide-right}[data-af-drawer][data-side=left]{animation-name:af-slide-left}[data-af-drawer][data-side=top]{animation-name:af-slide-top}[data-af-drawer][data-side=bottom]{animation-name:af-slide-bottom}[data-af-drawer][data-state=closed]{animation-direction:reverse}@keyframes af-fade-in{0%{opacity:0}}@keyframes af-fade-out{to{opacity:0}}@keyframes af-modal-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.96)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes af-modal-out{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.96)}}@keyframes af-slide-right{0%{transform:translate(100%)}}@keyframes af-slide-left{0%{transform:translate(-100%)}}@keyframes af-slide-top{0%{transform:translateY(-100%)}}@keyframes af-slide-bottom{0%{transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){[data-af-animate],[data-af-modal],[data-af-drawer]{animation:none!important}}.v-popper__popper .v-popper__inner{font-size:var(--text-xs-fontSize);line-height:var(--un-leading,var(--text-xs-lineHeight));color:color-mix(in srgb, var(--colors-neutral-800) var(--un-text-opacity), transparent) ;padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);border-width:1px;border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) ;border-radius:var(--radius-md);background-color:color-mix(in srgb, var(--colors-white) 75%, transparent) ;--un-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);backdrop-filter:var(--un-backdrop-blur,) var(--un-backdrop-brightness,) var(--un-backdrop-contrast,) var(--un-backdrop-grayscale,) var(--un-backdrop-hue-rotate,) var(--un-backdrop-invert,) var(--un-backdrop-opacity,) var(--un-backdrop-saturate,) var(--un-backdrop-sepia,);box-shadow:0 4px 16px #0000001f}@supports (color:color-mix(in lab, red, red)){.v-popper__popper .v-popper__inner{color:color-mix(in oklab, var(--colors-neutral-800) var(--un-text-opacity), transparent) ;background-color:color-mix(in oklab, var(--colors-white) 75%, transparent) }}.dark .v-popper__popper .v-popper__inner{color:color-mix(in srgb, var(--colors-neutral-200) var(--un-text-opacity), transparent) ;background-color:oklab(17.7638% -2.23517e-8 0/.75)}@supports (color:color-mix(in lab, red, red)){.dark .v-popper__popper .v-popper__inner{color:color-mix(in oklab, var(--colors-neutral-200) var(--un-text-opacity), transparent) }}@property --un-backdrop-blur{syntax:"*";inherits:false}@property --un-backdrop-brightness{syntax:"*";inherits:false}@property --un-backdrop-contrast{syntax:"*";inherits:false}@property --un-backdrop-grayscale{syntax:"*";inherits:false}@property --un-backdrop-hue-rotate{syntax:"*";inherits:false}@property --un-backdrop-invert{syntax:"*";inherits:false}@property --un-backdrop-opacity{syntax:"*";inherits:false}@property --un-backdrop-saturate{syntax:"*";inherits:false}@property --un-backdrop-sepia{syntax:"*";inherits:false}.v-popper__popper .v-popper__arrow-outer{border-color:color-mix(in oklab, #8882 var(--un-border-opacity), transparent) }.v-popper__popper .v-popper__arrow-inner{border-color:color-mix(in srgb, var(--colors-white) 75%, transparent) ;visibility:visible}@supports (color:color-mix(in lab, red, red)){.v-popper__popper .v-popper__arrow-inner{border-color:color-mix(in oklab, var(--colors-white) 75%, transparent) }}.dark .v-popper__popper .v-popper__arrow-inner{border-color:oklab(17.7638% -2.23517e-8 0/.75)}.v-popper--theme-dropdown .v-popper__inner{padding:calc(var(--spacing) * 1)}.splitpanes{width:100%;height:100%;display:flex}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical>.splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal>.splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging>.splitpanes__pane{pointer-events:none;transition:none}.splitpanes__splitter{touch-action:none;background-color:color-mix(in oklab, #8882 var(--un-bg-opacity), transparent) ;transition:background-color .2s;position:relative}.splitpanes__splitter:hover{background-color:color-mix(in oklab, #8886 var(--un-bg-opacity), transparent) }.splitpanes--vertical>.splitpanes__splitter{cursor:col-resize;min-width:1px}.splitpanes--horizontal>.splitpanes__splitter{cursor:row-resize;min-height:1px}.splitpanes__splitter:before{content:"";z-index:1;position:absolute;inset:-4px}html,body,#app{height:100vh;margin:0;padding:0}:root{--term-scrollbar:#8884;--term-scrollbar-hover:#8887}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-thumb{background:var(--term-scrollbar);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--term-scrollbar-hover)}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}.xterm{height:100%;padding:0 .25rem}.xterm .xterm-viewport{background:0 0!important}
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Terminals</title>
7
+ <style>
8
+ html, body, #app { height: 100%; margin: 0; }
9
+ #app { position: relative; }
10
+ body { background: #0d1117; }
11
+ @media (prefers-color-scheme: light) { body { background: #f6f8fa; } }
12
+ </style>
13
+ <script type="module" crossorigin src="./assets/index-Dmm_EwpX.js"></script>
14
+ <link rel="stylesheet" crossorigin href="./assets/index-IBTOt_--.css">
15
+ </head>
16
+ <body>
17
+ <div id="app"></div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,56 @@
1
+ import { PLUGIN_ID } from "./constants.mjs";
2
+ import { fileURLToPath } from "node:url";
3
+ import { defineDevframe } from "devframe/types";
4
+ //#region package.json
5
+ var name = "@devframes/plugin-terminals";
6
+ var version = "0.0.1";
7
+ var description = "Portable, hub-native terminal panel for devframe — readonly output streaming and fully interactive PTY shells (TUI-capable).";
8
+ var homepage = "https://github.com/devframes/devframe#readme";
9
+ //#endregion
10
+ //#region src/index.ts
11
+ /**
12
+ * Build a {@link DevframeDefinition} for the terminals panel. The same
13
+ * definition runs standalone (`createCli`), mounts into a Vite host
14
+ * (`/vite`), or docks inside a hub — its `setup` only relies on the core
15
+ * devframe RPC surface.
16
+ *
17
+ * @experimental This plugin is experimental and may change without a major
18
+ * version bump until it stabilizes.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { createTerminalsDevframe } from '@devframes/plugin-terminals'
23
+ *
24
+ * export default createTerminalsDevframe({
25
+ * presets: [{ id: 'dev', title: 'pnpm dev', command: 'pnpm', args: ['dev'] }],
26
+ * })
27
+ * ```
28
+ */
29
+ function createTerminalsDevframe(options = {}) {
30
+ const distDir = options.distDir ?? fileURLToPath(new URL("../dist/spa", import.meta.url));
31
+ return defineDevframe({
32
+ id: PLUGIN_ID,
33
+ name: "Terminals",
34
+ version,
35
+ packageName: name,
36
+ homepage,
37
+ description,
38
+ icon: "ph:terminal-window-duotone",
39
+ basePath: options.basePath,
40
+ cli: {
41
+ command: options.command ?? "devframe-terminals",
42
+ port: options.port ?? 9011,
43
+ distDir,
44
+ auth: false
45
+ },
46
+ spa: { loader: "none" },
47
+ async setup(ctx) {
48
+ const { setupTerminals } = await import("./node/index.mjs");
49
+ await setupTerminals(ctx, options);
50
+ }
51
+ });
52
+ }
53
+ /** Default-configured terminals devframe (interactive shell, no presets). */
54
+ const terminals = createTerminalsDevframe();
55
+ //#endregion
56
+ export { terminals as n, createTerminalsDevframe as t };
@@ -0,0 +1,129 @@
1
+ //#region src/types.d.ts
2
+ /**
3
+ * How a session is driven.
4
+ *
5
+ * - `interactive` — a PTY-backed session that accepts keystrokes, resize,
6
+ * and renders full-screen TUIs (vim, htop, Claude Code, …). Falls back to
7
+ * a piped child process when no PTY backend is available.
8
+ * - `readonly` — a piped child process whose combined output is streamed to
9
+ * viewers; stdin is rejected. Ideal for long-running logs / dev servers.
10
+ */
11
+ type TerminalMode = 'interactive' | 'readonly';
12
+ /** Lifecycle status of a session. */
13
+ type TerminalStatus = 'running' | 'exited' | 'error';
14
+ /** Which OS-level mechanism backs a session. */
15
+ type TerminalBackend = 'pty' | 'pipe';
16
+ /**
17
+ * Serializable descriptor for a single terminal session. Lives in the
18
+ * `devframes-plugin-terminals:sessions` shared state and is returned by the
19
+ * `list` RPC.
20
+ */
21
+ interface TerminalSessionInfo {
22
+ id: string;
23
+ /** Base label derived from the spawn request (command / preset / "Shell"). */
24
+ title: string;
25
+ /**
26
+ * Live foreground process name of the controlling TTY (e.g. `vim`,
27
+ * `node`), tracked for PTY-backed sessions. Undefined for piped sessions
28
+ * and once the process has exited.
29
+ */
30
+ processName?: string;
31
+ /** User-assigned name; takes precedence over every derived title in the UI. */
32
+ customTitle?: string;
33
+ /**
34
+ * Window title the running program reported via OSC 0/2 escape sequences
35
+ * (what a real terminal would show in its tab), e.g. `user@host: ~/dir`.
36
+ */
37
+ termTitle?: string;
38
+ /**
39
+ * Working directory the running program reported via OSC 7 / OSC 9;9 /
40
+ * OSC 1337 escape sequences (shell integration). Tracks `cd` live, unlike
41
+ * the static spawn-time `cwd`.
42
+ */
43
+ termCwd?: string;
44
+ mode: TerminalMode;
45
+ status: TerminalStatus;
46
+ backend: TerminalBackend;
47
+ command: string;
48
+ args: string[];
49
+ cwd: string;
50
+ cols: number;
51
+ rows: number;
52
+ pid?: number;
53
+ exitCode?: number;
54
+ icon?: string;
55
+ channel?: string;
56
+ /** Preset this session was spawned from, if any. */
57
+ presetId?: string;
58
+ createdAt: number;
59
+ }
60
+ interface TerminalsSharedState {
61
+ sessions: TerminalSessionInfo[];
62
+ }
63
+ /**
64
+ * A pre-configured command the UI offers and that clients may spawn by id
65
+ * without `allowArbitraryCommands`.
66
+ */
67
+ interface TerminalPreset {
68
+ id: string;
69
+ title: string;
70
+ command: string;
71
+ args?: string[];
72
+ cwd?: string;
73
+ /** @default 'readonly' for presets, 'interactive' for the shell */
74
+ mode?: TerminalMode;
75
+ env?: Record<string, string>;
76
+ icon?: string;
77
+ }
78
+ /** Wire payload for the `spawn` RPC. */
79
+ interface SpawnRequest {
80
+ /** Spawn a configured preset by id. */
81
+ presetId?: string;
82
+ /**
83
+ * Explicit command. Requires `allowArbitraryCommands` unless it resolves
84
+ * to the configured shell. Omit to spawn the default shell.
85
+ */
86
+ command?: string;
87
+ args?: string[];
88
+ cwd?: string;
89
+ mode?: TerminalMode;
90
+ title?: string;
91
+ cols?: number;
92
+ rows?: number;
93
+ env?: Record<string, string>;
94
+ }
95
+ /** Options accepted by {@link createTerminalsDevframe}. */
96
+ interface TerminalsOptions {
97
+ /** Shell used for interactive sessions. Defaults to `$SHELL` / platform default. */
98
+ shell?: string;
99
+ /** Extra args passed to the shell. Defaults to an interactive-login flag set. */
100
+ shellArgs?: string[];
101
+ /** Default working directory for new sessions. Defaults to `ctx.cwd`. */
102
+ cwd?: string;
103
+ /** Environment variables merged into every spawned session. */
104
+ env?: Record<string, string>;
105
+ /** Spawnable command presets surfaced in the UI. */
106
+ presets?: TerminalPreset[];
107
+ /**
108
+ * Allow clients to spawn arbitrary command strings beyond presets and the
109
+ * configured shell. Default `false` (deny) for safety.
110
+ */
111
+ allowArbitraryCommands?: boolean;
112
+ /**
113
+ * Default mode for the shell session created on demand.
114
+ * @default 'interactive'
115
+ */
116
+ defaultMode?: TerminalMode;
117
+ /** Output chunks retained per session for replay on reconnect. */
118
+ scrollback?: number;
119
+ /** Mount path override. */
120
+ basePath?: string;
121
+ /** SPA dist dir override. Defaults to the bundled SPA. */
122
+ distDir?: string;
123
+ /** CLI binary name. */
124
+ command?: string;
125
+ /** Preferred dev-server port. */
126
+ port?: number;
127
+ }
128
+ //#endregion
129
+ export { SpawnRequest, TerminalBackend, TerminalMode, TerminalPreset, TerminalSessionInfo, TerminalStatus, TerminalsOptions, TerminalsSharedState };
package/dist/types.mjs ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import { TerminalsOptions } from "./types.mjs";
2
+ import { DevframeVitePlugin, ViteDevBridgeOptions } from "devframe/helpers/vite";
3
+
4
+ //#region src/vite.d.ts
5
+ interface TerminalsViteOptions extends TerminalsOptions {
6
+ /** Forwarded to the underlying `viteDevBridge` (mount base, etc.). */
7
+ vite?: ViteDevBridgeOptions;
8
+ }
9
+ /**
10
+ * Mount the terminals panel into an existing Vite dev server. Returns two
11
+ * plugins: a bridge that starts the devframe RPC + WebSocket server (so the
12
+ * panel can stream terminal output), and a static mount that serves the
13
+ * bundled SPA at the mount base. The bridge is listed first so its
14
+ * `__connection.json` route is matched ahead of the SPA fallback.
15
+ */
16
+ declare function terminalsVite(options?: TerminalsViteOptions): DevframeVitePlugin[];
17
+ //#endregion
18
+ export { TerminalsViteOptions, terminalsVite };
package/dist/vite.mjs ADDED
@@ -0,0 +1,20 @@
1
+ import { t as createTerminalsDevframe } from "./src-Cu5HYNrI.mjs";
2
+ import { viteDevBridge } from "devframe/helpers/vite";
3
+ //#region src/vite.ts
4
+ /**
5
+ * Mount the terminals panel into an existing Vite dev server. Returns two
6
+ * plugins: a bridge that starts the devframe RPC + WebSocket server (so the
7
+ * panel can stream terminal output), and a static mount that serves the
8
+ * bundled SPA at the mount base. The bridge is listed first so its
9
+ * `__connection.json` route is matched ahead of the SPA fallback.
10
+ */
11
+ function terminalsVite(options = {}) {
12
+ const { vite, ...terminalsOptions } = options;
13
+ const definition = createTerminalsDevframe(terminalsOptions);
14
+ return [viteDevBridge(definition, {
15
+ ...vite,
16
+ devMiddleware: true
17
+ }), viteDevBridge(definition, vite)];
18
+ }
19
+ //#endregion
20
+ export { terminalsVite };
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@devframes/plugin-terminals",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "description": "Portable, hub-native terminal panel for devframe — readonly output streaming and fully interactive PTY shells (TUI-capable).",
6
+ "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/devframes/devframe#readme",
9
+ "repository": {
10
+ "directory": "plugins/terminals",
11
+ "type": "git",
12
+ "url": "git+https://github.com/devframes/devframe.git"
13
+ },
14
+ "bugs": "https://github.com/devframes/devframe/issues",
15
+ "keywords": [
16
+ "devframe",
17
+ "devtools",
18
+ "terminal",
19
+ "pty",
20
+ "xterm"
21
+ ],
22
+ "sideEffects": false,
23
+ "exports": {
24
+ ".": "./dist/index.mjs",
25
+ "./cli": "./dist/cli.mjs",
26
+ "./client": "./dist/client/index.mjs",
27
+ "./constants": "./dist/constants.mjs",
28
+ "./node": "./dist/node/index.mjs",
29
+ "./rpc": "./dist/rpc/index.mjs",
30
+ "./types": "./dist/types.mjs",
31
+ "./vite": "./dist/vite.mjs",
32
+ "./package.json": "./package.json"
33
+ },
34
+ "types": "./dist/index.d.mts",
35
+ "bin": {
36
+ "devframe-terminals": "./bin.mjs"
37
+ },
38
+ "files": [
39
+ "bin.mjs",
40
+ "dist"
41
+ ],
42
+ "peerDependencies": {
43
+ "vite": "^8.0.0",
44
+ "devframe": "0.5.4"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "vite": {
48
+ "optional": true
49
+ }
50
+ },
51
+ "dependencies": {
52
+ "@xterm/addon-fit": "^0.11.0",
53
+ "@xterm/xterm": "^6.0.0",
54
+ "nostics": "^1.1.4",
55
+ "pathe": "^2.0.3",
56
+ "valibot": "^1.4.1",
57
+ "zigpty": "^0.2.1"
58
+ },
59
+ "devDependencies": {
60
+ "@antfu/design": "^0.2.1",
61
+ "@iconify-json/ph": "^1.2.0",
62
+ "@storybook/svelte-vite": "^10.4.6",
63
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
64
+ "@types/node": "^25.9.1",
65
+ "colorjs.io": "^0.6.0",
66
+ "get-port-please": "^3.2.0",
67
+ "h3": "2.0.1-rc.22",
68
+ "storybook": "^10.4.6",
69
+ "svelte": "^5.0.0",
70
+ "tsdown": "^0.22.0",
71
+ "typescript": "^6.0.3",
72
+ "unocss": "^66.0.0",
73
+ "vite": "^8.0.14",
74
+ "vite-plugin-css-injected-by-js": "^3.5.0",
75
+ "vitest": "^4.1.7",
76
+ "ws": "^8.21.0",
77
+ "devframe": "0.5.4"
78
+ },
79
+ "scripts": {
80
+ "build": "tsdown && vite build --config src/client/vite.config.ts && vite build --config src/spa/vite.config.ts",
81
+ "watch": "tsdown --watch",
82
+ "dev": "node bin.mjs",
83
+ "storybook": "storybook dev -p 6014 --host 0.0.0.0",
84
+ "build-storybook": "storybook build",
85
+ "test": "vitest run",
86
+ "typecheck": "tsc --noEmit"
87
+ }
88
+ }