UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

485 lines (418 loc) 11.5 kB
/* Session indicator — matches existing site-stats style */ .session-indicator { display: flex; align-items: center; } .session-indicator-wrapper { position: relative; } /* Labeled box — mirrors the "1655 portfolio" / "72 collection" stat boxes */ .session-box { display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; padding: 0.25rem 0.6rem; min-width: 8.5rem; border: 1px solid var(--line, #c8d5e9); border-radius: var(--radius-sm, 0.42rem); background: var(--paper-strong, #fff); color: var(--ink-700, #324563); font-family: var(--font-body); font-size: var(--step--1, 0.82rem); cursor: pointer; transition: border-color 0.15s, box-shadow 0.15s; line-height: 1.4; } .session-box:hover { border-color: var(--signal-2, #3b82f6); box-shadow: 0 0 0 2px color-mix(in srgb, var(--signal-2, #3b82f6) 15%, transparent); } .session-box[aria-expanded="true"] { border-color: var(--signal, #1e40af); } .session-box-count { font-weight: 700; color: var(--ink-900, #18243a); } .session-box-label { font-weight: 500; } .session-box-arrow { display: inline-block; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--ink-500, #677893); margin-left: 0.2rem; transition: transform 0.15s; } .session-box[aria-expanded="true"] .session-box-arrow { transform: rotate(180deg); } /* Dropdown panel */ .session-dropdown { position: absolute; top: calc(100% + 0.4rem); right: 0; width: min(34rem, calc(100vw - 1rem)); box-sizing: border-box; background: var(--paper-strong, #fff); border: 1px solid var(--line, #c8d5e9); border-radius: var(--radius-md, 0.85rem); box-shadow: var(--shadow-soft, 0 0.95rem 1.8rem -1.15rem rgba(17,40,74,0.28)); z-index: 200; overflow: hidden; } .session-dropdown-heading { padding: 0.5rem 0.75rem 0.3rem; font-family: var(--font-heading); font-size: var(--step--1, 0.82rem); font-weight: 700; color: var(--ink-500, #677893); text-transform: uppercase; letter-spacing: 0.04em; border-bottom: 1px solid var(--line, #c8d5e9); } .session-dropdown-heading--toggle { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; } .session-dropdown-heading-label { min-width: 0; } .session-dropdown-toggle-group { display: inline-flex; align-items: center; gap: 0.45rem; flex-shrink: 0; } .session-dropdown-toggle-label { font-family: var(--font-mono, monospace); font-size: 0.68rem; font-weight: 700; color: var(--ink-500, #677893); text-transform: none; letter-spacing: 0.02em; } .session-dropdown-switch { --session-toggle-width: 3.8rem; --session-toggle-height: 1.55rem; appearance: none; border: 1px solid var(--line, #c8d5e9); border-radius: 999px; background: var(--paper-strong, #fff); color: var(--ink-700, #324563); width: var(--session-toggle-width); height: var(--session-toggle-height); padding: 0; cursor: pointer; transition: border-color 0.15s, background 0.15s, color 0.15s; position: relative; display: inline-grid; grid-template-columns: 1fr 1fr; align-items: center; overflow: hidden; } .session-dropdown-switch[data-state="on"] { background: color-mix(in srgb, var(--signal-2, #3b82f6) 12%, var(--paper-strong, #fff)); border-color: color-mix(in srgb, var(--signal-2, #3b82f6) 45%, var(--line, #c8d5e9)); color: var(--signal, #1e40af); } .session-dropdown-switch:hover, .session-dropdown-switch:focus-visible { border-color: var(--signal-2, #3b82f6); outline: none; } .session-dropdown-switch-label { position: relative; z-index: 1; text-align: center; font-family: var(--font-mono, monospace); font-size: 0.66rem; font-weight: 700; color: var(--ink-500, #677893); transition: color 0.15s; } .session-dropdown-switch[data-state="off"] .session-dropdown-switch-label--off, .session-dropdown-switch[data-state="on"] .session-dropdown-switch-label--on { color: var(--signal, #1e40af); } .session-dropdown-switch-thumb { position: absolute; top: 2px; left: 2px; width: calc((var(--session-toggle-width) - 6px) / 2); height: calc(var(--session-toggle-height) - 6px); border-radius: 999px; background: color-mix(in srgb, var(--signal-2, #3b82f6) 16%, var(--paper-strong, #fff)); transition: transform 0.18s ease; } .session-dropdown-switch[data-state="on"] .session-dropdown-switch-thumb { transform: translateX(calc((var(--session-toggle-width) - 6px) / 2)); } .session-dropdown-divider { height: 1px; background: var(--line, #c8d5e9); margin: 0.15rem 0; } .session-dropdown-item { display: grid; grid-template-columns: 1rem 8px minmax(0, 1fr) 5.5rem 6.75rem 4.5rem 1.2rem; align-items: center; column-gap: 0.7rem; row-gap: 0.3rem; padding: 0.55rem 0.9rem; font-size: var(--step--1, 0.82rem); cursor: pointer; transition: background 0.1s; user-select: none; } .session-dropdown-item--all { grid-template-columns: 1rem 1fr auto; } .session-dropdown-item:hover { background: var(--surface-1, #eaf1ff); } .session-dropdown-item--selected { background: color-mix(in srgb, var(--signal-2, #3b82f6) 8%, transparent); } .session-dropdown-item--selected:hover { background: color-mix(in srgb, var(--signal-2, #3b82f6) 14%, transparent); } .session-dropdown-check { width: 1rem; text-align: center; font-size: 0.75rem; font-weight: 700; color: var(--signal, #1e40af); flex-shrink: 0; } .session-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--signal-2, #3b82f6); flex-shrink: 0; } .session-dropdown-name { font-weight: 600; color: var(--ink-900, #18243a); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .session-dropdown-primary { min-width: 0; display: flex; flex-direction: column; gap: 0.18rem; align-self: center; } .session-dropdown-meta { display: flex; align-items: center; gap: 0.35rem; min-width: 0; flex-wrap: wrap; } .session-dropdown-version { font-size: 0.7rem; font-family: var(--font-mono, monospace); color: var(--ink-500, #677893); white-space: nowrap; } .session-dropdown-update { display: inline-flex; align-items: center; padding: 1px 5px; border-radius: 999px; font-size: 0.62rem; font-weight: 700; letter-spacing: 0.04em; background: #ecfdf5; color: #166534; border: 1px solid #86efac; white-space: nowrap; } .session-dropdown-uptime { font-size: 0.7rem; font-family: var(--font-mono, monospace); color: var(--ink-500, #677893); white-space: nowrap; text-align: right; min-width: 4.5rem; justify-self: end; } .session-dropdown-role { font-size: 0.65rem; font-weight: 600; color: var(--ink-500, #677893); text-transform: uppercase; letter-spacing: 0.04em; } /* Dark theme overrides */ [data-theme="dark"] .session-box { background: var(--paper-strong, #1a1a2e); border-color: var(--line, #2a3a5e); color: var(--ink-500, #8899bb); } [data-theme="dark"] .session-box-count { color: var(--ink-900, #e0e8f0); } [data-theme="dark"] .session-dropdown { background: var(--paper-strong, #1a1a2e); border-color: var(--line, #2a3a5e); } [data-theme="dark"] .session-dropdown-item:hover { background: var(--surface-1, #1e2848); } [data-theme="dark"] .session-dropdown-item--selected { background: color-mix(in srgb, var(--signal-2, #3b82f6) 12%, transparent); } [data-theme="dark"] .session-dropdown-check { color: var(--signal-2, #3b82f6); } [data-theme="dark"] .session-dropdown-divider { background: var(--line, #2a3a5e); } [data-theme="dark"] .session-dropdown-name { color: var(--ink-900, #e0e8f0); } [data-theme="dark"] .session-dropdown-version { color: var(--ink-500, #8899bb); } [data-theme="dark"] .session-dropdown-update { background: #052e16; color: #bbf7d0; border-color: #166534; } [data-theme="dark"] .session-dropdown-toggle-label { color: var(--ink-500, #8899bb); } [data-theme="dark"] .session-dropdown-switch { background: var(--paper-strong, #1a1a2e); border-color: var(--line, #2a3a5e); color: var(--ink-900, #e0e8f0); } [data-theme="dark"] .session-dropdown-switch[data-state="on"] { background: color-mix(in srgb, var(--signal-2, #3b82f6) 18%, var(--paper-strong, #1a1a2e)); border-color: color-mix(in srgb, var(--signal-2, #3b82f6) 55%, var(--line, #2a3a5e)); color: var(--signal-2, #93c5fd); } [data-theme="dark"] .session-dropdown-switch-label { color: var(--ink-500, #8899bb); } [data-theme="dark"] .session-dropdown-switch[data-state="off"] .session-dropdown-switch-label--off, [data-theme="dark"] .session-dropdown-switch[data-state="on"] .session-dropdown-switch-label--on { color: var(--signal-2, #93c5fd); } [data-theme="dark"] .session-dropdown-switch-thumb { background: color-mix(in srgb, var(--signal-2, #3b82f6) 24%, var(--paper-strong, #1a1a2e)); } /* Kill button */ .session-kill-btn { display: inline-flex; align-items: center; justify-content: center; width: 1.2rem; height: 1.2rem; border: none; border-radius: 50%; background: transparent; color: var(--ink-500, #677893); font-size: 0.85rem; font-weight: 600; cursor: pointer; flex-shrink: 0; transition: background 0.15s, color 0.15s; line-height: 1; padding: 0; } .session-kill-btn:hover { background: color-mix(in srgb, #ef4444 12%, var(--paper-strong, #fff)); color: #dc2626; } /* Session badge on log entries */ .log-session-badge { display: inline-block; padding: 0 0.35rem; border-radius: 3px; font-size: 0.65rem; font-weight: 600; color: var(--ink-900, #18243a); background: var(--surface-1, #eaf1ff); margin-right: 0.35rem; vertical-align: middle; line-height: 1.4; letter-spacing: 0.02em; } /* Session status badges — auth + client indicators (#1805) * Two independent dimensions, each with: * - Shape (filled/empty circle for auth, checkmark/X for client) * - Text label (always present for accessibility) * - Color (blue=positive, orange=negative — colorblind-safe pair) */ .session-status-badge { display: inline-flex; align-items: center; justify-content: center; padding: 2px 7px; border-radius: 5px; font-size: 10px; font-weight: 600; letter-spacing: 0.04em; white-space: nowrap; text-align: center; min-width: 4.75rem; box-sizing: border-box; } .session-dropdown-item > .session-status-badge { justify-self: center; } .session-dropdown-badge-stack { display: flex; flex-direction: column; align-items: center; justify-self: center; gap: 0.24rem; width: 100%; max-width: 6.75rem; } .session-dropdown-client-label { font-size: 0.62rem; line-height: 1.15; color: var(--ink-500, #677893); text-align: center; width: 100%; } .session-status-badge[data-status="positive"] { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; } .session-status-badge[data-status="negative"] { background: #fff7ed; color: #9a3412; border: 1px solid #fed7aa; } [data-theme="dark"] .session-status-badge[data-status="positive"] { background: #172554; color: #93c5fd; border-color: #1e40af; } [data-theme="dark"] .session-status-badge[data-status="negative"] { background: #431407; color: #fdba74; border-color: #9a3412; } [data-theme="dark"] .session-dropdown-client-label { color: var(--ink-500, #8899bb); } /* Session filter in the log viewer */ #log-session-filter { min-width: 120px; }