@telemetryos/development-application-host-ui 1.11.0 → 1.13.0

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
+ *{box-sizing:border-box}:root{--font-sans: "Rubik", sans-serif;--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--muted: 220 12% 95%;--muted-foreground: 215.4 16.3% 46.9%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--accent: 220 12% 95%;--accent-foreground: 222.2 47.4% 11.2%;--primary: 39 93% 59%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--destructive: 6 86% 61%;--destructive-foreground: 210 40% 98%;--ring: 222.2 84% 4.9%;--radius: .5rem}.dark{--background: 210 28% 8%;--foreground: 210 40% 88%;--muted: 212, 28%, 10%;--muted-foreground: 215 20.2% 65.1%;--border: 212 24% 19%;--input: 210 5% 31%;--card: 212 28% 10%;--card-foreground: 210 40% 98%;--accent: 211 30% 15%;--accent-foreground: 210 40% 98%;--primary: 39 93% 59%;--primary-foreground: 210 40% 98%;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--destructive: 6 86% 61%;--destructive-foreground: 210 40% 98%;--ring: 212.7 26.8% 83.9%;--radius: .5rem}html{height:100%;font-family:Rubik,sans-serif;font-size:14px}body{display:flex;flex-direction:column;height:100%;margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}#app{max-height:100lvh;display:flex;flex:1}.canvas{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.canvas__area{margin:8px;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:visible}.canvas__application-container{position:relative;display:flex;flex-direction:column;border:1px solid hsl(212 24% 19%);border-radius:8px;background:#121921}.canvas__header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid hsl(var(--border));flex-shrink:0}.canvas__header-title{color:hsl(var(--foreground));font-size:16px;font-weight:600}.canvas__application-container iframe{flex:1;border:none;overflow:hidden;border-radius:8px}.canvas__application-container-drag-handle{position:absolute;bottom:2px;right:2px;display:flex;align-items:center;justify-content:center;width:12px;height:12px;opacity:.3;cursor:nwse-resize}.canvas__application-container-drag-handle svg{width:12px;height:12px}.canvas__aspect-ratio{position:absolute;bottom:-20px;right:0;font-size:12px;color:#737f8c}.canvas__aspect-ratio-buttons{display:flex;gap:4px;padding:4px;margin-bottom:16px;align-self:center;background:hsla(var(--background) / .9);border:1px solid hsl(var(--border));border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.canvas__aspect-ratio-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:4px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:calc(var(--radius) - 2px);color:hsl(var(--foreground));cursor:pointer;transition:all .15s ease}.canvas__aspect-ratio-button:hover{background:hsl(var(--accent));border-color:hsl(var(--primary));transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.canvas__aspect-ratio-button--active{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.canvas__aspect-ratio-button--active:hover{background:hsl(var(--primary));transform:translateY(-1px)}.canvas__aspect-ratio-button svg{display:block;width:24px;height:24px}.application-info{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.application-info__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.application-info__section{margin-bottom:24px}.application-info__section:last-child{margin-bottom:0}.application-info__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.application-info__field{margin-bottom:24px}.application-info__field:last-child{margin-bottom:0}.application-info__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.application-info__value{color:hsl(var(--foreground));font-size:14px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);word-break:break-all}.application-info__thumbnail-container{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.application-info__logo,.application-info__thumbnail{max-width:75px;max-height:75px;width:auto;height:auto;object-fit:contain;border-radius:4px}.device-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.device-config__section{margin-bottom:24px}.device-config__section:last-child{margin-bottom:0}.device-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.device-config__field{margin-bottom:24px}.device-config__field:last-child{margin-bottom:0}.device-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.device-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.device-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:40px;padding:8px 36px 8px 12px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit;cursor:pointer}.device-config__select:hover{background-color:hsl(var(--accent))}.device-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.device-config__input:focus,.device-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.account-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.account-config__loading,.account-config__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.account-config__section{margin-bottom:24px}.account-config__section:last-child{margin-bottom:0}.account-config__section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.account-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.account-config__section-header .account-config__section-title{margin:0}.account-config__field{margin-bottom:24px}.account-config__field:last-child{margin-bottom:0}.account-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.account-config__value{color:hsl(var(--foreground));font-size:14px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);word-break:break-all}.account-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.account-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:40px;padding:8px 36px 8px 12px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit;cursor:pointer}.account-config__select:hover{background-color:hsl(var(--accent))}.account-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.account-config__input:focus,.account-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.account-config__button{height:36px;padding:6px 12px;background:hsl(var(--primary));border:none;border-radius:var(--radius);color:#000;font-size:14px;font-weight:500;cursor:pointer}.account-config__button:hover{background:#f7a918}.account-config__button:active{background:#ec9d09}.account-config__button--small{height:32px;padding:4px 8px;font-size:12px}.account-config__button--danger{background:hsl(var(--destructive));border:none;color:hsl(var(--primary-foreground))}.account-config__button--danger:hover{background:#ef3d2a}.account-config__button--danger:active{background:#ed2812}.account-config__item{padding:12px;margin-bottom:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.account-config__item:last-child{margin-bottom:0}.account-config__item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid hsl(var(--border))}.account-config__item-title{color:hsl(var(--foreground));font-size:12px;font-weight:600}.media-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.media-config__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.media-config__section{margin-bottom:24px}.media-config__section:last-child{margin-bottom:0}.media-config__section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.media-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.media-config__section-header .media-config__section-title{margin:0}.media-config__field{margin-bottom:24px}.media-config__field:last-child{margin-bottom:0}.media-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.media-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.media-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.media-config__input:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.media-config__button{height:36px;padding:6px 12px;background:hsl(var(--primary));border:none;border-radius:var(--radius);color:#000;font-size:14px;font-weight:500;cursor:pointer}.media-config__button:hover{background:#f7a918}.media-config__button:active{background:#ec9d09}.media-config__button--small{height:32px;padding:4px 8px;font-size:12px}.media-config__button--danger{background:hsl(var(--destructive));border:none;color:hsl(var(--primary-foreground))}.media-config__button--danger:hover{background:#ef3d2a}.media-config__button--danger:active{background:#ed2812}.media-config__item{padding:12px;margin-bottom:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.media-config__item:last-child{margin-bottom:0}.media-config__item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid hsl(var(--border))}.media-config__item-title{color:hsl(var(--foreground));font-size:12px;font-weight:600}.weather-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.weather-config__top-controls{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid hsl(var(--border))}.weather-config__reset-button{padding:8px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;font-weight:500;cursor:pointer}.weather-config__reset-button:hover{background:hsl(var(--accent));border-color:hsl(var(--primary))}.weather-config__unit-toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:hsl(var(--muted-foreground))}.weather-config__unit-active{color:hsl(var(--foreground));font-weight:500}.weather-config__toggle-switch{position:relative;display:inline-block;width:40px;height:22px}.weather-config__toggle-switch input{opacity:0;width:0;height:0}.weather-config__toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:hsl(var(--border));border-radius:22px}.weather-config__toggle-slider:before{position:absolute;content:"";height:16px;width:16px;left:3px;bottom:3px;background-color:hsl(var(--foreground));border-radius:50%}.weather-config__toggle-switch input:checked+.weather-config__toggle-slider{background-color:hsl(var(--primary))}.weather-config__toggle-switch input:checked+.weather-config__toggle-slider:before{transform:translate(18px)}.weather-config__section{margin-bottom:8px;border:1px solid hsl(var(--border));border-radius:var(--radius);overflow:hidden;flex-shrink:0}.weather-config__section:last-child{margin-bottom:0}.weather-config__section-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 16px;background:hsl(var(--background));border:none;color:hsl(var(--foreground));font-size:14px;font-weight:600;font-family:inherit;cursor:pointer}.weather-config__section-header:hover{background:hsl(var(--accent))}.weather-config__section-title{margin:0}.weather-config__section-toggle{font-size:16px;font-weight:400;color:hsl(var(--muted-foreground))}.weather-config__section-content{padding:16px;background:hsl(var(--card));border-top:1px solid hsl(var(--border))}.weather-config__json-textarea{width:100%;height:50svh;padding:12px;background:hsl(var(--background));border:2px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:12px;line-height:1.5;resize:vertical}.weather-config__json-textarea:focus{outline:none;border-color:hsl(var(--primary))}.weather-config__json-textarea--invalid{border-color:#ef4343}.weather-config__json-textarea--invalid:focus{border-color:#ef4343}.weather-config__helpers{margin-top:16px;padding-top:16px;border-top:1px solid hsl(var(--border))}.weather-config__helper-row{margin-bottom:16px}.weather-config__helper-row:last-child{margin-bottom:0}.weather-config__helper-label{display:block;color:hsl(var(--foreground));font-size:12px;font-weight:500;margin-bottom:8px}.weather-config__helper-hint{margin:8px 0 0;font-size:11px;color:hsl(var(--muted-foreground))}.weather-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:36px;padding:6px 32px 6px 10px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;cursor:pointer}.weather-config__select:hover{background-color:hsl(var(--accent))}.weather-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.weather-config__city-select{width:auto;min-width:180px;max-width:220px}.weather-config__pod-buttons{display:flex;gap:8px}.weather-config__pod-button{flex:1;padding:8px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;cursor:pointer}.weather-config__pod-button:hover{background:hsl(var(--accent))}.weather-config__pod-button--active{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.weather-config__pod-button--active:hover{background:hsl(var(--primary))}.weather-config__slider{width:100%;height:6px;background:hsl(var(--border));border-radius:3px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.weather-config__slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:hsl(var(--primary));border-radius:50%;cursor:pointer}.weather-config__slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.weather-config__slider::-moz-range-thumb{width:16px;height:16px;background:hsl(var(--primary));border:none;border-radius:50%;cursor:pointer}.weather-config__current-values{display:flex;gap:16px;padding:12px;background:hsl(var(--background));border-radius:var(--radius);font-size:13px;color:hsl(var(--muted-foreground))}.weather-config__current-values strong{color:hsl(var(--foreground))}.weather-config__action-buttons{display:flex;gap:8px}.weather-config__action-button{flex:1;padding:10px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;font-weight:500;cursor:pointer}.weather-config__action-button:hover{background:hsl(var(--accent));border-color:hsl(var(--primary))}.weather-config__action-button:first-child{color:#f97415}.weather-config__action-button:last-child{color:#39f}.weather-config__alerts-list{display:flex;flex-direction:column;gap:12px}.weather-config__alert-item{padding:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.weather-config__alert-header{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.weather-config__alert-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.weather-config__alert-title{flex:1;font-size:13px;font-weight:600;color:hsl(var(--foreground))}.weather-config__alert-remove{flex-shrink:0;width:24px;height:24px;padding:0;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));font-size:18px;font-weight:400;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.weather-config__alert-remove:hover{background:hsl(var(--destructive));border-color:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}.weather-config__alert-severity{width:auto;min-width:120px}.weather-config__alert-times{display:flex;flex-direction:column;gap:4px}.weather-config__alert-time-row{display:flex;justify-content:space-between;font-size:11px}.weather-config__alert-time-label{color:hsl(var(--muted-foreground));font-weight:500}.weather-config__alert-time-value{color:hsl(var(--foreground));font-family:SF Mono,Monaco,Inconsolata,monospace}.color-scheme-toggle{position:relative}.color-scheme-toggle__button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer}.color-scheme-toggle__button:hover{border-color:hsl(var(--foreground));color:hsl(var(--foreground))}.color-scheme-toggle__icon{position:absolute;opacity:0;transform:rotate(90deg) scale(0)}.color-scheme-toggle__icon--visible{opacity:1;transform:rotate(0) scale(1)}.color-scheme-toggle__dropdown{position:absolute;bottom:100%;left:0;margin-bottom:4px;min-width:100px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px #00000026;overflow:hidden;z-index:100}.color-scheme-toggle__dropdown-item{display:block;width:100%;padding:8px 12px;background:transparent;border:none;color:hsl(var(--foreground));font-size:14px;font-family:inherit;text-align:left;cursor:pointer}.color-scheme-toggle__dropdown-item:hover{background:hsl(var(--accent))}.color-scheme-toggle__dropdown-item--active{color:hsl(var(--primary))}.left-sidebar{display:flex;flex-direction:row}.left-sidebar__nav{display:flex;flex-direction:column;width:64px;padding:16px 8px;gap:4px;background:hsl(var(--background));border-right:1px solid hsl(var(--border));align-items:center}.left-sidebar__nav-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:transparent;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer}.left-sidebar__nav-button:hover{border-color:hsl(var(--foreground));color:hsl(var(--foreground))}.left-sidebar__nav-button--active{border-color:hsl(var(--primary));color:hsl(var(--primary))}.left-sidebar__nav-button--publish{background:#16a249;border-color:#16a249;color:#fff}.left-sidebar__nav-button--publish:hover{background:#12873d;border-color:#12873d}.left-sidebar__nav-button--publish:disabled,.left-sidebar__nav-button--publishing{background:hsl(var(--muted));border-color:hsl(var(--border));color:hsl(var(--muted-foreground));cursor:not-allowed;opacity:.6}.left-sidebar__nav-separator{width:100%;height:1px;background:hsl(var(--border));margin:8px 0}.left-sidebar__nav-spacer{flex-grow:1}.left-sidebar__container{display:flex;flex-direction:column;flex:1;max-height:100lvh;max-width:700px;width:35vw;min-width:300px;overflow:hidden;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.left-sidebar__header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid hsl(var(--border));flex-shrink:0}.left-sidebar__header-title{color:hsl(var(--foreground));font-size:16px;font-weight:600}.left-sidebar__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.portal-viewer{flex:1;display:flex;flex-direction:column;min-width:0}.portal-viewer__loading,.portal-viewer__empty{display:flex;align-items:center;justify-content:center;flex:1;color:hsl(var(--muted-foreground));font-size:14px}.portal-viewer__address-bar{display:flex;align-items:center;gap:4px;height:48px;padding:0 8px;border-bottom:1px solid hsl(var(--border));flex-shrink:0}.portal-viewer__nav-button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:1px solid transparent;border-radius:calc(var(--radius) - 2px);color:hsl(var(--muted-foreground));cursor:pointer;transition:all .15s ease}.portal-viewer__nav-button:hover{background:hsl(var(--accent));border-color:hsl(var(--border));color:hsl(var(--foreground))}.portal-viewer__address-input{flex:1;height:28px;padding:0 8px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:calc(var(--radius) - 2px);color:hsl(var(--foreground));font-family:monospace;font-size:12px;outline:none;min-width:0}.portal-viewer__address-input:focus{border-color:hsl(var(--primary))}.application-settings{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.application-settings__loading,.application-settings__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.settings-sidebar{display:flex;flex-direction:column;width:320px;flex-shrink:0;max-height:100lvh;overflow:hidden;background:hsl(var(--card));border-left:1px solid hsl(var(--border));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.settings-sidebar__header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid hsl(var(--border));flex-shrink:0}.settings-sidebar__header-title{color:hsl(var(--foreground));font-size:16px;font-weight:600}.settings-sidebar__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.tabs-area{flex:1;display:flex;flex-direction:column;min-width:0}.tab-switcher{display:flex;align-items:stretch;gap:4px;height:48px;padding:0 16px;background:hsl(var(--card));border-bottom:1px solid hsl(var(--border));flex-shrink:0}.tab-switcher__button{display:flex;align-items:center;padding:0 16px;font-family:var(--font-sans);font-size:13px;font-weight:500;background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;color:hsl(var(--muted-foreground));cursor:pointer;transition:all .15s ease;margin-bottom:-1px}.tab-switcher__button:hover{background:hsl(var(--accent));color:hsl(var(--accent-foreground))}.tab-switcher__button--active{border-bottom-color:hsl(var(--primary));color:hsl(var(--foreground))}.tab-switcher__button--active:hover{color:hsl(var(--foreground))}.tab-panel{flex:1;display:flex;min-width:0}.tab-panel--hidden{display:none}
@@ -0,0 +1,2 @@
1
+ import './LeftSidebar.css';
2
+ export declare function LeftSidebar(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import './PublishModal.css';
2
+ type PublishModalProps = {
3
+ state: 'idle' | 'publishing' | 'success' | 'error';
4
+ logs: string[];
5
+ error: string | null;
6
+ onClose: () => void;
7
+ };
8
+ export declare function PublishModal({ state, logs, error, onClose }: PublishModalProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,2 @@
1
+ import './SettingsSidebar.css';
2
+ export declare function SettingsSidebar(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from 'react';
2
+ import './TabsArea.css';
3
+ export declare function TabsArea({ children }: {
4
+ children: ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function TabSwitcher(): import("react/jsx-runtime").JSX.Element | null;
7
+ export declare function Tab({ id, children }: {
8
+ id: string;
9
+ children: ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import './WebPortalViewer.css';
2
+ export declare function WebPortalViewer(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function useNavigationPathname(): string;
package/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>TelemetryOS Development Environment</title>
7
- <script type="module" crossorigin src="/assets/index-CRUceYZO.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BJOW8iUK.css">
7
+ <script type="module" crossorigin src="/assets/index-BRijtNt-.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-K9V4Yac1.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
@@ -30,14 +30,10 @@ export declare class ApiCoordinator {
30
30
  _handlePlaylistNextPage(message: ClientMessage): void;
31
31
  _handlePlaylistPreviousPage(message: ClientMessage): void;
32
32
  _handlePlaylistSetDuration(message: ClientMessage): void;
33
+ _handlePlaylistGetDuration(message: ClientMessage): void;
33
34
  _handleOverridesSetOverride(message: ClientMessage): void;
34
35
  _handleOverridesClearOverride(message: ClientMessage): void;
35
- _handleWebsiteAppInjectScriptToIframe(message: ClientMessage): void;
36
- _handleReportPlayback(message: ClientMessage): void;
37
- _handleReportCampaignView(message: ClientMessage): void;
38
- _handleReportAdPlayed(message: ClientMessage): void;
39
- _handleReportDeviceLog(message: ClientMessage): void;
40
- _handleCampaignsGetNextAd(message: ClientMessage): void;
36
+ private _handleNavigationLocationChanged;
41
37
  _handleStoreSet(message: ClientMessage): void;
42
38
  _handleStoreGet(message: ClientMessage): void;
43
39
  _handleStoreSubscribe(message: ClientMessage): void;
@@ -1,6 +1,8 @@
1
1
  export type TelemetryConfig = {
2
2
  name?: string;
3
3
  version?: string;
4
+ description?: string;
5
+ logoPath?: string;
4
6
  thumbnailPath?: string;
5
7
  mountPoints?: Record<string, string | {
6
8
  path: string;
@@ -14,6 +16,7 @@ export type TelemetryConfig = {
14
16
  containers?: Record<string, string | {
15
17
  image: string;
16
18
  }>;
19
+ useSpaRouting?: boolean;
17
20
  devServer?: {
18
21
  url: string;
19
22
  runCommand?: string;
@@ -0,0 +1,3 @@
1
+ export declare function setPathname(pathname: string): void;
2
+ export declare function getPathname(): string;
3
+ export declare function subscribe(listener: () => void): () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telemetryos/development-application-host-ui",
3
- "version": "1.11.0",
3
+ "version": "1.13.0",
4
4
  "description": "The official TelemetryOS application CLI package. Use it to build applications that run on the TelemetryOS platform",
5
5
  "type": "module",
6
6
  "files": [
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@hugeicons/core-free-icons": "^1.0.5",
40
40
  "@hugeicons/react": "^1.0.5",
41
- "@telemetryos/root-sdk": "^1.11.0",
41
+ "@telemetryos/root-sdk": "^1.13.0",
42
42
  "react": "^19.1.1",
43
43
  "react-dom": "^19.1.1",
44
44
  "zod": "^3.24.0"
@@ -1 +0,0 @@
1
- *{box-sizing:border-box}:root{--font-sans: "Rubik", sans-serif;--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--muted: 220 12% 95%;--muted-foreground: 215.4 16.3% 46.9%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--accent: 220 12% 95%;--accent-foreground: 222.2 47.4% 11.2%;--primary: 39 93% 59%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--destructive: 6 86% 61%;--destructive-foreground: 210 40% 98%;--ring: 222.2 84% 4.9%;--radius: .5rem}.dark{--background: 210 28% 8%;--foreground: 210 40% 88%;--muted: 212, 28%, 10%;--muted-foreground: 215 20.2% 65.1%;--border: 212 24% 19%;--input: 210 5% 31%;--card: 212 28% 10%;--card-foreground: 210 40% 98%;--accent: 211 30% 15%;--accent-foreground: 210 40% 98%;--primary: 39 93% 59%;--primary-foreground: 210 40% 98%;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--destructive: 6 86% 61%;--destructive-foreground: 210 40% 98%;--ring: 212.7 26.8% 83.9%;--radius: .5rem}html{height:100%;font-family:Rubik,sans-serif;font-size:14px}body{display:flex;flex-direction:column;min-height:100%;margin:0;background:hsl(var(--background));color:hsl(var(--foreground));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}#app{max-height:100lvh;display:flex;flex:1}.canvas{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:auto}.canvas__application-container{position:relative;display:flex;flex-direction:column;border:1px solid hsl(212 24% 19%);border-radius:8px;background:#121921}.canvas__application-container iframe{flex:1;border:none}.canvas__application-container-drag-handle{position:absolute;bottom:2px;right:2px;display:flex;align-items:center;justify-content:center;width:12px;height:12px;opacity:.3;cursor:nwse-resize}.canvas__application-container-drag-handle svg{width:12px;height:12px}.canvas__aspect-ratio{position:absolute;bottom:-20px;right:0;font-size:12px;color:#737f8c}.application-info{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.application-info__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.application-info__section{margin-bottom:24px}.application-info__section:last-child{margin-bottom:0}.application-info__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.application-info__field{margin-bottom:24px}.application-info__field:last-child{margin-bottom:0}.application-info__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.application-info__value{color:hsl(var(--foreground));font-size:14px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);word-break:break-all}.application-info__thumbnail-container{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.application-info__thumbnail{max-width:75px;max-height:75px;width:auto;height:auto;object-fit:contain;border-radius:4px}.application-settings{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.application-settings__loading,.application-settings__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.device-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.device-config__section{margin-bottom:24px}.device-config__section:last-child{margin-bottom:0}.device-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.device-config__field{margin-bottom:24px}.device-config__field:last-child{margin-bottom:0}.device-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.device-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.device-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:40px;padding:8px 36px 8px 12px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit;cursor:pointer}.device-config__select:hover{background-color:hsl(var(--accent))}.device-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.device-config__input:focus,.device-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.account-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.account-config__loading,.account-config__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.account-config__section{margin-bottom:24px}.account-config__section:last-child{margin-bottom:0}.account-config__section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.account-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.account-config__section-header .account-config__section-title{margin:0}.account-config__field{margin-bottom:24px}.account-config__field:last-child{margin-bottom:0}.account-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.account-config__value{color:hsl(var(--foreground));font-size:14px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);word-break:break-all}.account-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.account-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:40px;padding:8px 36px 8px 12px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit;cursor:pointer}.account-config__select:hover{background-color:hsl(var(--accent))}.account-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.account-config__input:focus,.account-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.account-config__button{height:36px;padding:6px 12px;background:hsl(var(--primary));border:none;border-radius:var(--radius);color:#000;font-size:14px;font-weight:500;cursor:pointer}.account-config__button:hover{background:#f7a918}.account-config__button:active{background:#ec9d09}.account-config__button--small{height:32px;padding:4px 8px;font-size:12px}.account-config__button--danger{background:hsl(var(--destructive));border:none;color:hsl(var(--primary-foreground))}.account-config__button--danger:hover{background:#ef3d2a}.account-config__button--danger:active{background:#ed2812}.account-config__item{padding:12px;margin-bottom:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.account-config__item:last-child{margin-bottom:0}.account-config__item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid hsl(var(--border))}.account-config__item-title{color:hsl(var(--foreground));font-size:12px;font-weight:600}.media-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.media-config__empty{padding:20px;color:hsl(var(--muted-foreground));font-size:14px;text-align:center;font-style:italic}.media-config__section{margin-bottom:24px}.media-config__section:last-child{margin-bottom:0}.media-config__section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.media-config__section-title{color:hsl(var(--foreground));font-size:14px;font-weight:600;margin:0 0 12px}.media-config__section-header .media-config__section-title{margin:0}.media-config__field{margin-bottom:24px}.media-config__field:last-child{margin-bottom:0}.media-config__label{display:block;color:hsl(var(--foreground));font-size:14px;font-weight:500;margin-bottom:6px}.media-config__input{width:100%;height:40px;padding:8px 12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:14px;font-family:inherit}.media-config__input::placeholder{color:hsl(var(--muted-foreground));opacity:1}.media-config__input:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.media-config__button{height:36px;padding:6px 12px;background:hsl(var(--primary));border:none;border-radius:var(--radius);color:#000;font-size:14px;font-weight:500;cursor:pointer}.media-config__button:hover{background:#f7a918}.media-config__button:active{background:#ec9d09}.media-config__button--small{height:32px;padding:4px 8px;font-size:12px}.media-config__button--danger{background:hsl(var(--destructive));border:none;color:hsl(var(--primary-foreground))}.media-config__button--danger:hover{background:#ef3d2a}.media-config__button--danger:active{background:#ed2812}.media-config__item{padding:12px;margin-bottom:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.media-config__item:last-child{margin-bottom:0}.media-config__item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid hsl(var(--border))}.media-config__item-title{color:hsl(var(--foreground));font-size:12px;font-weight:600}.weather-config{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:16px;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.weather-config__top-controls{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid hsl(var(--border))}.weather-config__reset-button{padding:8px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;font-weight:500;cursor:pointer}.weather-config__reset-button:hover{background:hsl(var(--accent));border-color:hsl(var(--primary))}.weather-config__unit-toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:hsl(var(--muted-foreground))}.weather-config__unit-active{color:hsl(var(--foreground));font-weight:500}.weather-config__toggle-switch{position:relative;display:inline-block;width:40px;height:22px}.weather-config__toggle-switch input{opacity:0;width:0;height:0}.weather-config__toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:hsl(var(--border));border-radius:22px}.weather-config__toggle-slider:before{position:absolute;content:"";height:16px;width:16px;left:3px;bottom:3px;background-color:hsl(var(--foreground));border-radius:50%}.weather-config__toggle-switch input:checked+.weather-config__toggle-slider{background-color:hsl(var(--primary))}.weather-config__toggle-switch input:checked+.weather-config__toggle-slider:before{transform:translate(18px)}.weather-config__section{margin-bottom:8px;border:1px solid hsl(var(--border));border-radius:var(--radius);overflow:hidden;flex-shrink:0}.weather-config__section:last-child{margin-bottom:0}.weather-config__section-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 16px;background:hsl(var(--background));border:none;color:hsl(var(--foreground));font-size:14px;font-weight:600;font-family:inherit;cursor:pointer}.weather-config__section-header:hover{background:hsl(var(--accent))}.weather-config__section-title{margin:0}.weather-config__section-toggle{font-size:16px;font-weight:400;color:hsl(var(--muted-foreground))}.weather-config__section-content{padding:16px;background:hsl(var(--card));border-top:1px solid hsl(var(--border))}.weather-config__json-textarea{width:100%;height:50svh;padding:12px;background:hsl(var(--background));border:2px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-family:SF Mono,Monaco,Inconsolata,Fira Code,monospace;font-size:12px;line-height:1.5;resize:vertical}.weather-config__json-textarea:focus{outline:none;border-color:hsl(var(--primary))}.weather-config__json-textarea--invalid{border-color:#ef4343}.weather-config__json-textarea--invalid:focus{border-color:#ef4343}.weather-config__helpers{margin-top:16px;padding-top:16px;border-top:1px solid hsl(var(--border))}.weather-config__helper-row{margin-bottom:16px}.weather-config__helper-row:last-child{margin-bottom:0}.weather-config__helper-label{display:block;color:hsl(var(--foreground));font-size:12px;font-weight:500;margin-bottom:8px}.weather-config__helper-hint{margin:8px 0 0;font-size:11px;color:hsl(var(--muted-foreground))}.weather-config__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:36px;padding:6px 32px 6px 10px;background-color:hsl(var(--background));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;cursor:pointer}.weather-config__select:hover{background-color:hsl(var(--accent))}.weather-config__select:focus{outline:1px solid hsl(var(--primary));outline-offset:0}.weather-config__city-select{width:auto;min-width:180px;max-width:220px}.weather-config__pod-buttons{display:flex;gap:8px}.weather-config__pod-button{flex:1;padding:8px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;cursor:pointer}.weather-config__pod-button:hover{background:hsl(var(--accent))}.weather-config__pod-button--active{background:hsl(var(--primary));border-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.weather-config__pod-button--active:hover{background:hsl(var(--primary))}.weather-config__slider{width:100%;height:6px;background:hsl(var(--border));border-radius:3px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.weather-config__slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:hsl(var(--primary));border-radius:50%;cursor:pointer}.weather-config__slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.weather-config__slider::-moz-range-thumb{width:16px;height:16px;background:hsl(var(--primary));border:none;border-radius:50%;cursor:pointer}.weather-config__current-values{display:flex;gap:16px;padding:12px;background:hsl(var(--background));border-radius:var(--radius);font-size:13px;color:hsl(var(--muted-foreground))}.weather-config__current-values strong{color:hsl(var(--foreground))}.weather-config__action-buttons{display:flex;gap:8px}.weather-config__action-button{flex:1;padding:10px 16px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--foreground));font-size:13px;font-family:inherit;font-weight:500;cursor:pointer}.weather-config__action-button:hover{background:hsl(var(--accent));border-color:hsl(var(--primary))}.weather-config__action-button:first-child{color:#f97415}.weather-config__action-button:last-child{color:#39f}.weather-config__alerts-list{display:flex;flex-direction:column;gap:12px}.weather-config__alert-item{padding:12px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius)}.weather-config__alert-header{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.weather-config__alert-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.weather-config__alert-title{flex:1;font-size:13px;font-weight:600;color:hsl(var(--foreground))}.weather-config__alert-remove{flex-shrink:0;width:24px;height:24px;padding:0;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));font-size:18px;font-weight:400;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.weather-config__alert-remove:hover{background:hsl(var(--destructive));border-color:hsl(var(--destructive));color:hsl(var(--destructive-foreground))}.weather-config__alert-severity{width:auto;min-width:120px}.weather-config__alert-times{display:flex;flex-direction:column;gap:4px}.weather-config__alert-time-row{display:flex;justify-content:space-between;font-size:11px}.weather-config__alert-time-label{color:hsl(var(--muted-foreground));font-weight:500}.weather-config__alert-time-value{color:hsl(var(--foreground));font-family:SF Mono,Monaco,Inconsolata,monospace}.color-scheme-toggle{position:relative}.color-scheme-toggle__button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer}.color-scheme-toggle__button:hover{border-color:hsl(var(--foreground));color:hsl(var(--foreground))}.color-scheme-toggle__icon{position:absolute;opacity:0;transform:rotate(90deg) scale(0)}.color-scheme-toggle__icon--visible{opacity:1;transform:rotate(0) scale(1)}.color-scheme-toggle__dropdown{position:absolute;bottom:100%;left:0;margin-bottom:4px;min-width:100px;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);box-shadow:0 4px 12px #00000026;overflow:hidden;z-index:100}.color-scheme-toggle__dropdown-item{display:block;width:100%;padding:8px 12px;background:transparent;border:none;color:hsl(var(--foreground));font-size:14px;font-family:inherit;text-align:left;cursor:pointer}.color-scheme-toggle__dropdown-item:hover{background:hsl(var(--accent))}.color-scheme-toggle__dropdown-item--active{color:hsl(var(--primary))}.right-sidebar{display:flex;flex-direction:row;width:450px}.right-sidebar__nav{display:flex;flex-direction:column;width:64px;padding:16px 8px;gap:4px;background:hsl(var(--background));border-right:1px solid hsl(var(--border));align-items:center}.right-sidebar__nav-button{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:transparent;border:1px solid hsl(var(--border));border-radius:var(--radius);color:hsl(var(--muted-foreground));cursor:pointer}.right-sidebar__nav-button:hover{border-color:hsl(var(--foreground));color:hsl(var(--foreground))}.right-sidebar__nav-button--active{border-color:hsl(var(--primary));color:hsl(var(--primary))}.right-sidebar__nav-spacer{flex-grow:1}.right-sidebar__container{display:flex;flex-direction:column;flex:1;max-height:100lvh;overflow:hidden;background:hsl(var(--card));font-family:Rubik,sans-serif;font-feature-settings:"rlig" 1,"calt" 1}.right-sidebar__header{display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid hsl(var(--border));flex-shrink:0}.right-sidebar__header-title{color:hsl(var(--foreground));font-size:16px;font-weight:600}.right-sidebar__content{flex:1;overflow:hidden;display:flex;flex-direction:column}