@inkandswitch/patchwork-pkg-base 0.0.50 → 0.0.51

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.
@@ -3,7 +3,1022 @@
3
3
  try {
4
4
  if (typeof document != "undefined") {
5
5
  var elementStyle = document.createElement("style");
6
- elementStyle.appendChild(document.createTextNode('@layer package {\n :root,\n :host,\n [theme] {\n /* Surface + ink: a tool derives from --editor-*. */\n --pw-packages-fill: var(--editor-fill, white);\n --pw-packages-line: var(--editor-line, black);\n --pw-packages-family: var(--editor-family-sans, system-ui, sans-serif);\n --pw-packages-family-code: var(--editor-family-code, ui-monospace, monospace);\n\n --pw-packages-muted: color-mix(\n in oklch,\n var(--pw-packages-line),\n var(--pw-packages-fill) 45%\n );\n --pw-packages-faint: color-mix(\n in oklch,\n var(--pw-packages-line),\n var(--pw-packages-fill) 62%\n );\n /* Dividers should recede into the canvas, with only a trace of the\n secondary colour to distinguish adjacent areas. */\n --pw-packages-border: color-mix(\n in oklch,\n var(--studio-secondary, #33ccf8),\n var(--pw-packages-fill) 90%\n );\n --pw-packages-border-strong: color-mix(\n in oklch,\n var(--studio-secondary, #33ccf8),\n var(--pw-packages-fill) 82%\n );\n --pw-packages-raise: color-mix(\n in oklch,\n var(--pw-packages-fill),\n var(--pw-packages-line) 4%\n );\n --pw-packages-raise-2: color-mix(\n in oklch,\n var(--pw-packages-fill),\n var(--pw-packages-line) 8%\n );\n\n /* Accent per origin (accents come from --studio-*). "installed" is the\n primary "yours" accent; "ephemeral" gets the secondary. */\n --pw-packages-accent: var(--studio-primary, #35f7ca);\n --pw-packages-installed: var(--studio-primary, #35f7ca);\n --pw-packages-ephemeral: var(--studio-secondary, #33ccf8);\n --pw-packages-core: var(--pw-packages-muted);\n --pw-packages-unknown: var(--studio-warning, #f8c43b);\n --pw-packages-danger: var(--studio-danger, #f8674b);\n\n --pw-packages-installed-fill: color-mix(\n in oklch,\n var(--pw-packages-installed),\n var(--pw-packages-fill) 82%\n );\n --pw-packages-installed-text: var(\n --editor-primary-text,\n color-mix(\n in oklch,\n var(--pw-packages-installed),\n var(--pw-packages-line) 30%\n )\n );\n --pw-packages-ephemeral-fill: color-mix(\n in oklch,\n var(--pw-packages-ephemeral),\n var(--pw-packages-fill) 82%\n );\n --pw-packages-ephemeral-text: var(\n --editor-secondary-text,\n color-mix(\n in oklch,\n var(--pw-packages-ephemeral),\n var(--pw-packages-line) 30%\n )\n );\n --pw-packages-core-fill: var(--pw-packages-raise-2);\n --pw-packages-core-text: var(--pw-packages-muted);\n --pw-packages-unknown-fill: color-mix(\n in oklch,\n var(--pw-packages-unknown),\n var(--pw-packages-fill) 78%\n );\n --pw-packages-unknown-text: var(\n --editor-warning-text,\n color-mix(\n in oklch,\n var(--pw-packages-unknown),\n var(--pw-packages-line) 30%\n )\n );\n --pw-packages-accent-fill: var(--pw-packages-installed-fill);\n --pw-packages-accent-text: var(--pw-packages-installed-text);\n\n --pw-packages-focus: var(--studio-primary, #35f7ca);\n }\n}\n\n/* ---- composition / block ---- */\n\n.pw-packages {\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n box-sizing: border-box;\n background: var(--pw-packages-fill);\n color: var(--pw-packages-line);\n font-family: var(--pw-packages-family);\n font-size: 14px;\n line-height: 1.5;\n container-type: inline-size;\n}\n\n.pw-packages *,\n.pw-packages *::before,\n.pw-packages *::after {\n box-sizing: border-box;\n}\n\n/* ---- header ---- */\n\n.pw-packages {\n --pw-ctl-h: 2.15rem;\n}\n\n.pw-packages__head {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n padding: 0.875rem 1rem 0;\n background: color-mix(in oklch, var(--pw-packages-fill), transparent 4%);\n backdrop-filter: blur(6px);\n}\n\n/* Row 1: filter (left) + a quiet summary pinned top-right. */\n.pw-packages__toolbar {\n display: flex;\n gap: 0.75rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.pw-packages__search {\n flex: 1;\n min-width: 12rem;\n height: var(--pw-ctl-h);\n border: 1px solid var(--pw-packages-border-strong);\n border-radius: var(--studio-radius-md, 8px);\n background: var(--pw-packages-fill);\n color: var(--pw-packages-line);\n font: inherit;\n font-size: 0.8125rem;\n padding: 0 0.75rem;\n}\n.pw-packages__search::placeholder {\n color: var(--pw-packages-faint);\n}\n.pw-packages__search:focus,\n.pw-packages__origin-chip:focus-visible,\n.pw-packages__tab:focus-visible {\n outline: 2px solid var(--pw-packages-focus);\n outline-offset: 1px;\n}\n.pw-packages__stats {\n display: flex;\n align-items: baseline;\n gap: 0.75rem;\n margin-left: auto;\n font-size: 0.8125rem;\n color: var(--pw-packages-muted);\n flex-wrap: wrap;\n}\n.pw-packages__stats strong {\n color: var(--pw-packages-line);\n font-variant-numeric: tabular-nums;\n}\n.pw-packages__stat-of {\n color: var(--pw-packages-faint);\n}\n\n/* Bottom row: folder tabs (left) + origin filter chips (right), sharing the\n baseline. Inactive tabs are plain text; the active one is a raised card whose\n open bottom breaks through the baseline and merges into the content below. */\n.pw-packages__tabbar {\n display: flex;\n align-items: flex-end;\n gap: 0.35rem 0.75rem;\n flex-wrap: wrap;\n margin: 0.15rem -1rem 0;\n padding: 0 0.6rem;\n border-bottom: 1px solid var(--pw-packages-border);\n}\n.pw-packages__tabs {\n display: flex;\n align-items: flex-end;\n gap: 0.25rem;\n}\n.pw-packages__tab {\n appearance: none;\n border: 1px solid transparent;\n border-bottom: 0;\n background: transparent;\n color: var(--pw-packages-muted);\n font: inherit;\n font-size: 0.8125rem;\n padding: 0.4rem 0.9rem;\n border-radius: var(--studio-radius-md, 8px) var(--studio-radius-md, 8px) 0 0;\n cursor: pointer;\n margin-bottom: -1px;\n transition: color var(--studio-transition-fast, 0.1s ease);\n}\n.pw-packages__tab:hover {\n color: var(--pw-packages-line);\n}\n.pw-packages__tab[data-active] {\n background: var(--pw-packages-fill);\n border-color: var(--pw-packages-border);\n border-bottom: 1px solid var(--pw-packages-fill);\n color: var(--pw-packages-line);\n font-weight: 600;\n}\n.pw-packages__tab[data-view="registries"][data-active] {\n border-color: color-mix(\n in oklch,\n var(--studio-secondary, #33ccf8),\n var(--pw-packages-fill) 65%\n );\n color: color-mix(\n in oklch,\n var(--studio-secondary, #33ccf8),\n var(--pw-packages-line) 40%\n );\n}\n\n/* Origin chips ride on the right of the tab row, lifted off the baseline. */\n.pw-packages__origins {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n flex-wrap: wrap;\n margin-left: auto;\n margin-bottom: 0.4rem;\n}\n.pw-packages__origin-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n border: 1px solid var(--pw-packages-border-strong);\n background: var(--pw-packages-fill);\n color: var(--pw-packages-muted);\n border-radius: var(--studio-radius-round, 9999px);\n padding: 0.2rem 0.625rem;\n font: inherit;\n font-size: 0.75rem;\n cursor: pointer;\n transition: background var(--studio-transition-fast, 0.1s ease);\n}\n.pw-packages__origin-chip:hover {\n background: var(--pw-packages-raise);\n}\n.pw-packages__origin-count {\n font-variant-numeric: tabular-nums;\n font-size: 0.6875rem;\n color: var(--pw-packages-faint);\n}\n/* Active chip is a quiet neutral pill — the header stays accent-free so the\n Install button is the only colored thing. Origin *colors* still live on the\n cards (badges/dots/stripes), where they encode state. */\n.pw-packages__origin-chip[data-active] {\n border-color: transparent;\n font-weight: 600;\n color: var(--pw-packages-line);\n background: var(--pw-packages-raise-2);\n}\n.pw-packages__origin-chip[data-active] .pw-packages__origin-count {\n color: inherit;\n opacity: 0.7;\n}\n\n/* ---- shared: origin badge + copyable + source line + plugin row ---- */\n\n.pw-packages__origin {\n display: inline-flex;\n align-items: center;\n padding: 0.075rem 0.45rem;\n border-radius: var(--studio-radius-round, 9999px);\n font-size: 0.6875rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n background: var(--pw-packages-core-fill);\n color: var(--pw-packages-core-text);\n white-space: nowrap;\n}\n.pw-packages__origin[data-origin="installed"] {\n background: var(--pw-packages-installed-fill);\n color: var(--pw-packages-installed-text);\n}\n.pw-packages__origin[data-origin="ephemeral"] {\n background: var(--pw-packages-ephemeral-fill);\n color: var(--pw-packages-ephemeral-text);\n}\n.pw-packages__origin[data-origin="unknown"] {\n background: var(--pw-packages-unknown-fill);\n color: var(--pw-packages-unknown-text);\n}\n\n.pw-packages__copy {\n font-family: var(--pw-packages-family-code);\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n cursor: pointer;\n border-radius: 3px;\n padding: 0.05rem 0.2rem;\n margin: -0.05rem -0.2rem;\n transition: color var(--studio-transition-fast, 0.1s ease),\n background var(--studio-transition-fast, 0.1s ease);\n word-break: break-all;\n}\n.pw-packages__copy:hover {\n background: var(--pw-packages-raise-2);\n color: var(--pw-packages-line);\n}\n.pw-packages__copy.is-copied {\n color: var(--pw-packages-accent-text);\n background: var(--pw-packages-accent-fill);\n}\n\n.pw-source {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n min-width: 0;\n}\n.pw-source__lines {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 0.2rem;\n min-width: 0;\n}\n.pw-source__url {\n min-width: 0;\n}\n.pw-source__heads {\n font-size: 0.6875rem;\n color: var(--pw-packages-faint);\n}\n.pw-source__none {\n font-size: 0.75rem;\n font-style: italic;\n color: var(--pw-packages-faint);\n}\n\n/* right-aligned open / delete actions (cards, registries, table) */\n.pw-actions {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n margin-left: auto;\n flex-shrink: 0;\n}\n.pw-actions__btn {\n border: 1px solid var(--pw-packages-border-strong);\n background: var(--pw-packages-raise);\n color: var(--pw-packages-muted);\n border-radius: var(--studio-radius-sm, 4px);\n font: inherit;\n font-size: 0.6875rem;\n padding: 0.15rem 0.55rem;\n cursor: pointer;\n transition: background var(--studio-transition-fast, 0.1s ease),\n color var(--studio-transition-fast, 0.1s ease),\n border-color var(--studio-transition-fast, 0.1s ease);\n}\n.pw-actions__btn:hover {\n background: var(--pw-packages-raise-2);\n color: var(--pw-packages-line);\n}\n.pw-actions__btn--danger:hover {\n background: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 84%);\n border-color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 55%);\n color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 25%);\n}\n\n.pw-plugins {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.2rem;\n}\n.pw-plugin {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n padding: 0.4rem 0;\n flex-wrap: wrap;\n}\n.pw-plugin__dot {\n align-self: center;\n width: 0.4rem;\n height: 0.4rem;\n border-radius: 9999px;\n flex-shrink: 0;\n background: var(--pw-packages-core);\n}\n.pw-plugin__dot[data-origin="installed"] {\n background: var(--pw-packages-installed);\n}\n.pw-plugin__dot[data-origin="ephemeral"] {\n background: var(--pw-packages-ephemeral);\n}\n.pw-plugin__dot[data-origin="unknown"] {\n background: var(--pw-packages-unknown);\n}\n.pw-plugin__name {\n font-weight: 550;\n}\n.pw-plugin__type {\n font-size: 0.6875rem;\n color: var(--pw-packages-muted);\n background: var(--pw-packages-raise-2);\n border-radius: var(--studio-radius-sm, 4px);\n padding: 0.05rem 0.4rem;\n}\n.pw-plugin__id {\n margin-left: auto;\n}\n.pw-plugin__supports {\n flex-basis: 100%;\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n font-family: var(--pw-packages-family-code);\n}\n.pw-plugin__supports-label {\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.625rem;\n font-family: var(--pw-packages-family);\n color: var(--pw-packages-faint);\n}\n\n/* ---- view: by package (cards) ---- */\n\n.pw-cards {\n list-style: none;\n margin: 0;\n padding: 1.25rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n.pw-card {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1.25rem 1.375rem;\n background: var(--pw-packages-fill);\n}\n.pw-card__source {\n display: flex;\n min-width: 0;\n}\n.pw-card__foot {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding-top: 0.65rem;\n border-top: 1px solid var(--pw-packages-border);\n}\n\n/* show-more toggle, valid inside the plugin/registry <ul>s */\n.pw-more {\n list-style: none;\n padding: 0.15rem 0 0.1rem;\n}\n.pw-more__btn {\n border: 0;\n background: none;\n padding: 0.1rem 0;\n font: inherit;\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n cursor: pointer;\n border-bottom: 1px dashed var(--pw-packages-border-strong);\n}\n.pw-more__btn:hover {\n color: var(--pw-packages-accent-text);\n border-bottom-color: currentColor;\n}\n.pw-card__head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-card__name {\n margin: 0;\n font-size: 1.0625rem;\n font-weight: 650;\n letter-spacing: -0.01em;\n word-break: break-word;\n}\n.pw-card__badges {\n display: flex;\n align-items: center;\n gap: 0.4rem;\n flex-wrap: wrap;\n}\n.pw-card__version {\n font-size: 0.6875rem;\n font-family: var(--pw-packages-family-code);\n color: var(--pw-packages-muted);\n}\n.pw-card__count {\n font-size: 0.6875rem;\n color: var(--pw-packages-faint);\n}\n.pw-card__pkgname {\n font-size: 0.75rem;\n font-family: var(--pw-packages-family-code);\n color: var(--pw-packages-faint);\n margin-top: -0.25rem;\n}\n\n/* ---- view: by registry ---- */\n\n.pw-registries {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 1rem;\n}\n.pw-registry {\n border-bottom: 1px solid var(--pw-packages-border);\n}\n.pw-registry__head {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.875rem;\n background: color-mix(\n in oklch,\n var(--studio-secondary, #33ccf8),\n var(--pw-packages-fill) 94%\n );\n border-bottom: 1px solid var(--pw-packages-border);\n}\n.pw-registry__name {\n margin: 0;\n font-size: 0.9375rem;\n font-weight: 650;\n font-family: var(--pw-packages-family-code);\n}\n.pw-registry__count {\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n background: var(--pw-packages-fill);\n border: 1px solid var(--pw-packages-border);\n border-radius: var(--studio-radius-round, 9999px);\n padding: 0 0.5rem;\n font-variant-numeric: tabular-nums;\n}\n.pw-reglist {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n.pw-regitem {\n display: flex;\n flex-direction: column;\n gap: 0.3rem;\n padding: 0.55rem 0.875rem;\n border-left: 3px solid transparent;\n}\n.pw-regitem + .pw-regitem {\n border-top: 1px solid var(--pw-packages-border);\n}\n.pw-regitem[data-origin="installed"] {\n border-left-color: var(--pw-packages-installed);\n}\n.pw-regitem[data-origin="ephemeral"] {\n border-left-color: var(--pw-packages-ephemeral);\n}\n.pw-regitem[data-origin="unknown"] {\n border-left-color: var(--pw-packages-unknown);\n}\n.pw-regitem__main {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-regitem__name {\n font-weight: 550;\n}\n.pw-regitem__supports {\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n font-family: var(--pw-packages-family-code);\n}\n.pw-regitem__source {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n flex-wrap: wrap;\n color: var(--pw-packages-faint);\n}\n.pw-regitem__pkg {\n font-size: 0.6875rem;\n color: var(--pw-packages-muted);\n}\n\n/* ---- view: table ---- */\n\n.pw-table-wrap {\n padding: 1rem;\n overflow-x: auto;\n}\n.pw-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.8125rem;\n}\n.pw-table__th {\n text-align: left;\n padding: 0.4rem 0.6rem;\n border-bottom: 2px solid var(--pw-packages-border-strong);\n color: var(--pw-packages-muted);\n font-weight: 600;\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n}\n.pw-table__th--plain {\n cursor: default;\n}\n.pw-table__th[data-sorted] {\n color: var(--pw-packages-line);\n}\n.pw-table__arrow {\n font-size: 0.625rem;\n margin-left: 0.25rem;\n}\n.pw-table__row {\n border-bottom: 1px solid var(--pw-packages-border);\n}\n.pw-table__row:hover {\n background: var(--pw-packages-raise);\n}\n.pw-table td {\n padding: 0.4rem 0.6rem;\n vertical-align: baseline;\n}\n.pw-table__name {\n font-weight: 550;\n}\n.pw-table__supports {\n display: block;\n font-size: 0.6875rem;\n color: var(--pw-packages-faint);\n font-family: var(--pw-packages-family-code);\n}\n.pw-table__reg,\n.pw-table__pkg {\n font-family: var(--pw-packages-family-code);\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n}\n/* Keep the id on one line (the table scrolls) instead of breaking per-character. */\n.pw-table__id {\n white-space: nowrap;\n}\n.pw-table__url {\n max-width: 22rem;\n}\n\n/* ---- broken modules ---- */\n\n.pw-package-notices {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 1rem 1.25rem 0;\n}\n.pw-package-notice {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n flex-wrap: wrap;\n border: 1px solid var(--pw-packages-border-strong);\n border-left: 3px solid var(--pw-packages-unknown);\n border-radius: var(--studio-radius-md, 8px);\n background: var(--pw-packages-unknown-fill);\n padding: 0.625rem 0.75rem;\n color: var(--pw-packages-unknown-text);\n font-size: 0.8125rem;\n}\n.pw-package-notice__url {\n max-width: 100%;\n}\n\n.pw-broken {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1rem 1.25rem 0;\n}\n.pw-broken__box {\n border: 1px solid\n color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 45%);\n border-left: 3px solid var(--pw-packages-danger);\n border-radius: var(--studio-radius-md, 8px);\n background: color-mix(\n in oklch,\n var(--pw-packages-danger),\n var(--pw-packages-fill) 88%\n );\n padding: 0.75rem 0.875rem;\n}\n.pw-broken__head {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-broken__label {\n font-size: 0.75rem;\n font-weight: 650;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 30%);\n}\n.pw-broken__name {\n font-size: 0.8125rem;\n font-weight: 600;\n color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 45%);\n word-break: break-word;\n}\n.pw-broken__url {\n min-width: 0;\n}\n.pw-broken__plugins {\n margin: 0.6rem 0 0;\n}\n.pw-broken__trace {\n margin: 0.6rem 0 0;\n padding: 0.55rem 0.7rem;\n background: color-mix(in oklch, var(--pw-packages-line), transparent 92%);\n border-radius: var(--studio-radius-sm, 4px);\n font-family: var(--pw-packages-family-code);\n font-size: 0.6875rem;\n line-height: 1.5;\n color: var(--pw-packages-line);\n white-space: pre-wrap;\n word-break: break-word;\n overflow: auto;\n max-height: 16rem;\n}\n\n/* ---- empty ---- */\n\n.pw-packages__empty {\n padding: 3rem 1rem;\n text-align: center;\n color: var(--pw-packages-muted);\n}\n\n@container (max-width: 560px) {\n .pw-cards {\n padding: 0.875rem;\n }\n .pw-card {\n padding: 1rem 1.05rem;\n }\n .pw-plugin__id {\n margin-left: 0;\n }\n}\n\n/* ---- install modal ---- */\n\n.pw-modal {\n position: fixed;\n inset: 0;\n z-index: 50;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n padding: max(6vh, 2rem) 1rem 2rem;\n background: color-mix(in oklch, var(--pw-packages-line), transparent 55%);\n backdrop-filter: blur(2px);\n overflow-y: auto;\n}\n.pw-install {\n width: min(34rem, 100%);\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 1.25rem 1.375rem 1.125rem;\n background: var(--pw-packages-fill);\n color: var(--pw-packages-line);\n border: 1px solid var(--pw-packages-border-strong);\n border-radius: var(--studio-radius-lg, 12px);\n box-shadow: 0 12px 40px color-mix(in oklch, var(--pw-packages-line), transparent 78%);\n}\n.pw-install__head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n}\n.pw-install__title {\n margin: 0;\n font-size: 1.0625rem;\n font-weight: 650;\n letter-spacing: -0.01em;\n}\n.pw-install__close {\n border: 0;\n background: none;\n color: var(--pw-packages-muted);\n font-size: 1.25rem;\n line-height: 1;\n padding: 0.1rem 0.3rem;\n cursor: pointer;\n border-radius: var(--studio-radius-sm, 4px);\n}\n.pw-install__close:hover {\n background: var(--pw-packages-raise-2);\n color: var(--pw-packages-line);\n}\n.pw-install__blurb {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--pw-packages-muted);\n}\n.pw-install__blurb code {\n font-family: var(--pw-packages-family-code);\n font-size: 0.75rem;\n}\n.pw-install__input {\n width: 100%;\n border: 1px solid var(--pw-packages-border-strong);\n border-radius: var(--studio-radius-sm, 4px);\n background: var(--pw-packages-fill);\n color: var(--pw-packages-line);\n font: inherit;\n font-family: var(--pw-packages-family-code);\n font-size: 0.8125rem;\n padding: 0.5rem 0.625rem;\n}\n.pw-install__input:focus {\n outline: 2px solid var(--pw-packages-focus);\n outline-offset: 1px;\n}\n.pw-install__preview {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n.pw-install__error {\n font-size: 0.8125rem;\n color: var(--pw-packages-unknown-text);\n background: var(--pw-packages-unknown-fill);\n border-radius: var(--studio-radius-sm, 4px);\n padding: 0.4rem 0.6rem;\n}\n.pw-install__loading {\n font-size: 0.8125rem;\n color: var(--pw-packages-muted);\n}\n.pw-install__card {\n display: flex;\n flex-direction: column;\n gap: 0.6rem;\n padding: 0.875rem 1rem;\n background: var(--pw-packages-fill);\n}\n.pw-install__card-head {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-install__pkg {\n margin: 0;\n font-size: 1rem;\n font-weight: 650;\n word-break: break-word;\n}\n.pw-install__version {\n font-size: 0.6875rem;\n font-family: var(--pw-packages-family-code);\n color: var(--pw-packages-muted);\n}\n.pw-install__none {\n font-size: 0.8125rem;\n font-style: italic;\n color: var(--pw-packages-faint);\n}\n.pw-install__plugins {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 0.3rem;\n}\n.pw-install__plugin {\n display: flex;\n align-items: baseline;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-install__plugin-name {\n font-weight: 550;\n}\n.pw-install__plugin-supports {\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n font-family: var(--pw-packages-family-code);\n}\n.pw-install__foot {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n flex-wrap: wrap;\n}\n.pw-install__already {\n margin-right: auto;\n font-size: 0.75rem;\n color: var(--pw-packages-muted);\n}\n.pw-install__cancel {\n border: 1px solid var(--pw-packages-border-strong);\n background: var(--pw-packages-fill);\n color: var(--pw-packages-muted);\n border-radius: 999px;\n font: inherit;\n font-size: 0.8125rem;\n padding: 0.45rem 0.9rem;\n cursor: pointer;\n}\n.pw-install__cancel:hover {\n background: var(--pw-packages-raise);\n color: var(--pw-packages-line);\n}\n.pw-install__add {\n border: 1px solid\n color-mix(in oklch, var(--pw-packages-accent), var(--pw-packages-line) 12%);\n background: color-mix(\n in oklch,\n var(--pw-packages-accent),\n var(--pw-packages-fill) 46%\n );\n color: color-mix(in oklch, var(--pw-packages-accent), var(--pw-packages-line) 58%);\n border-radius: 999px;\n font: inherit;\n font-size: 0.8125rem;\n font-weight: 650;\n padding: 0.45rem 1.05rem;\n cursor: pointer;\n box-shadow: 0 2px 6px\n color-mix(in oklch, var(--pw-packages-accent), transparent 74%);\n transition: background var(--studio-transition-fast, 0.1s ease),\n box-shadow var(--studio-transition-fast, 0.1s ease);\n}\n.pw-install__add:hover:not(:disabled) {\n background: color-mix(\n in oklch,\n var(--pw-packages-accent),\n var(--pw-packages-fill) 30%\n );\n}\n.pw-install__add:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n}'));
6
+ elementStyle.appendChild(document.createTextNode(`@layer package {
7
+ :root,
8
+ :host,
9
+ [theme] {
10
+ /* Surface + ink: a tool derives from --editor-*. */
11
+ --pw-packages-fill: var(--editor-fill, white);
12
+ --pw-packages-line: var(--editor-line, black);
13
+ --pw-packages-family: var(--editor-family-sans, system-ui, sans-serif);
14
+ --pw-packages-family-code: var(--editor-family-code, ui-monospace, monospace);
15
+
16
+ --pw-packages-muted: color-mix(
17
+ in oklch,
18
+ var(--pw-packages-line),
19
+ var(--pw-packages-fill) 45%
20
+ );
21
+ --pw-packages-faint: color-mix(
22
+ in oklch,
23
+ var(--pw-packages-line),
24
+ var(--pw-packages-fill) 62%
25
+ );
26
+ /* Dividers should recede into the canvas, with only a trace of the
27
+ secondary colour to distinguish adjacent areas. */
28
+ --pw-packages-border: color-mix(
29
+ in oklch,
30
+ var(--studio-secondary, #33ccf8),
31
+ var(--pw-packages-fill) 90%
32
+ );
33
+ --pw-packages-border-strong: color-mix(
34
+ in oklch,
35
+ var(--studio-secondary, #33ccf8),
36
+ var(--pw-packages-fill) 82%
37
+ );
38
+ --pw-packages-raise: color-mix(
39
+ in oklch,
40
+ var(--pw-packages-fill),
41
+ var(--pw-packages-line) 4%
42
+ );
43
+ --pw-packages-raise-2: color-mix(
44
+ in oklch,
45
+ var(--pw-packages-fill),
46
+ var(--pw-packages-line) 8%
47
+ );
48
+
49
+ /* Accent per origin (accents come from --studio-*). "installed" is the
50
+ primary "yours" accent; "ephemeral" gets the secondary. */
51
+ --pw-packages-accent: var(--studio-primary, #35f7ca);
52
+ --pw-packages-installed: var(--studio-primary, #35f7ca);
53
+ --pw-packages-ephemeral: var(--studio-secondary, #33ccf8);
54
+ --pw-packages-core: var(--pw-packages-muted);
55
+ --pw-packages-unknown: var(--studio-warning, #f8c43b);
56
+ --pw-packages-danger: var(--studio-danger, #f8674b);
57
+
58
+ --pw-packages-installed-fill: color-mix(
59
+ in oklch,
60
+ var(--pw-packages-installed),
61
+ var(--pw-packages-fill) 82%
62
+ );
63
+ --pw-packages-installed-text: var(
64
+ --editor-primary-text,
65
+ color-mix(
66
+ in oklch,
67
+ var(--pw-packages-installed),
68
+ var(--pw-packages-line) 30%
69
+ )
70
+ );
71
+ --pw-packages-ephemeral-fill: color-mix(
72
+ in oklch,
73
+ var(--pw-packages-ephemeral),
74
+ var(--pw-packages-fill) 82%
75
+ );
76
+ --pw-packages-ephemeral-text: var(
77
+ --editor-secondary-text,
78
+ color-mix(
79
+ in oklch,
80
+ var(--pw-packages-ephemeral),
81
+ var(--pw-packages-line) 30%
82
+ )
83
+ );
84
+ --pw-packages-core-fill: var(--pw-packages-raise-2);
85
+ --pw-packages-core-text: var(--pw-packages-muted);
86
+ --pw-packages-unknown-fill: color-mix(
87
+ in oklch,
88
+ var(--pw-packages-unknown),
89
+ var(--pw-packages-fill) 78%
90
+ );
91
+ --pw-packages-unknown-text: var(
92
+ --editor-warning-text,
93
+ color-mix(
94
+ in oklch,
95
+ var(--pw-packages-unknown),
96
+ var(--pw-packages-line) 30%
97
+ )
98
+ );
99
+ --pw-packages-accent-fill: var(--pw-packages-installed-fill);
100
+ --pw-packages-accent-text: var(--pw-packages-installed-text);
101
+
102
+ --pw-packages-focus: var(--studio-primary, #35f7ca);
103
+ }
104
+ }
105
+
106
+ /* ---- composition / block ---- */
107
+
108
+ .pw-packages {
109
+ height: 100%;
110
+ overflow-y: auto;
111
+ overflow-x: hidden;
112
+ box-sizing: border-box;
113
+ background: var(--pw-packages-fill);
114
+ color: var(--pw-packages-line);
115
+ font-family: var(--pw-packages-family);
116
+ font-size: 14px;
117
+ line-height: 1.5;
118
+ container-type: inline-size;
119
+ }
120
+
121
+ .pw-packages *,
122
+ .pw-packages *::before,
123
+ .pw-packages *::after {
124
+ box-sizing: border-box;
125
+ }
126
+
127
+ /* ---- header ---- */
128
+
129
+ .pw-packages {
130
+ --pw-ctl-h: 2.15rem;
131
+ }
132
+
133
+ .pw-packages__head {
134
+ position: sticky;
135
+ top: 0;
136
+ z-index: 2;
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: 0.625rem;
140
+ padding: 0.875rem 1rem 0;
141
+ background: color-mix(in oklch, var(--pw-packages-fill), transparent 4%);
142
+ backdrop-filter: blur(6px);
143
+ }
144
+
145
+ /* Row 1: filter (left) + a quiet summary pinned top-right. */
146
+ .pw-packages__toolbar {
147
+ display: flex;
148
+ gap: 0.75rem;
149
+ align-items: center;
150
+ flex-wrap: wrap;
151
+ }
152
+ .pw-packages__search {
153
+ flex: 1;
154
+ min-width: 12rem;
155
+ height: var(--pw-ctl-h);
156
+ border: 1px solid var(--pw-packages-border-strong);
157
+ border-radius: var(--studio-radius-md, 8px);
158
+ background: var(--pw-packages-fill);
159
+ color: var(--pw-packages-line);
160
+ font: inherit;
161
+ font-size: 0.8125rem;
162
+ padding: 0 0.75rem;
163
+ }
164
+ .pw-packages__search::placeholder {
165
+ color: var(--pw-packages-faint);
166
+ }
167
+ .pw-packages__search:focus,
168
+ .pw-packages__origin-chip:focus-visible,
169
+ .pw-packages__tab:focus-visible {
170
+ outline: 2px solid var(--pw-packages-focus);
171
+ outline-offset: 1px;
172
+ }
173
+ .pw-packages__stats {
174
+ display: flex;
175
+ align-items: baseline;
176
+ gap: 0.75rem;
177
+ margin-left: auto;
178
+ font-size: 0.8125rem;
179
+ color: var(--pw-packages-muted);
180
+ flex-wrap: wrap;
181
+ }
182
+ .pw-packages__stats strong {
183
+ color: var(--pw-packages-line);
184
+ font-variant-numeric: tabular-nums;
185
+ }
186
+ .pw-packages__stat-of {
187
+ color: var(--pw-packages-faint);
188
+ }
189
+
190
+ /* Bottom row: folder tabs (left) + origin filter chips (right), sharing the
191
+ baseline. Inactive tabs are plain text; the active one is a raised card whose
192
+ open bottom breaks through the baseline and merges into the content below. */
193
+ .pw-packages__tabbar {
194
+ display: flex;
195
+ align-items: flex-end;
196
+ gap: 0.35rem 0.75rem;
197
+ flex-wrap: wrap;
198
+ margin: 0.15rem -1rem 0;
199
+ padding: 0 0.6rem;
200
+ border-bottom: 1px solid var(--pw-packages-border);
201
+ }
202
+ .pw-packages__tabs {
203
+ display: flex;
204
+ align-items: flex-end;
205
+ gap: 0.25rem;
206
+ }
207
+ .pw-packages__tab {
208
+ appearance: none;
209
+ border: 1px solid transparent;
210
+ border-bottom: 0;
211
+ background: transparent;
212
+ color: var(--pw-packages-muted);
213
+ font: inherit;
214
+ font-size: 0.8125rem;
215
+ padding: 0.4rem 0.9rem;
216
+ border-radius: var(--studio-radius-md, 8px) var(--studio-radius-md, 8px) 0 0;
217
+ cursor: pointer;
218
+ margin-bottom: -1px;
219
+ transition: color var(--studio-transition-fast, 0.1s ease);
220
+ }
221
+ .pw-packages__tab:hover {
222
+ color: var(--pw-packages-line);
223
+ }
224
+ .pw-packages__tab[data-active] {
225
+ background: var(--pw-packages-fill);
226
+ border-color: var(--pw-packages-border);
227
+ border-bottom: 1px solid var(--pw-packages-fill);
228
+ color: var(--pw-packages-line);
229
+ font-weight: 600;
230
+ }
231
+ .pw-packages__tab[data-view="registries"][data-active] {
232
+ border-color: color-mix(
233
+ in oklch,
234
+ var(--studio-secondary, #33ccf8),
235
+ var(--pw-packages-fill) 65%
236
+ );
237
+ color: color-mix(
238
+ in oklch,
239
+ var(--studio-secondary, #33ccf8),
240
+ var(--pw-packages-line) 40%
241
+ );
242
+ }
243
+
244
+ /* Origin chips ride on the right of the tab row, lifted off the baseline. */
245
+ .pw-packages__origins {
246
+ display: flex;
247
+ align-items: center;
248
+ gap: 0.375rem;
249
+ flex-wrap: wrap;
250
+ margin-left: auto;
251
+ margin-bottom: 0.4rem;
252
+ }
253
+ .pw-packages__origin-chip {
254
+ display: inline-flex;
255
+ align-items: center;
256
+ gap: 0.375rem;
257
+ border: 1px solid var(--pw-packages-border-strong);
258
+ background: var(--pw-packages-fill);
259
+ color: var(--pw-packages-muted);
260
+ border-radius: var(--studio-radius-round, 9999px);
261
+ padding: 0.2rem 0.625rem;
262
+ font: inherit;
263
+ font-size: 0.75rem;
264
+ cursor: pointer;
265
+ transition: background var(--studio-transition-fast, 0.1s ease);
266
+ }
267
+ .pw-packages__origin-chip:hover {
268
+ background: var(--pw-packages-raise);
269
+ }
270
+ .pw-packages__origin-count {
271
+ font-variant-numeric: tabular-nums;
272
+ font-size: 0.6875rem;
273
+ color: var(--pw-packages-faint);
274
+ }
275
+ /* Active chip is a quiet neutral pill — the header stays accent-free so the
276
+ Install button is the only colored thing. Origin *colors* still live on the
277
+ cards (badges/dots/stripes), where they encode state. */
278
+ .pw-packages__origin-chip[data-active] {
279
+ border-color: transparent;
280
+ font-weight: 600;
281
+ color: var(--pw-packages-line);
282
+ background: var(--pw-packages-raise-2);
283
+ }
284
+ .pw-packages__origin-chip[data-active] .pw-packages__origin-count {
285
+ color: inherit;
286
+ opacity: 0.7;
287
+ }
288
+
289
+ /* ---- shared: origin badge + copyable + source line + plugin row ---- */
290
+
291
+ .pw-packages__origin {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ padding: 0.075rem 0.45rem;
295
+ border-radius: var(--studio-radius-round, 9999px);
296
+ font-size: 0.6875rem;
297
+ font-weight: 600;
298
+ letter-spacing: 0.01em;
299
+ background: var(--pw-packages-core-fill);
300
+ color: var(--pw-packages-core-text);
301
+ white-space: nowrap;
302
+ }
303
+ .pw-packages__origin[data-origin="installed"] {
304
+ background: var(--pw-packages-installed-fill);
305
+ color: var(--pw-packages-installed-text);
306
+ }
307
+ .pw-packages__origin[data-origin="ephemeral"] {
308
+ background: var(--pw-packages-ephemeral-fill);
309
+ color: var(--pw-packages-ephemeral-text);
310
+ }
311
+ .pw-packages__origin[data-origin="unknown"] {
312
+ background: var(--pw-packages-unknown-fill);
313
+ color: var(--pw-packages-unknown-text);
314
+ }
315
+
316
+ .pw-packages__unlisted {
317
+ display: inline-flex;
318
+ align-items: center;
319
+ padding: 0.05rem 0.4rem;
320
+ border-radius: var(--studio-radius-sm, 4px);
321
+ font-size: 0.6875rem;
322
+ font-weight: 550;
323
+ letter-spacing: 0.01em;
324
+ color: var(--pw-packages-muted);
325
+ background: transparent;
326
+ border: 1px dashed var(--pw-packages-border-strong);
327
+ white-space: nowrap;
328
+ }
329
+
330
+ /* Unlisted plugins are hidden from pickers, so their names recede toward the
331
+ canvas. --pw-packages-faint is the tool's most recessed ink tier (line→fill
332
+ 62%), derived from --editor-line/--editor-fill; the same color used for
333
+ "no import url" and plugin counts. */
334
+ .pw-plugin__name.is-unlisted,
335
+ .pw-regitem__name.is-unlisted,
336
+ .pw-table__name.is-unlisted,
337
+ .pw-install__plugin-name.is-unlisted {
338
+ color: var(--pw-packages-faint);
339
+ }
340
+
341
+ .pw-packages__copy {
342
+ font-family: var(--pw-packages-family-code);
343
+ font-size: 0.75rem;
344
+ color: var(--pw-packages-muted);
345
+ cursor: pointer;
346
+ border-radius: 3px;
347
+ padding: 0.05rem 0.2rem;
348
+ margin: -0.05rem -0.2rem;
349
+ transition: color var(--studio-transition-fast, 0.1s ease),
350
+ background var(--studio-transition-fast, 0.1s ease);
351
+ word-break: break-all;
352
+ }
353
+ .pw-packages__copy:hover {
354
+ background: var(--pw-packages-raise-2);
355
+ color: var(--pw-packages-line);
356
+ }
357
+ .pw-packages__copy.is-copied {
358
+ color: var(--pw-packages-accent-text);
359
+ background: var(--pw-packages-accent-fill);
360
+ }
361
+
362
+ .pw-source {
363
+ display: flex;
364
+ align-items: baseline;
365
+ gap: 0.5rem;
366
+ min-width: 0;
367
+ }
368
+ .pw-source__lines {
369
+ display: flex;
370
+ flex-direction: column;
371
+ align-items: flex-start;
372
+ gap: 0.2rem;
373
+ min-width: 0;
374
+ }
375
+ .pw-source__url {
376
+ min-width: 0;
377
+ }
378
+ .pw-source__heads {
379
+ font-size: 0.6875rem;
380
+ color: var(--pw-packages-faint);
381
+ }
382
+ .pw-source__none {
383
+ font-size: 0.75rem;
384
+ font-style: italic;
385
+ color: var(--pw-packages-faint);
386
+ }
387
+
388
+ /* right-aligned open / delete actions (cards, registries, table) */
389
+ .pw-actions {
390
+ display: inline-flex;
391
+ align-items: center;
392
+ gap: 0.375rem;
393
+ margin-left: auto;
394
+ flex-shrink: 0;
395
+ }
396
+ .pw-actions__btn {
397
+ border: 1px solid var(--pw-packages-border-strong);
398
+ background: var(--pw-packages-raise);
399
+ color: var(--pw-packages-muted);
400
+ border-radius: var(--studio-radius-sm, 4px);
401
+ font: inherit;
402
+ font-size: 0.6875rem;
403
+ padding: 0.15rem 0.55rem;
404
+ cursor: pointer;
405
+ transition: background var(--studio-transition-fast, 0.1s ease),
406
+ color var(--studio-transition-fast, 0.1s ease),
407
+ border-color var(--studio-transition-fast, 0.1s ease);
408
+ }
409
+ .pw-actions__btn:hover {
410
+ background: var(--pw-packages-raise-2);
411
+ color: var(--pw-packages-line);
412
+ }
413
+ .pw-actions__btn--danger:hover {
414
+ background: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 84%);
415
+ border-color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 55%);
416
+ color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 25%);
417
+ }
418
+
419
+ .pw-plugins {
420
+ list-style: none;
421
+ margin: 0;
422
+ padding: 0;
423
+ display: flex;
424
+ flex-direction: column;
425
+ gap: 0.2rem;
426
+ }
427
+ .pw-plugin {
428
+ display: flex;
429
+ align-items: baseline;
430
+ gap: 0.5rem;
431
+ padding: 0.4rem 0;
432
+ flex-wrap: wrap;
433
+ }
434
+ .pw-plugin__dot {
435
+ align-self: center;
436
+ width: 0.4rem;
437
+ height: 0.4rem;
438
+ border-radius: 9999px;
439
+ flex-shrink: 0;
440
+ background: var(--pw-packages-core);
441
+ }
442
+ .pw-plugin__dot[data-origin="installed"] {
443
+ background: var(--pw-packages-installed);
444
+ }
445
+ .pw-plugin__dot[data-origin="ephemeral"] {
446
+ background: var(--pw-packages-ephemeral);
447
+ }
448
+ .pw-plugin__dot[data-origin="unknown"] {
449
+ background: var(--pw-packages-unknown);
450
+ }
451
+ .pw-plugin__name {
452
+ font-weight: 550;
453
+ }
454
+ .pw-plugin__type {
455
+ font-size: 0.6875rem;
456
+ color: var(--pw-packages-muted);
457
+ background: var(--pw-packages-raise-2);
458
+ border-radius: var(--studio-radius-sm, 4px);
459
+ padding: 0.05rem 0.4rem;
460
+ }
461
+ .pw-plugin__id {
462
+ margin-left: auto;
463
+ }
464
+ .pw-plugin__supports {
465
+ flex-basis: 100%;
466
+ font-size: 0.75rem;
467
+ color: var(--pw-packages-muted);
468
+ font-family: var(--pw-packages-family-code);
469
+ }
470
+ .pw-plugin__supports-label {
471
+ text-transform: uppercase;
472
+ letter-spacing: 0.05em;
473
+ font-size: 0.625rem;
474
+ font-family: var(--pw-packages-family);
475
+ color: var(--pw-packages-faint);
476
+ }
477
+
478
+ /* ---- view: by package (cards) ---- */
479
+
480
+ .pw-cards {
481
+ list-style: none;
482
+ margin: 0;
483
+ padding: 1.25rem;
484
+ display: flex;
485
+ flex-direction: column;
486
+ gap: 1rem;
487
+ }
488
+ .pw-card {
489
+ display: flex;
490
+ flex-direction: column;
491
+ gap: 0.75rem;
492
+ padding: 1.25rem 1.375rem;
493
+ background: var(--pw-packages-fill);
494
+ }
495
+ .pw-card__source {
496
+ display: flex;
497
+ min-width: 0;
498
+ }
499
+ .pw-card__foot {
500
+ display: flex;
501
+ justify-content: flex-end;
502
+ align-items: center;
503
+ padding-top: 0.65rem;
504
+ border-top: 1px solid var(--pw-packages-border);
505
+ }
506
+
507
+ /* show-more toggle, valid inside the plugin/registry <ul>s */
508
+ .pw-more {
509
+ list-style: none;
510
+ padding: 0.15rem 0 0.1rem;
511
+ }
512
+ .pw-more__btn {
513
+ border: 0;
514
+ background: none;
515
+ padding: 0.1rem 0;
516
+ font: inherit;
517
+ font-size: 0.75rem;
518
+ color: var(--pw-packages-muted);
519
+ cursor: pointer;
520
+ border-bottom: 1px dashed var(--pw-packages-border-strong);
521
+ }
522
+ .pw-more__btn:hover {
523
+ color: var(--pw-packages-accent-text);
524
+ border-bottom-color: currentColor;
525
+ }
526
+ .pw-card__head {
527
+ display: flex;
528
+ align-items: baseline;
529
+ justify-content: space-between;
530
+ gap: 0.5rem;
531
+ flex-wrap: wrap;
532
+ }
533
+ .pw-card__name {
534
+ margin: 0;
535
+ font-size: 1.0625rem;
536
+ font-weight: 650;
537
+ letter-spacing: -0.01em;
538
+ word-break: break-word;
539
+ }
540
+ .pw-card__badges {
541
+ display: flex;
542
+ align-items: center;
543
+ gap: 0.4rem;
544
+ flex-wrap: wrap;
545
+ }
546
+ .pw-card__version {
547
+ font-size: 0.6875rem;
548
+ font-family: var(--pw-packages-family-code);
549
+ color: var(--pw-packages-muted);
550
+ }
551
+ .pw-card__count {
552
+ font-size: 0.6875rem;
553
+ color: var(--pw-packages-faint);
554
+ }
555
+ .pw-card__pkgname {
556
+ font-size: 0.75rem;
557
+ font-family: var(--pw-packages-family-code);
558
+ color: var(--pw-packages-faint);
559
+ margin-top: -0.25rem;
560
+ }
561
+
562
+ /* ---- view: by registry ---- */
563
+
564
+ .pw-registries {
565
+ display: flex;
566
+ flex-direction: column;
567
+ gap: 1rem;
568
+ padding: 1rem;
569
+ }
570
+ .pw-registry {
571
+ border-bottom: 1px solid var(--pw-packages-border);
572
+ }
573
+ .pw-registry__head {
574
+ display: flex;
575
+ align-items: center;
576
+ gap: 0.5rem;
577
+ padding: 0.5rem 0.875rem;
578
+ background: color-mix(
579
+ in oklch,
580
+ var(--studio-secondary, #33ccf8),
581
+ var(--pw-packages-fill) 94%
582
+ );
583
+ border-bottom: 1px solid var(--pw-packages-border);
584
+ }
585
+ .pw-registry__name {
586
+ margin: 0;
587
+ font-size: 0.9375rem;
588
+ font-weight: 650;
589
+ font-family: var(--pw-packages-family-code);
590
+ }
591
+ .pw-registry__count {
592
+ font-size: 0.75rem;
593
+ color: var(--pw-packages-muted);
594
+ background: var(--pw-packages-fill);
595
+ border: 1px solid var(--pw-packages-border);
596
+ border-radius: var(--studio-radius-round, 9999px);
597
+ padding: 0 0.5rem;
598
+ font-variant-numeric: tabular-nums;
599
+ }
600
+ .pw-reglist {
601
+ list-style: none;
602
+ margin: 0;
603
+ padding: 0;
604
+ }
605
+ .pw-regitem {
606
+ display: flex;
607
+ flex-direction: column;
608
+ gap: 0.3rem;
609
+ padding: 0.55rem 0.875rem;
610
+ border-left: 3px solid transparent;
611
+ }
612
+ .pw-regitem + .pw-regitem {
613
+ border-top: 1px solid var(--pw-packages-border);
614
+ }
615
+ .pw-regitem[data-origin="installed"] {
616
+ border-left-color: var(--pw-packages-installed);
617
+ }
618
+ .pw-regitem[data-origin="ephemeral"] {
619
+ border-left-color: var(--pw-packages-ephemeral);
620
+ }
621
+ .pw-regitem[data-origin="unknown"] {
622
+ border-left-color: var(--pw-packages-unknown);
623
+ }
624
+ .pw-regitem__main {
625
+ display: flex;
626
+ align-items: baseline;
627
+ gap: 0.5rem;
628
+ flex-wrap: wrap;
629
+ }
630
+ .pw-regitem__name {
631
+ font-weight: 550;
632
+ }
633
+ .pw-regitem__supports {
634
+ font-size: 0.75rem;
635
+ color: var(--pw-packages-muted);
636
+ font-family: var(--pw-packages-family-code);
637
+ }
638
+ .pw-regitem__source {
639
+ display: flex;
640
+ align-items: baseline;
641
+ gap: 0.5rem;
642
+ flex-wrap: wrap;
643
+ color: var(--pw-packages-faint);
644
+ }
645
+ .pw-regitem__pkg {
646
+ font-size: 0.6875rem;
647
+ color: var(--pw-packages-muted);
648
+ }
649
+
650
+ /* ---- view: table ---- */
651
+
652
+ .pw-table-wrap {
653
+ padding: 1rem;
654
+ overflow-x: auto;
655
+ }
656
+ .pw-table {
657
+ width: 100%;
658
+ border-collapse: collapse;
659
+ font-size: 0.8125rem;
660
+ }
661
+ .pw-table__th {
662
+ text-align: left;
663
+ padding: 0.4rem 0.6rem;
664
+ border-bottom: 2px solid var(--pw-packages-border-strong);
665
+ color: var(--pw-packages-muted);
666
+ font-weight: 600;
667
+ white-space: nowrap;
668
+ cursor: pointer;
669
+ user-select: none;
670
+ }
671
+ .pw-table__th--plain {
672
+ cursor: default;
673
+ }
674
+ .pw-table__th[data-sorted] {
675
+ color: var(--pw-packages-line);
676
+ }
677
+ .pw-table__arrow {
678
+ font-size: 0.625rem;
679
+ margin-left: 0.25rem;
680
+ }
681
+ .pw-table__row {
682
+ border-bottom: 1px solid var(--pw-packages-border);
683
+ }
684
+ .pw-table__row:hover {
685
+ background: var(--pw-packages-raise);
686
+ }
687
+ .pw-table td {
688
+ padding: 0.4rem 0.6rem;
689
+ vertical-align: baseline;
690
+ }
691
+ .pw-table__name {
692
+ font-weight: 550;
693
+ }
694
+ .pw-table__supports {
695
+ display: block;
696
+ font-size: 0.6875rem;
697
+ color: var(--pw-packages-faint);
698
+ font-family: var(--pw-packages-family-code);
699
+ }
700
+ .pw-table__reg,
701
+ .pw-table__pkg {
702
+ font-family: var(--pw-packages-family-code);
703
+ font-size: 0.75rem;
704
+ color: var(--pw-packages-muted);
705
+ }
706
+ /* Keep the id on one line (the table scrolls) instead of breaking per-character. */
707
+ .pw-table__id {
708
+ white-space: nowrap;
709
+ }
710
+ .pw-table__flag {
711
+ text-align: center;
712
+ color: var(--pw-packages-muted);
713
+ }
714
+ .pw-table__url {
715
+ max-width: 22rem;
716
+ }
717
+
718
+ /* ---- broken modules ---- */
719
+
720
+ .pw-package-notices {
721
+ display: flex;
722
+ flex-direction: column;
723
+ gap: 0.5rem;
724
+ padding: 1rem 1.25rem 0;
725
+ }
726
+ .pw-package-notice {
727
+ display: flex;
728
+ align-items: baseline;
729
+ gap: 0.5rem;
730
+ flex-wrap: wrap;
731
+ border: 1px solid var(--pw-packages-border-strong);
732
+ border-left: 3px solid var(--pw-packages-unknown);
733
+ border-radius: var(--studio-radius-md, 8px);
734
+ background: var(--pw-packages-unknown-fill);
735
+ padding: 0.625rem 0.75rem;
736
+ color: var(--pw-packages-unknown-text);
737
+ font-size: 0.8125rem;
738
+ }
739
+ .pw-package-notice__url {
740
+ max-width: 100%;
741
+ }
742
+
743
+ .pw-broken {
744
+ display: flex;
745
+ flex-direction: column;
746
+ gap: 0.75rem;
747
+ padding: 1rem 1.25rem 0;
748
+ }
749
+ .pw-broken__box {
750
+ border: 1px solid
751
+ color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-fill) 45%);
752
+ border-left: 3px solid var(--pw-packages-danger);
753
+ border-radius: var(--studio-radius-md, 8px);
754
+ background: color-mix(
755
+ in oklch,
756
+ var(--pw-packages-danger),
757
+ var(--pw-packages-fill) 88%
758
+ );
759
+ padding: 0.75rem 0.875rem;
760
+ }
761
+ .pw-broken__head {
762
+ display: flex;
763
+ align-items: center;
764
+ gap: 0.5rem;
765
+ flex-wrap: wrap;
766
+ }
767
+ .pw-broken__label {
768
+ font-size: 0.75rem;
769
+ font-weight: 650;
770
+ text-transform: uppercase;
771
+ letter-spacing: 0.04em;
772
+ color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 30%);
773
+ }
774
+ .pw-broken__name {
775
+ font-size: 0.8125rem;
776
+ font-weight: 600;
777
+ color: color-mix(in oklch, var(--pw-packages-danger), var(--pw-packages-line) 45%);
778
+ word-break: break-word;
779
+ }
780
+ .pw-broken__url {
781
+ min-width: 0;
782
+ }
783
+ .pw-broken__plugins {
784
+ margin: 0.6rem 0 0;
785
+ }
786
+ .pw-broken__trace {
787
+ margin: 0.6rem 0 0;
788
+ padding: 0.55rem 0.7rem;
789
+ background: color-mix(in oklch, var(--pw-packages-line), transparent 92%);
790
+ border-radius: var(--studio-radius-sm, 4px);
791
+ font-family: var(--pw-packages-family-code);
792
+ font-size: 0.6875rem;
793
+ line-height: 1.5;
794
+ color: var(--pw-packages-line);
795
+ white-space: pre-wrap;
796
+ word-break: break-word;
797
+ overflow: auto;
798
+ max-height: 16rem;
799
+ }
800
+
801
+ /* ---- empty ---- */
802
+
803
+ .pw-packages__empty {
804
+ padding: 3rem 1rem;
805
+ text-align: center;
806
+ color: var(--pw-packages-muted);
807
+ }
808
+
809
+ @container (max-width: 560px) {
810
+ .pw-cards {
811
+ padding: 0.875rem;
812
+ }
813
+ .pw-card {
814
+ padding: 1rem 1.05rem;
815
+ }
816
+ .pw-plugin__id {
817
+ margin-left: 0;
818
+ }
819
+ }
820
+
821
+ /* ---- install modal ---- */
822
+
823
+ .pw-modal {
824
+ position: fixed;
825
+ inset: 0;
826
+ z-index: 50;
827
+ display: flex;
828
+ align-items: flex-start;
829
+ justify-content: center;
830
+ padding: max(6vh, 2rem) 1rem 2rem;
831
+ background: color-mix(in oklch, var(--pw-packages-line), transparent 55%);
832
+ backdrop-filter: blur(2px);
833
+ overflow-y: auto;
834
+ }
835
+ .pw-install {
836
+ width: min(34rem, 100%);
837
+ display: flex;
838
+ flex-direction: column;
839
+ gap: 0.75rem;
840
+ padding: 1.25rem 1.375rem 1.125rem;
841
+ background: var(--pw-packages-fill);
842
+ color: var(--pw-packages-line);
843
+ border: 1px solid var(--pw-packages-border-strong);
844
+ border-radius: var(--studio-radius-lg, 12px);
845
+ box-shadow: 0 12px 40px color-mix(in oklch, var(--pw-packages-line), transparent 78%);
846
+ }
847
+ .pw-install__head {
848
+ display: flex;
849
+ align-items: center;
850
+ justify-content: space-between;
851
+ gap: 0.75rem;
852
+ }
853
+ .pw-install__title {
854
+ margin: 0;
855
+ font-size: 1.0625rem;
856
+ font-weight: 650;
857
+ letter-spacing: -0.01em;
858
+ }
859
+ .pw-install__close {
860
+ border: 0;
861
+ background: none;
862
+ color: var(--pw-packages-muted);
863
+ font-size: 1.25rem;
864
+ line-height: 1;
865
+ padding: 0.1rem 0.3rem;
866
+ cursor: pointer;
867
+ border-radius: var(--studio-radius-sm, 4px);
868
+ }
869
+ .pw-install__close:hover {
870
+ background: var(--pw-packages-raise-2);
871
+ color: var(--pw-packages-line);
872
+ }
873
+ .pw-install__blurb {
874
+ margin: 0;
875
+ font-size: 0.8125rem;
876
+ color: var(--pw-packages-muted);
877
+ }
878
+ .pw-install__blurb code {
879
+ font-family: var(--pw-packages-family-code);
880
+ font-size: 0.75rem;
881
+ }
882
+ .pw-install__input {
883
+ width: 100%;
884
+ border: 1px solid var(--pw-packages-border-strong);
885
+ border-radius: var(--studio-radius-sm, 4px);
886
+ background: var(--pw-packages-fill);
887
+ color: var(--pw-packages-line);
888
+ font: inherit;
889
+ font-family: var(--pw-packages-family-code);
890
+ font-size: 0.8125rem;
891
+ padding: 0.5rem 0.625rem;
892
+ }
893
+ .pw-install__input:focus {
894
+ outline: 2px solid var(--pw-packages-focus);
895
+ outline-offset: 1px;
896
+ }
897
+ .pw-install__preview {
898
+ display: flex;
899
+ flex-direction: column;
900
+ gap: 0.5rem;
901
+ }
902
+ .pw-install__error {
903
+ font-size: 0.8125rem;
904
+ color: var(--pw-packages-unknown-text);
905
+ background: var(--pw-packages-unknown-fill);
906
+ border-radius: var(--studio-radius-sm, 4px);
907
+ padding: 0.4rem 0.6rem;
908
+ }
909
+ .pw-install__loading {
910
+ font-size: 0.8125rem;
911
+ color: var(--pw-packages-muted);
912
+ }
913
+ .pw-install__card {
914
+ display: flex;
915
+ flex-direction: column;
916
+ gap: 0.6rem;
917
+ padding: 0.875rem 1rem;
918
+ background: var(--pw-packages-fill);
919
+ }
920
+ .pw-install__card-head {
921
+ display: flex;
922
+ align-items: baseline;
923
+ gap: 0.5rem;
924
+ flex-wrap: wrap;
925
+ }
926
+ .pw-install__pkg {
927
+ margin: 0;
928
+ font-size: 1rem;
929
+ font-weight: 650;
930
+ word-break: break-word;
931
+ }
932
+ .pw-install__version {
933
+ font-size: 0.6875rem;
934
+ font-family: var(--pw-packages-family-code);
935
+ color: var(--pw-packages-muted);
936
+ }
937
+ .pw-install__none {
938
+ font-size: 0.8125rem;
939
+ font-style: italic;
940
+ color: var(--pw-packages-faint);
941
+ }
942
+ .pw-install__plugins {
943
+ list-style: none;
944
+ margin: 0;
945
+ padding: 0;
946
+ display: flex;
947
+ flex-direction: column;
948
+ gap: 0.3rem;
949
+ }
950
+ .pw-install__plugin {
951
+ display: flex;
952
+ align-items: baseline;
953
+ gap: 0.5rem;
954
+ flex-wrap: wrap;
955
+ }
956
+ .pw-install__plugin-name {
957
+ font-weight: 550;
958
+ }
959
+ .pw-install__plugin-supports {
960
+ font-size: 0.75rem;
961
+ color: var(--pw-packages-muted);
962
+ font-family: var(--pw-packages-family-code);
963
+ }
964
+ .pw-install__foot {
965
+ display: flex;
966
+ align-items: center;
967
+ justify-content: flex-end;
968
+ gap: 0.5rem;
969
+ flex-wrap: wrap;
970
+ }
971
+ .pw-install__already {
972
+ margin-right: auto;
973
+ font-size: 0.75rem;
974
+ color: var(--pw-packages-muted);
975
+ }
976
+ .pw-install__cancel {
977
+ border: 1px solid var(--pw-packages-border-strong);
978
+ background: var(--pw-packages-fill);
979
+ color: var(--pw-packages-muted);
980
+ border-radius: 999px;
981
+ font: inherit;
982
+ font-size: 0.8125rem;
983
+ padding: 0.45rem 0.9rem;
984
+ cursor: pointer;
985
+ }
986
+ .pw-install__cancel:hover {
987
+ background: var(--pw-packages-raise);
988
+ color: var(--pw-packages-line);
989
+ }
990
+ .pw-install__add {
991
+ border: 1px solid
992
+ color-mix(in oklch, var(--pw-packages-accent), var(--pw-packages-line) 12%);
993
+ background: color-mix(
994
+ in oklch,
995
+ var(--pw-packages-accent),
996
+ var(--pw-packages-fill) 46%
997
+ );
998
+ color: color-mix(in oklch, var(--pw-packages-accent), var(--pw-packages-line) 58%);
999
+ border-radius: 999px;
1000
+ font: inherit;
1001
+ font-size: 0.8125rem;
1002
+ font-weight: 650;
1003
+ padding: 0.45rem 1.05rem;
1004
+ cursor: pointer;
1005
+ box-shadow: 0 2px 6px
1006
+ color-mix(in oklch, var(--pw-packages-accent), transparent 74%);
1007
+ transition: background var(--studio-transition-fast, 0.1s ease),
1008
+ box-shadow var(--studio-transition-fast, 0.1s ease);
1009
+ }
1010
+ .pw-install__add:hover:not(:disabled) {
1011
+ background: color-mix(
1012
+ in oklch,
1013
+ var(--pw-packages-accent),
1014
+ var(--pw-packages-fill) 30%
1015
+ );
1016
+ }
1017
+ .pw-install__add:disabled {
1018
+ opacity: 0.5;
1019
+ cursor: not-allowed;
1020
+ box-shadow: none;
1021
+ }`));
7
1022
  document.head.appendChild(elementStyle);
8
1023
  }
9
1024
  } catch (e) {
@@ -105,7 +1120,7 @@ const plugins = [{
105
1120
  } = await __vitePreload(async () => {
106
1121
  const {
107
1122
  mount: mount2
108
- } = await import("./assets/mount-Bop__7hB.js");
1123
+ } = await import("./assets/mount-DiYNUdeB.js");
109
1124
  return {
110
1125
  mount: mount2
111
1126
  };