@realiizlabs/admin 0.15.5 → 0.15.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Sidebar-Bo6ANnEY.d.cts → Sidebar-Cx9bvOYi.d.cts} +3 -1
- package/dist/{Sidebar-Bo6ANnEY.d.ts → Sidebar-Cx9bvOYi.d.ts} +3 -1
- package/dist/shell/index.cjs +14 -8
- package/dist/shell/index.cjs.map +1 -1
- package/dist/shell/index.d.cts +5 -4
- package/dist/shell/index.d.ts +5 -4
- package/dist/shell/index.js +14 -8
- package/dist/shell/index.js.map +1 -1
- package/dist/studio/index.cjs +14 -2
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.d.cts +16 -1
- package/dist/studio/index.d.ts +16 -1
- package/dist/studio/index.js +14 -2
- package/dist/studio/index.js.map +1 -1
- package/dist/studio-ui/index.cjs +83 -30
- package/dist/studio-ui/index.cjs.map +1 -1
- package/dist/studio-ui/index.d.cts +14 -4
- package/dist/studio-ui/index.d.ts +14 -4
- package/dist/studio-ui/index.js +83 -30
- package/dist/studio-ui/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { C as ContentTypeEntry } from '../types-DeHdasdP.cjs';
|
|
4
4
|
import { c as SiteBranding, d as SiteMember } from '../members-nhbRSYyr.cjs';
|
|
5
|
-
import { S as ShellUser, N as NavItem } from '../Sidebar-
|
|
5
|
+
import { S as ShellUser, N as NavItem } from '../Sidebar-Cx9bvOYi.cjs';
|
|
6
6
|
import { a as PullRequestStatus } from '../types-BP5G1myE.cjs';
|
|
7
7
|
export { A as ADMIN_VERSION } from '../version-DMS0azUx.cjs';
|
|
8
8
|
import 'zod';
|
|
@@ -80,8 +80,18 @@ interface StudioUpdate {
|
|
|
80
80
|
notes: string | null;
|
|
81
81
|
}
|
|
82
82
|
/** Exactly what a site's "use server" wrapper file must export. */
|
|
83
|
+
type NudgeOutcome = {
|
|
84
|
+
state: "sent";
|
|
85
|
+
} | {
|
|
86
|
+
state: "unavailable";
|
|
87
|
+
} | {
|
|
88
|
+
state: "error";
|
|
89
|
+
message: string;
|
|
90
|
+
};
|
|
83
91
|
interface StudioActions {
|
|
84
92
|
updateStudio: (number: number) => Promise<MergeOutcome>;
|
|
93
|
+
/** Optional wrapper (sites on older templates may lack it): ask the host to build main again. */
|
|
94
|
+
nudgeBuild?: () => Promise<NudgeOutcome>;
|
|
85
95
|
publishContent: (input: PublishInput) => Promise<PublishResult | never>;
|
|
86
96
|
removeContent: (input: {
|
|
87
97
|
type: string;
|
|
@@ -138,7 +148,7 @@ interface StudioActions {
|
|
|
138
148
|
userId: string;
|
|
139
149
|
}) => Promise<ActionResult>;
|
|
140
150
|
}
|
|
141
|
-
declare const ACTION_NAMES: readonly ["updateStudio", "publishContent", "removeContent", "mergeContentPr", "discardChange", "previewBody", "saveProfile", "saveAvatar", "changePassword", "loadBranding", "saveBranding", "saveBrandingPicture", "loadMe", "loadTeam", "invite", "changeRole", "resend", "remove"];
|
|
151
|
+
declare const ACTION_NAMES: readonly ["updateStudio", "nudgeBuild", "publishContent", "removeContent", "mergeContentPr", "discardChange", "previewBody", "saveProfile", "saveAvatar", "changePassword", "loadBranding", "saveBranding", "saveBrandingPicture", "loadMe", "loadTeam", "invite", "changeRole", "resend", "remove"];
|
|
142
152
|
/** One row of a content list, as the site page loads it from Studio.readers.listItems. */
|
|
143
153
|
interface ListRow {
|
|
144
154
|
slug: string;
|
|
@@ -382,7 +392,7 @@ declare function copyFor(entry: Pick<ContentTypeEntry, "id" | "label" | "singula
|
|
|
382
392
|
};
|
|
383
393
|
|
|
384
394
|
/** Studio's page styles (lists, account tabs, drop zones) — injected once by StudioShellFrame. */
|
|
385
|
-
declare const STUDIO_CSS = "\n/*\n * /admin \u2014 overrides only. Layout, color and components come from\n * @realiizlabs/admin/shell (SHELL_CSS, injected by AdminShell). The Realiiz\n * palette is the package default, so this file just maps the shell's font\n * hooks onto the site's loaded fonts. To rebrand, redeclare tokens here:\n * .rz-admin { --signal: #0a58ca; }\n */\n.rz-admin {\n --rz-font: var(--font-inter), system-ui, sans-serif;\n --rz-font-display: var(--font-space-grotesk), system-ui, sans-serif;\n --rz-font-mono: var(--font-jetbrains-mono), ui-monospace, monospace;\n}\n\n/* Posts table: one wide column for the post (title, slug beneath in small mono) and\n tight fixed columns for the known-width bits. Nothing wraps; the title and slug end in\n an ellipsis with the full text as tooltip. The title opens the live post; the outbound\n arrow sits inline after it and appears on hover (the shell's a:hover .rz-arrow motion). */\n.rz-admin .rz-table--posts { table-layout: fixed; width: 100%; }\n.rz-admin .rz-table--posts td, .rz-admin .rz-table--posts th { white-space: nowrap; overflow: hidden; }\n.rz-admin .rz-col-title { width: auto; }\n.rz-admin .rz-col-date { width: 7.5rem; }\n.rz-admin .rz-col-status { width: 11.5rem; }\n.rz-admin .rz-col-actions { width: 8.5rem; }\n.rz-admin .rz-title-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.rz-admin .rz-slug { font-family: var(--rz-font-mono); font-size: .78rem; margin-top: .2rem; }\n.rz-admin [data-slugs=\"off\"] .rz-slug { display: none; }\n.rz-admin .rz-toolbar { display: flex; justify-content: flex-end; margin: 0 0 .6rem; }\n.rz-admin .rz-switch { display: inline-flex; align-items: center; gap: .55rem; font-size: .8rem; color: var(--text-secondary); cursor: pointer; user-select: none; }\n.rz-admin .rz-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }\n.rz-admin .rz-switch__track { position: relative; width: 30px; height: 18px; border-radius: 999px; background: var(--surface-3); transition: background .15s; }\n.rz-admin .rz-switch__thumb { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }\n.rz-admin .rz-switch input:checked + .rz-switch__track { background: var(--signal); }\n.rz-admin .rz-switch input:checked + .rz-switch__track .rz-switch__thumb { transform: translateX(12px); }\n.rz-admin .rz-switch input:focus-visible + .rz-switch__track { outline: 2px solid var(--signal); outline-offset: 2px; }\n.rz-admin .rz-switch:hover .rz-switch__label { color: var(--text-primary); }\n.rz-admin .rz-title-link { display: flex; align-items: center; gap: .35em; max-width: 100%; color: inherit; text-decoration: none; }\n.rz-admin .rz-title-link .rz-arrow { opacity: 0; }\n.rz-admin .rz-title-link:hover { color: var(--signal); }\n.rz-admin .rz-title-link:hover .rz-arrow { opacity: 1; }\n/* Phones: the four columns can't share the width, so each row becomes a small card \u2014\n the title on its own line (wrapping to two), the address under it, then date \u00B7 status \u00B7\n actions on one row. Same markup; only the display changes. */\n@media (max-width: 720px) {\n .rz-admin .rz-table--posts, .rz-admin .rz-table--posts tbody { display: block; }\n .rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }\n .rz-admin .rz-table--posts tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; padding: .8rem .9rem; border-bottom: 1px solid var(--separator); }\n .rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }\n .rz-admin .rz-table--posts td { display: block; padding: 0; border: 0; white-space: normal; overflow: visible; }\n .rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; }\n .rz-admin .rz-table--posts .rz-title-cell .rz-title-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-weight: 500; color: var(--text-primary); }\n .rz-admin .rz-table--posts .rz-title-link { display: inline; }\n .rz-admin .rz-table--posts .rz-slug { font-weight: 400; color: var(--text-muted); overflow-wrap: anywhere; -webkit-line-clamp: 1; }\n .rz-admin .rz-table--posts td.rz-fit { font-size: .85rem; }\n .rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }\n}\n\n/* Dashboard card for a section that isn't built yet: the real card, faded, buttons disabled. */\n/* Account page (05b): tracker-style \u2014 H1, email, underlined tabs, stacked form cards. */\n.rz-admin .acct-h1 { font-size: 1.25rem; font-weight: 600; margin: 0 0 .25rem; color: var(--text-primary); }\n.rz-admin .acct-email { font-size: .875rem; color: var(--text-muted); margin: 0 0 1.25rem; }\n.rz-admin .acct-stack { display: flex; flex-direction: column; gap: 1rem; max-width: 560px; }\n.rz-admin .acct-stack:has(.acct-team) { max-width: none; }\n.rz-admin .acct-card { display: flex; flex-direction: column; gap: .9rem; }\n.rz-admin .acct-title { font-size: 1rem; font-weight: 600; margin: 0; color: var(--text-primary); }\n.rz-admin .acct-blurb { font-size: .875rem; color: var(--text-secondary); margin: -.4rem 0 0; line-height: 1.5; }\n.rz-admin .acct-blurb--link { margin-top: .6rem; }\n.rz-admin .acct-blurb a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }\n.rz-admin .acct-blurb a:hover { color: var(--text-primary); }\n.rz-admin .acct-field { display: flex; flex-direction: column; gap: .35rem; }\n.rz-admin .acct-label { font-size: .85rem; font-weight: 500; color: var(--text-primary); }\n.rz-admin .acct-hint { font-size: .78rem; color: var(--text-muted); }\n.rz-admin .acct-input { font: inherit; font-size: .9rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 9px 11px; min-height: 40px; width: 100%; }\n.rz-admin .acct-input:read-only { color: var(--text-secondary); background: var(--surface-2); }\n.rz-admin .acct-input:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-select { width: auto; padding-right: 2rem; }\n.rz-admin .acct-select--sm { min-height: 32px; padding: 4px 28px 4px 8px; font-size: .8rem; }\n.rz-admin .acct-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-ok { font-size: .85rem; color: var(--signal); }\n.rz-admin .acct-link { font: inherit; font-size: .82rem; background: none; border: 0; padding: 0; color: var(--text-secondary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-link:hover { color: var(--signal); }\n.rz-admin .acct-link--danger:hover { color: #c0392b; }\n.rz-admin .acct-link:disabled { opacity: .5; cursor: default; }\n.rz-admin .acct-team-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-invite__row { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }\n.rz-admin .acct-invite__row .acct-input[type=\"email\"] { flex: 1 1 220px; width: auto; }\n.rz-admin .acct-person { display: flex; align-items: center; gap: .7rem; }\n.rz-admin .acct-person__avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--surface-3); border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 600; overflow: hidden; flex-shrink: 0; }\n.rz-admin .acct-person__avatar img { width: 100%; height: 100%; object-fit: cover; }\n.rz-admin .acct-person__text { display: flex; flex-direction: column; line-height: 1.25; }\n.rz-admin .acct-person__email { font-size: .78rem; }\n.rz-admin .acct-row-actions { display: flex; gap: .8rem; align-items: center; white-space: nowrap; min-height: 34px; }\n.rz-admin .acct-help-list { margin: 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.7; }\n\n/* Sign-in: the password option under the magic-link form. */\n.rz-admin .pwsi-toggle { margin: 1.1rem 0 0; text-align: center; }\n.rz-admin .pwsi { display: flex; flex-direction: column; gap: .9rem; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--separator); }\n\n/* Password boxes: eye toggle + the requirement checklist that lights up as each rule passes. */\n.rz-admin .acct-pw { position: relative; }\n.rz-admin .acct-pw .acct-input { padding-right: 2.6rem; }\n.rz-admin .acct-pw__eye { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); background: none; border: 0; padding: .35rem; color: var(--text-muted); cursor: pointer; display: inline-flex; border-radius: 4px; }\n.rz-admin .acct-pw__eye:hover, .rz-admin .acct-pw__eye[aria-pressed=\"true\"] { color: var(--text-secondary); }\n.rz-admin .acct-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }\n.rz-admin .acct-rule { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; color: var(--text-muted); transition: color .15s; }\n.rz-admin .acct-rule--met { color: var(--signal); }\n\n/* Picture uploader (avatar, logo, favicon): one grid everywhere \u2014 preview | buttons row, hint under the buttons. */\n.rz-admin .acct-pic { border: 1px dashed var(--border); border-radius: 8px; padding: 16px 18px; background: var(--surface-0); outline: none; transition: border-color .15s; }\n.rz-admin .acct-pic:focus-visible, .rz-admin .acct-pic--over { border-color: var(--signal); border-style: solid; }\n.rz-admin .acct-pic--busy { opacity: .7; }\n.rz-admin .acct-pic__file { display: none; }\n.rz-admin .acct-pic__empty { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; color: var(--text-muted); }\n.rz-admin .acct-pic__fallback { width: 44px; height: 44px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--surface-3); color: var(--text-muted); font-size: .9rem; font-weight: 600; letter-spacing: .04em; }\n.rz-admin .acct-pic__fallback--circle { border-radius: 50%; }\n.rz-admin .acct-pic__or { font-size: .8125rem; }\n.rz-admin .acct-pic__has { display: flex; align-items: flex-start; gap: 16px; }\n.rz-admin .acct-pic__thumb { display: block; width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-3); flex-shrink: 0; }\n.rz-admin .acct-pic__thumb--circle { border-radius: 50%; }\n.rz-admin .acct-pic__meta { display: flex; flex-direction: column; gap: 10px; min-width: 0; }\n.rz-admin .acct-pic__actions { display: flex; align-items: center; gap: 14px; }\n.rz-admin .acct-pic__remove { font: inherit; font-size: .8125rem; background: none; border: 0; padding: 0; color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-pic__remove:hover { color: #c0392b; }\n.rz-admin .acct-pic__remove:disabled { cursor: default; opacity: .6; }\n.rz-admin .acct-pic__hint { margin: 10px 0 0; font-size: .75rem; color: var(--text-muted); line-height: 1.4; }\n.rz-admin .acct-pic__has .acct-pic__hint { margin-top: 0; }\n.rz-admin .acct-pic__note { margin: 8px 0 0; }\n.rz-admin .acct-pic__error { margin: 8px 0 0; font-size: .8rem; color: #c0392b; }\n\n/* Branded dropdown (role pickers): a bordered button that opens the shell's menu, checkmark on the current choice. */\n.rz-admin .acct-dd { position: relative; display: inline-block; }\n.rz-admin .acct-dd__btn { display: inline-flex; align-items: center; gap: .5rem; font: inherit; font-size: .85rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 0 .7rem; height: 34px; cursor: pointer; }\n.rz-admin .acct-dd__btn:hover { border-color: var(--text-muted); }\n.rz-admin .acct-dd__btn:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-dd__btn:disabled { opacity: .6; cursor: default; }\n.rz-admin .acct-dd__menu { left: 0; right: auto; min-width: 15rem; padding: .3rem 0; }\n.rz-admin .acct-dd__item { align-items: flex-start; }\n.rz-admin .acct-dd__check { width: 1rem; flex-shrink: 0; color: var(--signal); font-weight: 700; }\n.rz-admin .acct-dd__text { display: flex; flex-direction: column; line-height: 1.3; }\n.rz-admin .acct-dd__hint { font-size: .74rem; color: var(--text-muted); }\n/* Team table: everything on one center line, and the role menu may overflow the table (the shell\n clips .rz-table for rounded corners, so round the header cells by hand instead). */\n.rz-admin .acct-team { overflow: visible; }\n.rz-admin .acct-team thead th:first-child { border-top-left-radius: 8px; }\n.rz-admin .acct-team thead th:last-child { border-top-right-radius: 8px; }\n.rz-admin .acct-team tbody tr:last-child td { border-bottom: 0; }\n.rz-admin .acct-team td { vertical-align: middle; }\n.rz-admin .acct-team td > * { vertical-align: middle; }\n.rz-admin .acct-team .rz-pill { position: relative; top: 0; }\n.rz-admin .acct-dd__menu { z-index: 60; }\n.rz-admin .acct-invite__row .acct-dd__btn { height: 40px; }\n\n.rz-admin .rz-term { position: relative; display: inline; }\n.rz-admin .rz-term__word { cursor: help; text-decoration: underline dotted; text-underline-offset: 4px; text-decoration-color: color-mix(in srgb, currentColor 50%, transparent); }\n.rz-admin .rz-term__word:hover, .rz-admin .rz-term__word:focus-visible { text-decoration-color: var(--signal); outline: none; }\n.rz-admin .rz-term__tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 70; width: 272px; max-width: 80vw; padding: 12px 14px; border-radius: 8px; background: var(--text-primary); color: var(--surface-0); font-size: .8125rem; line-height: 1.4; font-weight: 400; box-shadow: 0 8px 24px rgba(14,23,38,.18); opacity: 0; pointer-events: none; transition: opacity .15s; }\n.rz-admin .rz-term__tip--open { opacity: 1; }\n\n/* ---- Help center ---------------------------------------------------- */\n.rz-admin .rz-help__search { position: relative; margin: 0 0 1.5rem; max-width: 44rem; }\n.rz-admin .rz-help__search svg { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); color: var(--text-muted); pointer-events: none; }\n.rz-admin .rz-help__search input { width: 100%; padding-left: 2.6rem; font-size: 1rem; }\n.rz-admin .rz-help__body { display: grid; grid-template-columns: 13rem minmax(0, 1fr); gap: 2rem; align-items: start; }\n@media (max-width: 760px) { .rz-admin .rz-help__body { grid-template-columns: 1fr; gap: 1rem; } .rz-admin .rz-help__nav { display: flex; flex-wrap: wrap; gap: .25rem; } }\n.rz-admin .rz-help__nav { position: sticky; top: calc(var(--rz-topbar) + 1rem); display: flex; flex-direction: column; gap: .1rem; }\n.rz-admin .rz-help__navitem { padding: .45rem .75rem; border-radius: 6px; color: var(--text-secondary); text-decoration: none; font-size: .875rem; }\n.rz-admin .rz-help__navitem:hover { background: var(--surface-2); color: var(--text-primary); }\n.rz-admin .rz-help__navitem--active { background: var(--surface-2); color: var(--signal); font-weight: 500; }\n.rz-admin .rz-help__main { max-width: 44rem; min-width: 0; }\n.rz-admin .rz-help__h { font-family: var(--rz-font-display); font-size: 1.5rem; font-weight: 600; letter-spacing: -.01em; margin: 0 0 .35rem; }\n.rz-admin .rz-help__blurb { color: var(--text-secondary); margin: 0 0 1.25rem; }\n.rz-admin .rz-help__count { color: var(--text-muted); font-size: .85rem; margin: 0 0 .75rem; }\n.rz-admin .rz-help__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }\n.rz-admin .rz-help__card { display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--rz-radius); text-decoration: none; color: inherit; transition: border-color .15s; }\n.rz-admin .rz-help__card:hover { border-color: var(--signal); }\n.rz-admin .rz-help__meta { font-family: var(--rz-font-mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); }\n.rz-admin .rz-help__title { font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-help__summary { color: var(--text-secondary); font-size: .9rem; line-height: 1.5; }\n.rz-admin .rz-help__crumb { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--rz-font-mono); font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); text-decoration: none; margin: 0 0 1rem; }\n.rz-admin .rz-help__crumb:hover { color: var(--signal); }\n.rz-admin .rz-help__prose { line-height: 1.65; color: var(--text-primary); }\n.rz-admin .rz-help__prose > * + * { margin-top: .85rem; }\n.rz-admin .rz-help__prose h2 { font-family: var(--rz-font-display); font-size: 1.1rem; font-weight: 600; margin-top: 1.75rem; }\n.rz-admin .rz-help__prose h3 { font-size: .95rem; font-weight: 600; margin-top: 1.25rem; }\n.rz-admin .rz-help__prose p, .rz-admin .rz-help__prose li { color: var(--text-secondary); }\n.rz-admin .rz-help__prose strong { color: var(--text-primary); font-weight: 600; }\n.rz-admin .rz-help__prose ul, .rz-admin .rz-help__prose ol { padding-left: 1.35rem; }\n.rz-admin .rz-help__prose li + li { margin-top: .3rem; }\n.rz-admin .rz-help__prose code { font-family: var(--rz-font-mono); font-size: .85em; background: var(--surface-2); border: 1px solid var(--border); border-radius: 4px; padding: .05em .35em; }\n.rz-admin .rz-help__prose pre { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--rz-radius); padding: .8rem 1rem; overflow-x: auto; }\n.rz-admin .rz-help__prose pre code { background: transparent; border: 0; padding: 0; font-size: .82rem; line-height: 1.55; }\n.rz-admin .rz-help__prose blockquote { margin: 0; padding: .2rem 0 .2rem 1rem; border-left: 3px solid var(--signal); color: var(--text-secondary); }\n.rz-admin .rz-help__prose a { color: var(--signal); text-decoration: none; }\n.rz-admin .rz-help__prose a:hover { color: var(--text-primary); }\n.rz-admin .rz-help__prose .rz-table td { white-space: normal; color: var(--text-secondary); }\n.rz-admin .rz-help__pager { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--separator); font-size: .875rem; }\n.rz-admin .rz-help__pager a { display: inline-flex; align-items: center; gap: .35rem; color: var(--text-secondary); text-decoration: none; }\n.rz-admin .rz-help__pager a:hover { color: var(--signal); }\n.rz-admin .rz-arrow--back { transform: none; }\n@media (prefers-reduced-motion: no-preference) { .rz-admin a:hover .rz-arrow--back { transform: translateX(-4px); } }\n\n/* ---- Studio update strip / Settings \u2192 Studio ---------------------------- */\n.rz-admin .rz-update { border: 1px solid color-mix(in srgb, var(--signal) 22%, var(--border)); border-radius: 8px; background: color-mix(in srgb, var(--signal) 5%, var(--surface-1)); padding: .75rem 1.1rem; }\n.rz-admin .rz-update--strip { margin: 0 0 1.5rem; }\n.rz-admin .rz-update__row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.1rem; }\n.rz-admin .rz-update__title { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-update__title::before { content: \"\"; width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent); }\n.rz-admin .rz-update__link { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; padding: 0; font: inherit; font-size: .875rem; color: var(--signal); cursor: pointer; text-decoration: none; }\n.rz-admin .rz-update__link:hover { color: var(--text-primary); }\n.rz-admin .rz-update__later { margin-left: auto; background: none; border: 0; padding: 0; font: inherit; font-size: .8rem; color: var(--text-muted); cursor: pointer; }\n.rz-admin .rz-update__later:hover { color: var(--text-primary); }\n.rz-admin .rz-update__notes { margin: .6rem 0 0; font-size: .875rem; line-height: 1.55; color: var(--text-secondary); white-space: pre-line; }\n.rz-admin .rz-update__problem { margin: .6rem 0 0; font-size: .875rem; color: var(--status-down); }\n.rz-admin .rz-update__done { display: block; margin-top: .5rem; font-size: .875rem; color: var(--text-secondary); }\n";
|
|
395
|
+
declare const STUDIO_CSS = "\n/*\n * /admin \u2014 overrides only. Layout, color and components come from\n * @realiizlabs/admin/shell (SHELL_CSS, injected by AdminShell). The Realiiz\n * palette is the package default, so this file just maps the shell's font\n * hooks onto the site's loaded fonts. To rebrand, redeclare tokens here:\n * .rz-admin { --signal: #0a58ca; }\n */\n.rz-admin {\n --rz-font: var(--font-inter), system-ui, sans-serif;\n --rz-font-display: var(--font-space-grotesk), system-ui, sans-serif;\n --rz-font-mono: var(--font-jetbrains-mono), ui-monospace, monospace;\n}\n\n/* Posts table: one wide column for the post (title, slug beneath in small mono) and\n tight fixed columns for the known-width bits. Nothing wraps; the title and slug end in\n an ellipsis with the full text as tooltip. The title opens the live post; the outbound\n arrow sits inline after it and appears on hover (the shell's a:hover .rz-arrow motion). */\n.rz-admin .rz-table--posts { table-layout: fixed; width: 100%; }\n.rz-admin .rz-table--posts td, .rz-admin .rz-table--posts th { white-space: nowrap; overflow: hidden; }\n.rz-admin .rz-col-title { width: auto; }\n.rz-admin .rz-col-date { width: 7.5rem; }\n.rz-admin .rz-col-status { width: 11.5rem; }\n.rz-admin .rz-col-actions { width: 8.5rem; }\n.rz-admin .rz-title-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.rz-admin .rz-slug { font-family: var(--rz-font-mono); font-size: .78rem; margin-top: .2rem; }\n.rz-admin [data-slugs=\"off\"] .rz-slug { display: none; }\n.rz-admin .rz-toolbar { display: flex; justify-content: flex-end; margin: 0 0 .6rem; }\n.rz-admin .rz-switch { display: inline-flex; align-items: center; gap: .55rem; font-size: .8rem; color: var(--text-secondary); cursor: pointer; user-select: none; }\n.rz-admin .rz-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }\n.rz-admin .rz-switch__track { position: relative; width: 30px; height: 18px; border-radius: 999px; background: var(--surface-3); transition: background .15s; }\n.rz-admin .rz-switch__thumb { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }\n.rz-admin .rz-switch input:checked + .rz-switch__track { background: var(--signal); }\n.rz-admin .rz-switch input:checked + .rz-switch__track .rz-switch__thumb { transform: translateX(12px); }\n.rz-admin .rz-switch input:focus-visible + .rz-switch__track { outline: 2px solid var(--signal); outline-offset: 2px; }\n.rz-admin .rz-switch:hover .rz-switch__label { color: var(--text-primary); }\n.rz-admin .rz-title-link { display: flex; align-items: center; gap: .35em; max-width: 100%; color: inherit; text-decoration: none; }\n.rz-admin .rz-title-link .rz-arrow { opacity: 0; }\n.rz-admin .rz-title-link:hover { color: var(--signal); }\n.rz-admin .rz-title-link:hover .rz-arrow { opacity: 1; }\n/* Phones: the four columns can't share the width, so each row becomes a small card \u2014\n the title on its own line (wrapping to two), the address under it, then date \u00B7 status \u00B7\n actions on one row. Same markup; only the display changes. */\n@media (max-width: 720px) {\n .rz-admin .rz-table--posts, .rz-admin .rz-table--posts tbody { display: block; }\n .rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }\n .rz-admin .rz-table--posts tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; padding: .8rem .9rem; border-bottom: 1px solid var(--separator); }\n .rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }\n .rz-admin .rz-table--posts td, .rz-admin .rz-table--posts td.rz-fit { display: block; width: auto; padding: 0; border: 0; white-space: nowrap; overflow: visible; }\n .rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; white-space: normal; }\n .rz-admin .rz-table--posts .rz-title-cell .rz-title-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-weight: 500; color: var(--text-primary); }\n .rz-admin .rz-table--posts .rz-title-link { display: inline; }\n .rz-admin .rz-table--posts .rz-slug { font-weight: 400; color: var(--text-muted); overflow-wrap: anywhere; -webkit-line-clamp: 1; }\n .rz-admin [data-slugs=\"off\"] .rz-table--posts .rz-slug { display: none; }\n .rz-admin .rz-table--posts td.rz-fit { font-size: .85rem; }\n .rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }\n}\n\n/* Dashboard card for a section that isn't built yet: the real card, faded, buttons disabled. */\n/* Account page (05b): tracker-style \u2014 H1, email, underlined tabs, stacked form cards. */\n.rz-admin .acct-h1 { font-size: 1.25rem; font-weight: 600; margin: 0 0 .25rem; color: var(--text-primary); }\n.rz-admin .acct-email { font-size: .875rem; color: var(--text-muted); margin: 0 0 1.25rem; }\n.rz-admin .acct-stack { display: flex; flex-direction: column; gap: 1rem; max-width: 560px; }\n.rz-admin .acct-stack:has(.acct-team) { max-width: none; }\n.rz-admin .acct-card { display: flex; flex-direction: column; gap: .9rem; }\n.rz-admin .acct-title { font-size: 1rem; font-weight: 600; margin: 0; color: var(--text-primary); }\n.rz-admin .acct-blurb { font-size: .875rem; color: var(--text-secondary); margin: -.4rem 0 0; line-height: 1.5; }\n.rz-admin .acct-blurb--link { margin-top: .6rem; }\n.rz-admin .acct-blurb a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }\n.rz-admin .acct-blurb a:hover { color: var(--text-primary); }\n.rz-admin .acct-field { display: flex; flex-direction: column; gap: .35rem; }\n.rz-admin .acct-label { font-size: .85rem; font-weight: 500; color: var(--text-primary); }\n.rz-admin .acct-hint { font-size: .78rem; color: var(--text-muted); }\n.rz-admin .acct-input { font: inherit; font-size: .9rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 9px 11px; min-height: 40px; width: 100%; }\n.rz-admin .acct-input:read-only { color: var(--text-secondary); background: var(--surface-2); }\n.rz-admin .acct-input:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-select { width: auto; padding-right: 2rem; }\n.rz-admin .acct-select--sm { min-height: 32px; padding: 4px 28px 4px 8px; font-size: .8rem; }\n.rz-admin .acct-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-ok { font-size: .85rem; color: var(--signal); }\n.rz-admin .acct-link { font: inherit; font-size: .82rem; background: none; border: 0; padding: 0; color: var(--text-secondary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-link:hover { color: var(--signal); }\n.rz-admin .acct-link--danger:hover { color: #c0392b; }\n.rz-admin .acct-link:disabled { opacity: .5; cursor: default; }\n.rz-admin .acct-team-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-invite__row { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }\n.rz-admin .acct-invite__row .acct-input[type=\"email\"] { flex: 1 1 220px; width: auto; }\n.rz-admin .acct-person { display: flex; align-items: center; gap: .7rem; }\n.rz-admin .acct-person__avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--surface-3); border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 600; overflow: hidden; flex-shrink: 0; }\n.rz-admin .acct-person__avatar img { width: 100%; height: 100%; object-fit: cover; }\n.rz-admin .acct-person__text { display: flex; flex-direction: column; line-height: 1.25; }\n.rz-admin .acct-person__email { font-size: .78rem; }\n.rz-admin .acct-row-actions { display: flex; gap: .8rem; align-items: center; white-space: nowrap; min-height: 34px; }\n.rz-admin .acct-help-list { margin: 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.7; }\n\n/* Sign-in: the password option under the magic-link form. */\n.rz-admin .pwsi-toggle { margin: 1.1rem 0 0; text-align: center; }\n.rz-admin .pwsi { display: flex; flex-direction: column; gap: .9rem; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--separator); }\n\n/* Password boxes: eye toggle + the requirement checklist that lights up as each rule passes. */\n.rz-admin .acct-pw { position: relative; }\n.rz-admin .acct-pw .acct-input { padding-right: 2.6rem; }\n.rz-admin .acct-pw__eye { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); background: none; border: 0; padding: .35rem; color: var(--text-muted); cursor: pointer; display: inline-flex; border-radius: 4px; }\n.rz-admin .acct-pw__eye:hover, .rz-admin .acct-pw__eye[aria-pressed=\"true\"] { color: var(--text-secondary); }\n.rz-admin .acct-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }\n.rz-admin .acct-rule { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; color: var(--text-muted); transition: color .15s; }\n.rz-admin .acct-rule--met { color: var(--signal); }\n\n/* Picture uploader (avatar, logo, favicon): one grid everywhere \u2014 preview | buttons row, hint under the buttons. */\n.rz-admin .acct-pic { border: 1px dashed var(--border); border-radius: 8px; padding: 16px 18px; background: var(--surface-0); outline: none; transition: border-color .15s; }\n.rz-admin .acct-pic:focus-visible, .rz-admin .acct-pic--over { border-color: var(--signal); border-style: solid; }\n.rz-admin .acct-pic--busy { opacity: .7; }\n.rz-admin .acct-pic__file { display: none; }\n.rz-admin .acct-pic__empty { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; color: var(--text-muted); }\n.rz-admin .acct-pic__fallback { width: 44px; height: 44px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--surface-3); color: var(--text-muted); font-size: .9rem; font-weight: 600; letter-spacing: .04em; }\n.rz-admin .acct-pic__fallback--circle { border-radius: 50%; }\n.rz-admin .acct-pic__or { font-size: .8125rem; }\n.rz-admin .acct-pic__has { display: flex; align-items: flex-start; gap: 16px; }\n.rz-admin .acct-pic__thumb { display: block; width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-3); flex-shrink: 0; }\n.rz-admin .acct-pic__thumb--circle { border-radius: 50%; }\n.rz-admin .acct-pic__meta { display: flex; flex-direction: column; gap: 10px; min-width: 0; }\n.rz-admin .acct-pic__actions { display: flex; align-items: center; gap: 14px; }\n.rz-admin .acct-pic__remove { font: inherit; font-size: .8125rem; background: none; border: 0; padding: 0; color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-pic__remove:hover { color: #c0392b; }\n.rz-admin .acct-pic__remove:disabled { cursor: default; opacity: .6; }\n.rz-admin .acct-pic__hint { margin: 10px 0 0; font-size: .75rem; color: var(--text-muted); line-height: 1.4; }\n.rz-admin .acct-pic__has .acct-pic__hint { margin-top: 0; }\n.rz-admin .acct-pic__note { margin: 8px 0 0; }\n.rz-admin .acct-pic__error { margin: 8px 0 0; font-size: .8rem; color: #c0392b; }\n\n/* Branded dropdown (role pickers): a bordered button that opens the shell's menu, checkmark on the current choice. */\n.rz-admin .acct-dd { position: relative; display: inline-block; }\n.rz-admin .acct-dd__btn { display: inline-flex; align-items: center; gap: .5rem; font: inherit; font-size: .85rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 0 .7rem; height: 34px; cursor: pointer; }\n.rz-admin .acct-dd__btn:hover { border-color: var(--text-muted); }\n.rz-admin .acct-dd__btn:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-dd__btn:disabled { opacity: .6; cursor: default; }\n.rz-admin .acct-dd__menu { left: 0; right: auto; min-width: 15rem; padding: .3rem 0; }\n.rz-admin .acct-dd__item { align-items: flex-start; }\n.rz-admin .acct-dd__check { width: 1rem; flex-shrink: 0; color: var(--signal); font-weight: 700; }\n.rz-admin .acct-dd__text { display: flex; flex-direction: column; line-height: 1.3; }\n.rz-admin .acct-dd__hint { font-size: .74rem; color: var(--text-muted); }\n/* Team table: everything on one center line, and the role menu may overflow the table (the shell\n clips .rz-table for rounded corners, so round the header cells by hand instead). */\n.rz-admin .acct-team { overflow: visible; }\n.rz-admin .acct-team thead th:first-child { border-top-left-radius: 8px; }\n.rz-admin .acct-team thead th:last-child { border-top-right-radius: 8px; }\n.rz-admin .acct-team tbody tr:last-child td { border-bottom: 0; }\n.rz-admin .acct-team td { vertical-align: middle; }\n.rz-admin .acct-team td > * { vertical-align: middle; }\n.rz-admin .acct-team .rz-pill { position: relative; top: 0; }\n.rz-admin .acct-dd__menu { z-index: 60; }\n.rz-admin .acct-invite__row .acct-dd__btn { height: 40px; }\n\n.rz-admin .rz-term { position: relative; display: inline; }\n.rz-admin .rz-term__word { cursor: help; text-decoration: underline dotted; text-underline-offset: 4px; text-decoration-color: color-mix(in srgb, currentColor 50%, transparent); }\n.rz-admin .rz-term__word:hover, .rz-admin .rz-term__word:focus-visible { text-decoration-color: var(--signal); outline: none; }\n.rz-admin .rz-term__tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 70; width: 272px; max-width: 80vw; padding: 12px 14px; border-radius: 8px; background: var(--text-primary); color: var(--surface-0); font-size: .8125rem; line-height: 1.4; font-weight: 400; box-shadow: 0 8px 24px rgba(14,23,38,.18); opacity: 0; pointer-events: none; transition: opacity .15s; }\n.rz-admin .rz-term__tip--open { opacity: 1; }\n\n/* ---- Help center ---------------------------------------------------- */\n.rz-admin .rz-help__search { position: relative; margin: 0 0 1.5rem; max-width: 44rem; }\n.rz-admin .rz-help__search svg { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); color: var(--text-muted); pointer-events: none; }\n.rz-admin .rz-help__search input { width: 100%; padding-left: 2.6rem; font-size: 1rem; }\n.rz-admin .rz-help__body { display: grid; grid-template-columns: 13rem minmax(0, 1fr); gap: 2rem; align-items: start; }\n@media (max-width: 760px) { .rz-admin .rz-help__body { grid-template-columns: 1fr; gap: 1rem; } .rz-admin .rz-help__nav { display: flex; flex-wrap: wrap; gap: .25rem; } }\n.rz-admin .rz-help__nav { position: sticky; top: calc(var(--rz-topbar) + 1rem); display: flex; flex-direction: column; gap: .1rem; }\n.rz-admin .rz-help__navitem { padding: .45rem .75rem; border-radius: 6px; color: var(--text-secondary); text-decoration: none; font-size: .875rem; }\n.rz-admin .rz-help__navitem:hover { background: var(--surface-2); color: var(--text-primary); }\n.rz-admin .rz-help__navitem--active { background: var(--surface-2); color: var(--signal); font-weight: 500; }\n.rz-admin .rz-help__main { max-width: 44rem; min-width: 0; }\n.rz-admin .rz-help__h { font-family: var(--rz-font-display); font-size: 1.5rem; font-weight: 600; letter-spacing: -.01em; margin: 0 0 .35rem; }\n.rz-admin .rz-help__blurb { color: var(--text-secondary); margin: 0 0 1.25rem; }\n.rz-admin .rz-help__count { color: var(--text-muted); font-size: .85rem; margin: 0 0 .75rem; }\n.rz-admin .rz-help__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }\n.rz-admin .rz-help__card { display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--rz-radius); text-decoration: none; color: inherit; transition: border-color .15s; }\n.rz-admin .rz-help__card:hover { border-color: var(--signal); }\n.rz-admin .rz-help__meta { font-family: var(--rz-font-mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); }\n.rz-admin .rz-help__title { font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-help__summary { color: var(--text-secondary); font-size: .9rem; line-height: 1.5; }\n.rz-admin .rz-help__crumb { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--rz-font-mono); font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); text-decoration: none; margin: 0 0 1rem; }\n.rz-admin .rz-help__crumb:hover { color: var(--signal); }\n.rz-admin .rz-help__prose { line-height: 1.65; color: var(--text-primary); }\n.rz-admin .rz-help__prose > * + * { margin-top: .85rem; }\n.rz-admin .rz-help__prose h2 { font-family: var(--rz-font-display); font-size: 1.1rem; font-weight: 600; margin-top: 1.75rem; }\n.rz-admin .rz-help__prose h3 { font-size: .95rem; font-weight: 600; margin-top: 1.25rem; }\n.rz-admin .rz-help__prose p, .rz-admin .rz-help__prose li { color: var(--text-secondary); }\n.rz-admin .rz-help__prose strong { color: var(--text-primary); font-weight: 600; }\n.rz-admin .rz-help__prose ul, .rz-admin .rz-help__prose ol { padding-left: 1.35rem; }\n.rz-admin .rz-help__prose li + li { margin-top: .3rem; }\n.rz-admin .rz-help__prose code { font-family: var(--rz-font-mono); font-size: .85em; background: var(--surface-2); border: 1px solid var(--border); border-radius: 4px; padding: .05em .35em; }\n.rz-admin .rz-help__prose pre { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--rz-radius); padding: .8rem 1rem; overflow-x: auto; }\n.rz-admin .rz-help__prose pre code { background: transparent; border: 0; padding: 0; font-size: .82rem; line-height: 1.55; }\n.rz-admin .rz-help__prose blockquote { margin: 0; padding: .2rem 0 .2rem 1rem; border-left: 3px solid var(--signal); color: var(--text-secondary); }\n.rz-admin .rz-help__prose a { color: var(--signal); text-decoration: none; }\n.rz-admin .rz-help__prose a:hover { color: var(--text-primary); }\n.rz-admin .rz-help__prose .rz-table td { white-space: normal; color: var(--text-secondary); }\n.rz-admin .rz-help__pager { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--separator); font-size: .875rem; }\n.rz-admin .rz-help__pager a { display: inline-flex; align-items: center; gap: .35rem; color: var(--text-secondary); text-decoration: none; }\n.rz-admin .rz-help__pager a:hover { color: var(--signal); }\n.rz-admin .rz-arrow--back { transform: none; }\n@media (prefers-reduced-motion: no-preference) { .rz-admin a:hover .rz-arrow--back { transform: translateX(-4px); } }\n\n/* ---- Studio update strip / Settings \u2192 Studio ---------------------------- */\n.rz-admin .rz-update { border: 1px solid color-mix(in srgb, var(--signal) 22%, var(--border)); border-radius: 8px; background: color-mix(in srgb, var(--signal) 5%, var(--surface-1)); padding: .75rem 1.1rem; }\n.rz-admin .rz-update--strip { margin: 0 0 1.5rem; }\n.rz-admin .rz-update__row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.1rem; }\n.rz-admin .rz-update__title { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-update--line { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1rem; padding: .55rem 1.1rem; font-size: .875rem; }\n.rz-admin .rz-update--line .rz-update__later { margin-left: auto; }\n.rz-admin .rz-update__row .rz-update__done { flex: 1; margin-top: .5rem; }\n.rz-admin .rz-update__row .rz-update__later { align-self: flex-end; margin-top: .5rem; }\n.rz-admin .rz-update__title::before { content: \"\"; width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent); }\n.rz-admin .rz-update__link { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; padding: 0; font: inherit; font-size: .875rem; color: var(--signal); cursor: pointer; text-decoration: none; }\n.rz-admin .rz-update__link:hover { color: var(--text-primary); }\n.rz-admin .rz-update__later { margin-left: auto; background: none; border: 0; padding: 0; font: inherit; font-size: .8rem; color: var(--text-muted); cursor: pointer; }\n.rz-admin .rz-update__later:hover { color: var(--text-primary); }\n.rz-admin .rz-update__notes { margin: .6rem 0 0; font-size: .875rem; line-height: 1.55; color: var(--text-secondary); white-space: pre-line; }\n.rz-admin .rz-update__problem { margin: .6rem 0 0; font-size: .875rem; color: var(--status-down); }\n.rz-admin .rz-update__done { display: block; margin-top: .5rem; font-size: .875rem; color: var(--text-secondary); }\n";
|
|
386
396
|
|
|
387
397
|
/**
|
|
388
398
|
* Plain-English facts about how Studio works — the text a site's help
|
|
@@ -475,4 +485,4 @@ declare function searchHelp(query: string, articles?: HelpArticle[]): HelpHit[];
|
|
|
475
485
|
/** Every article as plain text, section by section — what STUDIO_FACTS carries to the assistant. */
|
|
476
486
|
declare function helpAsText(vars?: HelpVars): string;
|
|
477
487
|
|
|
478
|
-
export { ACTION_NAMES, type ActionResult, ContentEditor, type DiscardOutcome, GLOSSARY, HELP_ARTICLES, HELP_SECTIONS, type HelpArticle, type HelpSection, type HelpSectionId, type ImagePayload, InstallTracker, type Installing, Jargon, type ListRow, type MergeOutcome, type PendingSummary, type PublishInput, PublishPanel, RemoveItem, STUDIO_CSS, STUDIO_FACTS, StudioAcceptInvite, StudioAccount, type StudioActions, type StudioContextValue, StudioDashboard, StudioEdit, StudioHelp, StudioList, StudioNew, StudioNoAccess, StudioNotConfigured, StudioProvider, StudioPullRequest, StudioShellFrame, StudioSignIn, StudioTerm, type StudioUpdate, type TeamState, UpdateBody, UpdateStrip, canSeeUpdates, copyFor, fillVars, helpAsText, joinTypes, publicDirOf, searchHelp, useEntry, useInstalling, useStudio };
|
|
488
|
+
export { ACTION_NAMES, type ActionResult, ContentEditor, type DiscardOutcome, GLOSSARY, HELP_ARTICLES, HELP_SECTIONS, type HelpArticle, type HelpSection, type HelpSectionId, type ImagePayload, InstallTracker, type Installing, Jargon, type ListRow, type MergeOutcome, type NudgeOutcome, type PendingSummary, type PublishInput, PublishPanel, RemoveItem, STUDIO_CSS, STUDIO_FACTS, StudioAcceptInvite, StudioAccount, type StudioActions, type StudioContextValue, StudioDashboard, StudioEdit, StudioHelp, StudioList, StudioNew, StudioNoAccess, StudioNotConfigured, StudioProvider, StudioPullRequest, StudioShellFrame, StudioSignIn, StudioTerm, type StudioUpdate, type TeamState, UpdateBody, UpdateStrip, canSeeUpdates, copyFor, fillVars, helpAsText, joinTypes, publicDirOf, searchHelp, useEntry, useInstalling, useStudio };
|
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { C as ContentTypeEntry } from '../types-DeHdasdP.js';
|
|
4
4
|
import { c as SiteBranding, d as SiteMember } from '../members-nhbRSYyr.js';
|
|
5
|
-
import { S as ShellUser, N as NavItem } from '../Sidebar-
|
|
5
|
+
import { S as ShellUser, N as NavItem } from '../Sidebar-Cx9bvOYi.js';
|
|
6
6
|
import { a as PullRequestStatus } from '../types-BP5G1myE.js';
|
|
7
7
|
export { A as ADMIN_VERSION } from '../version-DMS0azUx.js';
|
|
8
8
|
import 'zod';
|
|
@@ -80,8 +80,18 @@ interface StudioUpdate {
|
|
|
80
80
|
notes: string | null;
|
|
81
81
|
}
|
|
82
82
|
/** Exactly what a site's "use server" wrapper file must export. */
|
|
83
|
+
type NudgeOutcome = {
|
|
84
|
+
state: "sent";
|
|
85
|
+
} | {
|
|
86
|
+
state: "unavailable";
|
|
87
|
+
} | {
|
|
88
|
+
state: "error";
|
|
89
|
+
message: string;
|
|
90
|
+
};
|
|
83
91
|
interface StudioActions {
|
|
84
92
|
updateStudio: (number: number) => Promise<MergeOutcome>;
|
|
93
|
+
/** Optional wrapper (sites on older templates may lack it): ask the host to build main again. */
|
|
94
|
+
nudgeBuild?: () => Promise<NudgeOutcome>;
|
|
85
95
|
publishContent: (input: PublishInput) => Promise<PublishResult | never>;
|
|
86
96
|
removeContent: (input: {
|
|
87
97
|
type: string;
|
|
@@ -138,7 +148,7 @@ interface StudioActions {
|
|
|
138
148
|
userId: string;
|
|
139
149
|
}) => Promise<ActionResult>;
|
|
140
150
|
}
|
|
141
|
-
declare const ACTION_NAMES: readonly ["updateStudio", "publishContent", "removeContent", "mergeContentPr", "discardChange", "previewBody", "saveProfile", "saveAvatar", "changePassword", "loadBranding", "saveBranding", "saveBrandingPicture", "loadMe", "loadTeam", "invite", "changeRole", "resend", "remove"];
|
|
151
|
+
declare const ACTION_NAMES: readonly ["updateStudio", "nudgeBuild", "publishContent", "removeContent", "mergeContentPr", "discardChange", "previewBody", "saveProfile", "saveAvatar", "changePassword", "loadBranding", "saveBranding", "saveBrandingPicture", "loadMe", "loadTeam", "invite", "changeRole", "resend", "remove"];
|
|
142
152
|
/** One row of a content list, as the site page loads it from Studio.readers.listItems. */
|
|
143
153
|
interface ListRow {
|
|
144
154
|
slug: string;
|
|
@@ -382,7 +392,7 @@ declare function copyFor(entry: Pick<ContentTypeEntry, "id" | "label" | "singula
|
|
|
382
392
|
};
|
|
383
393
|
|
|
384
394
|
/** Studio's page styles (lists, account tabs, drop zones) — injected once by StudioShellFrame. */
|
|
385
|
-
declare const STUDIO_CSS = "\n/*\n * /admin \u2014 overrides only. Layout, color and components come from\n * @realiizlabs/admin/shell (SHELL_CSS, injected by AdminShell). The Realiiz\n * palette is the package default, so this file just maps the shell's font\n * hooks onto the site's loaded fonts. To rebrand, redeclare tokens here:\n * .rz-admin { --signal: #0a58ca; }\n */\n.rz-admin {\n --rz-font: var(--font-inter), system-ui, sans-serif;\n --rz-font-display: var(--font-space-grotesk), system-ui, sans-serif;\n --rz-font-mono: var(--font-jetbrains-mono), ui-monospace, monospace;\n}\n\n/* Posts table: one wide column for the post (title, slug beneath in small mono) and\n tight fixed columns for the known-width bits. Nothing wraps; the title and slug end in\n an ellipsis with the full text as tooltip. The title opens the live post; the outbound\n arrow sits inline after it and appears on hover (the shell's a:hover .rz-arrow motion). */\n.rz-admin .rz-table--posts { table-layout: fixed; width: 100%; }\n.rz-admin .rz-table--posts td, .rz-admin .rz-table--posts th { white-space: nowrap; overflow: hidden; }\n.rz-admin .rz-col-title { width: auto; }\n.rz-admin .rz-col-date { width: 7.5rem; }\n.rz-admin .rz-col-status { width: 11.5rem; }\n.rz-admin .rz-col-actions { width: 8.5rem; }\n.rz-admin .rz-title-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.rz-admin .rz-slug { font-family: var(--rz-font-mono); font-size: .78rem; margin-top: .2rem; }\n.rz-admin [data-slugs=\"off\"] .rz-slug { display: none; }\n.rz-admin .rz-toolbar { display: flex; justify-content: flex-end; margin: 0 0 .6rem; }\n.rz-admin .rz-switch { display: inline-flex; align-items: center; gap: .55rem; font-size: .8rem; color: var(--text-secondary); cursor: pointer; user-select: none; }\n.rz-admin .rz-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }\n.rz-admin .rz-switch__track { position: relative; width: 30px; height: 18px; border-radius: 999px; background: var(--surface-3); transition: background .15s; }\n.rz-admin .rz-switch__thumb { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }\n.rz-admin .rz-switch input:checked + .rz-switch__track { background: var(--signal); }\n.rz-admin .rz-switch input:checked + .rz-switch__track .rz-switch__thumb { transform: translateX(12px); }\n.rz-admin .rz-switch input:focus-visible + .rz-switch__track { outline: 2px solid var(--signal); outline-offset: 2px; }\n.rz-admin .rz-switch:hover .rz-switch__label { color: var(--text-primary); }\n.rz-admin .rz-title-link { display: flex; align-items: center; gap: .35em; max-width: 100%; color: inherit; text-decoration: none; }\n.rz-admin .rz-title-link .rz-arrow { opacity: 0; }\n.rz-admin .rz-title-link:hover { color: var(--signal); }\n.rz-admin .rz-title-link:hover .rz-arrow { opacity: 1; }\n/* Phones: the four columns can't share the width, so each row becomes a small card \u2014\n the title on its own line (wrapping to two), the address under it, then date \u00B7 status \u00B7\n actions on one row. Same markup; only the display changes. */\n@media (max-width: 720px) {\n .rz-admin .rz-table--posts, .rz-admin .rz-table--posts tbody { display: block; }\n .rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }\n .rz-admin .rz-table--posts tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; padding: .8rem .9rem; border-bottom: 1px solid var(--separator); }\n .rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }\n .rz-admin .rz-table--posts td { display: block; padding: 0; border: 0; white-space: normal; overflow: visible; }\n .rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; }\n .rz-admin .rz-table--posts .rz-title-cell .rz-title-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-weight: 500; color: var(--text-primary); }\n .rz-admin .rz-table--posts .rz-title-link { display: inline; }\n .rz-admin .rz-table--posts .rz-slug { font-weight: 400; color: var(--text-muted); overflow-wrap: anywhere; -webkit-line-clamp: 1; }\n .rz-admin .rz-table--posts td.rz-fit { font-size: .85rem; }\n .rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }\n}\n\n/* Dashboard card for a section that isn't built yet: the real card, faded, buttons disabled. */\n/* Account page (05b): tracker-style \u2014 H1, email, underlined tabs, stacked form cards. */\n.rz-admin .acct-h1 { font-size: 1.25rem; font-weight: 600; margin: 0 0 .25rem; color: var(--text-primary); }\n.rz-admin .acct-email { font-size: .875rem; color: var(--text-muted); margin: 0 0 1.25rem; }\n.rz-admin .acct-stack { display: flex; flex-direction: column; gap: 1rem; max-width: 560px; }\n.rz-admin .acct-stack:has(.acct-team) { max-width: none; }\n.rz-admin .acct-card { display: flex; flex-direction: column; gap: .9rem; }\n.rz-admin .acct-title { font-size: 1rem; font-weight: 600; margin: 0; color: var(--text-primary); }\n.rz-admin .acct-blurb { font-size: .875rem; color: var(--text-secondary); margin: -.4rem 0 0; line-height: 1.5; }\n.rz-admin .acct-blurb--link { margin-top: .6rem; }\n.rz-admin .acct-blurb a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }\n.rz-admin .acct-blurb a:hover { color: var(--text-primary); }\n.rz-admin .acct-field { display: flex; flex-direction: column; gap: .35rem; }\n.rz-admin .acct-label { font-size: .85rem; font-weight: 500; color: var(--text-primary); }\n.rz-admin .acct-hint { font-size: .78rem; color: var(--text-muted); }\n.rz-admin .acct-input { font: inherit; font-size: .9rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 9px 11px; min-height: 40px; width: 100%; }\n.rz-admin .acct-input:read-only { color: var(--text-secondary); background: var(--surface-2); }\n.rz-admin .acct-input:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-select { width: auto; padding-right: 2rem; }\n.rz-admin .acct-select--sm { min-height: 32px; padding: 4px 28px 4px 8px; font-size: .8rem; }\n.rz-admin .acct-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-ok { font-size: .85rem; color: var(--signal); }\n.rz-admin .acct-link { font: inherit; font-size: .82rem; background: none; border: 0; padding: 0; color: var(--text-secondary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-link:hover { color: var(--signal); }\n.rz-admin .acct-link--danger:hover { color: #c0392b; }\n.rz-admin .acct-link:disabled { opacity: .5; cursor: default; }\n.rz-admin .acct-team-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-invite__row { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }\n.rz-admin .acct-invite__row .acct-input[type=\"email\"] { flex: 1 1 220px; width: auto; }\n.rz-admin .acct-person { display: flex; align-items: center; gap: .7rem; }\n.rz-admin .acct-person__avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--surface-3); border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 600; overflow: hidden; flex-shrink: 0; }\n.rz-admin .acct-person__avatar img { width: 100%; height: 100%; object-fit: cover; }\n.rz-admin .acct-person__text { display: flex; flex-direction: column; line-height: 1.25; }\n.rz-admin .acct-person__email { font-size: .78rem; }\n.rz-admin .acct-row-actions { display: flex; gap: .8rem; align-items: center; white-space: nowrap; min-height: 34px; }\n.rz-admin .acct-help-list { margin: 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.7; }\n\n/* Sign-in: the password option under the magic-link form. */\n.rz-admin .pwsi-toggle { margin: 1.1rem 0 0; text-align: center; }\n.rz-admin .pwsi { display: flex; flex-direction: column; gap: .9rem; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--separator); }\n\n/* Password boxes: eye toggle + the requirement checklist that lights up as each rule passes. */\n.rz-admin .acct-pw { position: relative; }\n.rz-admin .acct-pw .acct-input { padding-right: 2.6rem; }\n.rz-admin .acct-pw__eye { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); background: none; border: 0; padding: .35rem; color: var(--text-muted); cursor: pointer; display: inline-flex; border-radius: 4px; }\n.rz-admin .acct-pw__eye:hover, .rz-admin .acct-pw__eye[aria-pressed=\"true\"] { color: var(--text-secondary); }\n.rz-admin .acct-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }\n.rz-admin .acct-rule { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; color: var(--text-muted); transition: color .15s; }\n.rz-admin .acct-rule--met { color: var(--signal); }\n\n/* Picture uploader (avatar, logo, favicon): one grid everywhere \u2014 preview | buttons row, hint under the buttons. */\n.rz-admin .acct-pic { border: 1px dashed var(--border); border-radius: 8px; padding: 16px 18px; background: var(--surface-0); outline: none; transition: border-color .15s; }\n.rz-admin .acct-pic:focus-visible, .rz-admin .acct-pic--over { border-color: var(--signal); border-style: solid; }\n.rz-admin .acct-pic--busy { opacity: .7; }\n.rz-admin .acct-pic__file { display: none; }\n.rz-admin .acct-pic__empty { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; color: var(--text-muted); }\n.rz-admin .acct-pic__fallback { width: 44px; height: 44px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--surface-3); color: var(--text-muted); font-size: .9rem; font-weight: 600; letter-spacing: .04em; }\n.rz-admin .acct-pic__fallback--circle { border-radius: 50%; }\n.rz-admin .acct-pic__or { font-size: .8125rem; }\n.rz-admin .acct-pic__has { display: flex; align-items: flex-start; gap: 16px; }\n.rz-admin .acct-pic__thumb { display: block; width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-3); flex-shrink: 0; }\n.rz-admin .acct-pic__thumb--circle { border-radius: 50%; }\n.rz-admin .acct-pic__meta { display: flex; flex-direction: column; gap: 10px; min-width: 0; }\n.rz-admin .acct-pic__actions { display: flex; align-items: center; gap: 14px; }\n.rz-admin .acct-pic__remove { font: inherit; font-size: .8125rem; background: none; border: 0; padding: 0; color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-pic__remove:hover { color: #c0392b; }\n.rz-admin .acct-pic__remove:disabled { cursor: default; opacity: .6; }\n.rz-admin .acct-pic__hint { margin: 10px 0 0; font-size: .75rem; color: var(--text-muted); line-height: 1.4; }\n.rz-admin .acct-pic__has .acct-pic__hint { margin-top: 0; }\n.rz-admin .acct-pic__note { margin: 8px 0 0; }\n.rz-admin .acct-pic__error { margin: 8px 0 0; font-size: .8rem; color: #c0392b; }\n\n/* Branded dropdown (role pickers): a bordered button that opens the shell's menu, checkmark on the current choice. */\n.rz-admin .acct-dd { position: relative; display: inline-block; }\n.rz-admin .acct-dd__btn { display: inline-flex; align-items: center; gap: .5rem; font: inherit; font-size: .85rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 0 .7rem; height: 34px; cursor: pointer; }\n.rz-admin .acct-dd__btn:hover { border-color: var(--text-muted); }\n.rz-admin .acct-dd__btn:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-dd__btn:disabled { opacity: .6; cursor: default; }\n.rz-admin .acct-dd__menu { left: 0; right: auto; min-width: 15rem; padding: .3rem 0; }\n.rz-admin .acct-dd__item { align-items: flex-start; }\n.rz-admin .acct-dd__check { width: 1rem; flex-shrink: 0; color: var(--signal); font-weight: 700; }\n.rz-admin .acct-dd__text { display: flex; flex-direction: column; line-height: 1.3; }\n.rz-admin .acct-dd__hint { font-size: .74rem; color: var(--text-muted); }\n/* Team table: everything on one center line, and the role menu may overflow the table (the shell\n clips .rz-table for rounded corners, so round the header cells by hand instead). */\n.rz-admin .acct-team { overflow: visible; }\n.rz-admin .acct-team thead th:first-child { border-top-left-radius: 8px; }\n.rz-admin .acct-team thead th:last-child { border-top-right-radius: 8px; }\n.rz-admin .acct-team tbody tr:last-child td { border-bottom: 0; }\n.rz-admin .acct-team td { vertical-align: middle; }\n.rz-admin .acct-team td > * { vertical-align: middle; }\n.rz-admin .acct-team .rz-pill { position: relative; top: 0; }\n.rz-admin .acct-dd__menu { z-index: 60; }\n.rz-admin .acct-invite__row .acct-dd__btn { height: 40px; }\n\n.rz-admin .rz-term { position: relative; display: inline; }\n.rz-admin .rz-term__word { cursor: help; text-decoration: underline dotted; text-underline-offset: 4px; text-decoration-color: color-mix(in srgb, currentColor 50%, transparent); }\n.rz-admin .rz-term__word:hover, .rz-admin .rz-term__word:focus-visible { text-decoration-color: var(--signal); outline: none; }\n.rz-admin .rz-term__tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 70; width: 272px; max-width: 80vw; padding: 12px 14px; border-radius: 8px; background: var(--text-primary); color: var(--surface-0); font-size: .8125rem; line-height: 1.4; font-weight: 400; box-shadow: 0 8px 24px rgba(14,23,38,.18); opacity: 0; pointer-events: none; transition: opacity .15s; }\n.rz-admin .rz-term__tip--open { opacity: 1; }\n\n/* ---- Help center ---------------------------------------------------- */\n.rz-admin .rz-help__search { position: relative; margin: 0 0 1.5rem; max-width: 44rem; }\n.rz-admin .rz-help__search svg { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); color: var(--text-muted); pointer-events: none; }\n.rz-admin .rz-help__search input { width: 100%; padding-left: 2.6rem; font-size: 1rem; }\n.rz-admin .rz-help__body { display: grid; grid-template-columns: 13rem minmax(0, 1fr); gap: 2rem; align-items: start; }\n@media (max-width: 760px) { .rz-admin .rz-help__body { grid-template-columns: 1fr; gap: 1rem; } .rz-admin .rz-help__nav { display: flex; flex-wrap: wrap; gap: .25rem; } }\n.rz-admin .rz-help__nav { position: sticky; top: calc(var(--rz-topbar) + 1rem); display: flex; flex-direction: column; gap: .1rem; }\n.rz-admin .rz-help__navitem { padding: .45rem .75rem; border-radius: 6px; color: var(--text-secondary); text-decoration: none; font-size: .875rem; }\n.rz-admin .rz-help__navitem:hover { background: var(--surface-2); color: var(--text-primary); }\n.rz-admin .rz-help__navitem--active { background: var(--surface-2); color: var(--signal); font-weight: 500; }\n.rz-admin .rz-help__main { max-width: 44rem; min-width: 0; }\n.rz-admin .rz-help__h { font-family: var(--rz-font-display); font-size: 1.5rem; font-weight: 600; letter-spacing: -.01em; margin: 0 0 .35rem; }\n.rz-admin .rz-help__blurb { color: var(--text-secondary); margin: 0 0 1.25rem; }\n.rz-admin .rz-help__count { color: var(--text-muted); font-size: .85rem; margin: 0 0 .75rem; }\n.rz-admin .rz-help__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }\n.rz-admin .rz-help__card { display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--rz-radius); text-decoration: none; color: inherit; transition: border-color .15s; }\n.rz-admin .rz-help__card:hover { border-color: var(--signal); }\n.rz-admin .rz-help__meta { font-family: var(--rz-font-mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); }\n.rz-admin .rz-help__title { font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-help__summary { color: var(--text-secondary); font-size: .9rem; line-height: 1.5; }\n.rz-admin .rz-help__crumb { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--rz-font-mono); font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); text-decoration: none; margin: 0 0 1rem; }\n.rz-admin .rz-help__crumb:hover { color: var(--signal); }\n.rz-admin .rz-help__prose { line-height: 1.65; color: var(--text-primary); }\n.rz-admin .rz-help__prose > * + * { margin-top: .85rem; }\n.rz-admin .rz-help__prose h2 { font-family: var(--rz-font-display); font-size: 1.1rem; font-weight: 600; margin-top: 1.75rem; }\n.rz-admin .rz-help__prose h3 { font-size: .95rem; font-weight: 600; margin-top: 1.25rem; }\n.rz-admin .rz-help__prose p, .rz-admin .rz-help__prose li { color: var(--text-secondary); }\n.rz-admin .rz-help__prose strong { color: var(--text-primary); font-weight: 600; }\n.rz-admin .rz-help__prose ul, .rz-admin .rz-help__prose ol { padding-left: 1.35rem; }\n.rz-admin .rz-help__prose li + li { margin-top: .3rem; }\n.rz-admin .rz-help__prose code { font-family: var(--rz-font-mono); font-size: .85em; background: var(--surface-2); border: 1px solid var(--border); border-radius: 4px; padding: .05em .35em; }\n.rz-admin .rz-help__prose pre { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--rz-radius); padding: .8rem 1rem; overflow-x: auto; }\n.rz-admin .rz-help__prose pre code { background: transparent; border: 0; padding: 0; font-size: .82rem; line-height: 1.55; }\n.rz-admin .rz-help__prose blockquote { margin: 0; padding: .2rem 0 .2rem 1rem; border-left: 3px solid var(--signal); color: var(--text-secondary); }\n.rz-admin .rz-help__prose a { color: var(--signal); text-decoration: none; }\n.rz-admin .rz-help__prose a:hover { color: var(--text-primary); }\n.rz-admin .rz-help__prose .rz-table td { white-space: normal; color: var(--text-secondary); }\n.rz-admin .rz-help__pager { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--separator); font-size: .875rem; }\n.rz-admin .rz-help__pager a { display: inline-flex; align-items: center; gap: .35rem; color: var(--text-secondary); text-decoration: none; }\n.rz-admin .rz-help__pager a:hover { color: var(--signal); }\n.rz-admin .rz-arrow--back { transform: none; }\n@media (prefers-reduced-motion: no-preference) { .rz-admin a:hover .rz-arrow--back { transform: translateX(-4px); } }\n\n/* ---- Studio update strip / Settings \u2192 Studio ---------------------------- */\n.rz-admin .rz-update { border: 1px solid color-mix(in srgb, var(--signal) 22%, var(--border)); border-radius: 8px; background: color-mix(in srgb, var(--signal) 5%, var(--surface-1)); padding: .75rem 1.1rem; }\n.rz-admin .rz-update--strip { margin: 0 0 1.5rem; }\n.rz-admin .rz-update__row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.1rem; }\n.rz-admin .rz-update__title { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-update__title::before { content: \"\"; width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent); }\n.rz-admin .rz-update__link { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; padding: 0; font: inherit; font-size: .875rem; color: var(--signal); cursor: pointer; text-decoration: none; }\n.rz-admin .rz-update__link:hover { color: var(--text-primary); }\n.rz-admin .rz-update__later { margin-left: auto; background: none; border: 0; padding: 0; font: inherit; font-size: .8rem; color: var(--text-muted); cursor: pointer; }\n.rz-admin .rz-update__later:hover { color: var(--text-primary); }\n.rz-admin .rz-update__notes { margin: .6rem 0 0; font-size: .875rem; line-height: 1.55; color: var(--text-secondary); white-space: pre-line; }\n.rz-admin .rz-update__problem { margin: .6rem 0 0; font-size: .875rem; color: var(--status-down); }\n.rz-admin .rz-update__done { display: block; margin-top: .5rem; font-size: .875rem; color: var(--text-secondary); }\n";
|
|
395
|
+
declare const STUDIO_CSS = "\n/*\n * /admin \u2014 overrides only. Layout, color and components come from\n * @realiizlabs/admin/shell (SHELL_CSS, injected by AdminShell). The Realiiz\n * palette is the package default, so this file just maps the shell's font\n * hooks onto the site's loaded fonts. To rebrand, redeclare tokens here:\n * .rz-admin { --signal: #0a58ca; }\n */\n.rz-admin {\n --rz-font: var(--font-inter), system-ui, sans-serif;\n --rz-font-display: var(--font-space-grotesk), system-ui, sans-serif;\n --rz-font-mono: var(--font-jetbrains-mono), ui-monospace, monospace;\n}\n\n/* Posts table: one wide column for the post (title, slug beneath in small mono) and\n tight fixed columns for the known-width bits. Nothing wraps; the title and slug end in\n an ellipsis with the full text as tooltip. The title opens the live post; the outbound\n arrow sits inline after it and appears on hover (the shell's a:hover .rz-arrow motion). */\n.rz-admin .rz-table--posts { table-layout: fixed; width: 100%; }\n.rz-admin .rz-table--posts td, .rz-admin .rz-table--posts th { white-space: nowrap; overflow: hidden; }\n.rz-admin .rz-col-title { width: auto; }\n.rz-admin .rz-col-date { width: 7.5rem; }\n.rz-admin .rz-col-status { width: 11.5rem; }\n.rz-admin .rz-col-actions { width: 8.5rem; }\n.rz-admin .rz-title-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.rz-admin .rz-slug { font-family: var(--rz-font-mono); font-size: .78rem; margin-top: .2rem; }\n.rz-admin [data-slugs=\"off\"] .rz-slug { display: none; }\n.rz-admin .rz-toolbar { display: flex; justify-content: flex-end; margin: 0 0 .6rem; }\n.rz-admin .rz-switch { display: inline-flex; align-items: center; gap: .55rem; font-size: .8rem; color: var(--text-secondary); cursor: pointer; user-select: none; }\n.rz-admin .rz-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }\n.rz-admin .rz-switch__track { position: relative; width: 30px; height: 18px; border-radius: 999px; background: var(--surface-3); transition: background .15s; }\n.rz-admin .rz-switch__thumb { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }\n.rz-admin .rz-switch input:checked + .rz-switch__track { background: var(--signal); }\n.rz-admin .rz-switch input:checked + .rz-switch__track .rz-switch__thumb { transform: translateX(12px); }\n.rz-admin .rz-switch input:focus-visible + .rz-switch__track { outline: 2px solid var(--signal); outline-offset: 2px; }\n.rz-admin .rz-switch:hover .rz-switch__label { color: var(--text-primary); }\n.rz-admin .rz-title-link { display: flex; align-items: center; gap: .35em; max-width: 100%; color: inherit; text-decoration: none; }\n.rz-admin .rz-title-link .rz-arrow { opacity: 0; }\n.rz-admin .rz-title-link:hover { color: var(--signal); }\n.rz-admin .rz-title-link:hover .rz-arrow { opacity: 1; }\n/* Phones: the four columns can't share the width, so each row becomes a small card \u2014\n the title on its own line (wrapping to two), the address under it, then date \u00B7 status \u00B7\n actions on one row. Same markup; only the display changes. */\n@media (max-width: 720px) {\n .rz-admin .rz-table--posts, .rz-admin .rz-table--posts tbody { display: block; }\n .rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }\n .rz-admin .rz-table--posts tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; padding: .8rem .9rem; border-bottom: 1px solid var(--separator); }\n .rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }\n .rz-admin .rz-table--posts td, .rz-admin .rz-table--posts td.rz-fit { display: block; width: auto; padding: 0; border: 0; white-space: nowrap; overflow: visible; }\n .rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; white-space: normal; }\n .rz-admin .rz-table--posts .rz-title-cell .rz-title-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-weight: 500; color: var(--text-primary); }\n .rz-admin .rz-table--posts .rz-title-link { display: inline; }\n .rz-admin .rz-table--posts .rz-slug { font-weight: 400; color: var(--text-muted); overflow-wrap: anywhere; -webkit-line-clamp: 1; }\n .rz-admin [data-slugs=\"off\"] .rz-table--posts .rz-slug { display: none; }\n .rz-admin .rz-table--posts td.rz-fit { font-size: .85rem; }\n .rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }\n}\n\n/* Dashboard card for a section that isn't built yet: the real card, faded, buttons disabled. */\n/* Account page (05b): tracker-style \u2014 H1, email, underlined tabs, stacked form cards. */\n.rz-admin .acct-h1 { font-size: 1.25rem; font-weight: 600; margin: 0 0 .25rem; color: var(--text-primary); }\n.rz-admin .acct-email { font-size: .875rem; color: var(--text-muted); margin: 0 0 1.25rem; }\n.rz-admin .acct-stack { display: flex; flex-direction: column; gap: 1rem; max-width: 560px; }\n.rz-admin .acct-stack:has(.acct-team) { max-width: none; }\n.rz-admin .acct-card { display: flex; flex-direction: column; gap: .9rem; }\n.rz-admin .acct-title { font-size: 1rem; font-weight: 600; margin: 0; color: var(--text-primary); }\n.rz-admin .acct-blurb { font-size: .875rem; color: var(--text-secondary); margin: -.4rem 0 0; line-height: 1.5; }\n.rz-admin .acct-blurb--link { margin-top: .6rem; }\n.rz-admin .acct-blurb a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }\n.rz-admin .acct-blurb a:hover { color: var(--text-primary); }\n.rz-admin .acct-field { display: flex; flex-direction: column; gap: .35rem; }\n.rz-admin .acct-label { font-size: .85rem; font-weight: 500; color: var(--text-primary); }\n.rz-admin .acct-hint { font-size: .78rem; color: var(--text-muted); }\n.rz-admin .acct-input { font: inherit; font-size: .9rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 9px 11px; min-height: 40px; width: 100%; }\n.rz-admin .acct-input:read-only { color: var(--text-secondary); background: var(--surface-2); }\n.rz-admin .acct-input:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-select { width: auto; padding-right: 2rem; }\n.rz-admin .acct-select--sm { min-height: 32px; padding: 4px 28px 4px 8px; font-size: .8rem; }\n.rz-admin .acct-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-ok { font-size: .85rem; color: var(--signal); }\n.rz-admin .acct-link { font: inherit; font-size: .82rem; background: none; border: 0; padding: 0; color: var(--text-secondary); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-link:hover { color: var(--signal); }\n.rz-admin .acct-link--danger:hover { color: #c0392b; }\n.rz-admin .acct-link:disabled { opacity: .5; cursor: default; }\n.rz-admin .acct-team-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }\n.rz-admin .acct-invite__row { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }\n.rz-admin .acct-invite__row .acct-input[type=\"email\"] { flex: 1 1 220px; width: auto; }\n.rz-admin .acct-person { display: flex; align-items: center; gap: .7rem; }\n.rz-admin .acct-person__avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--surface-3); border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; font-size: .7rem; font-weight: 600; overflow: hidden; flex-shrink: 0; }\n.rz-admin .acct-person__avatar img { width: 100%; height: 100%; object-fit: cover; }\n.rz-admin .acct-person__text { display: flex; flex-direction: column; line-height: 1.25; }\n.rz-admin .acct-person__email { font-size: .78rem; }\n.rz-admin .acct-row-actions { display: flex; gap: .8rem; align-items: center; white-space: nowrap; min-height: 34px; }\n.rz-admin .acct-help-list { margin: 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.7; }\n\n/* Sign-in: the password option under the magic-link form. */\n.rz-admin .pwsi-toggle { margin: 1.1rem 0 0; text-align: center; }\n.rz-admin .pwsi { display: flex; flex-direction: column; gap: .9rem; margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--separator); }\n\n/* Password boxes: eye toggle + the requirement checklist that lights up as each rule passes. */\n.rz-admin .acct-pw { position: relative; }\n.rz-admin .acct-pw .acct-input { padding-right: 2.6rem; }\n.rz-admin .acct-pw__eye { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); background: none; border: 0; padding: .35rem; color: var(--text-muted); cursor: pointer; display: inline-flex; border-radius: 4px; }\n.rz-admin .acct-pw__eye:hover, .rz-admin .acct-pw__eye[aria-pressed=\"true\"] { color: var(--text-secondary); }\n.rz-admin .acct-rules { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }\n.rz-admin .acct-rule { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; color: var(--text-muted); transition: color .15s; }\n.rz-admin .acct-rule--met { color: var(--signal); }\n\n/* Picture uploader (avatar, logo, favicon): one grid everywhere \u2014 preview | buttons row, hint under the buttons. */\n.rz-admin .acct-pic { border: 1px dashed var(--border); border-radius: 8px; padding: 16px 18px; background: var(--surface-0); outline: none; transition: border-color .15s; }\n.rz-admin .acct-pic:focus-visible, .rz-admin .acct-pic--over { border-color: var(--signal); border-style: solid; }\n.rz-admin .acct-pic--busy { opacity: .7; }\n.rz-admin .acct-pic__file { display: none; }\n.rz-admin .acct-pic__empty { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; color: var(--text-muted); }\n.rz-admin .acct-pic__fallback { width: 44px; height: 44px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: var(--surface-3); color: var(--text-muted); font-size: .9rem; font-weight: 600; letter-spacing: .04em; }\n.rz-admin .acct-pic__fallback--circle { border-radius: 50%; }\n.rz-admin .acct-pic__or { font-size: .8125rem; }\n.rz-admin .acct-pic__has { display: flex; align-items: flex-start; gap: 16px; }\n.rz-admin .acct-pic__thumb { display: block; width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-3); flex-shrink: 0; }\n.rz-admin .acct-pic__thumb--circle { border-radius: 50%; }\n.rz-admin .acct-pic__meta { display: flex; flex-direction: column; gap: 10px; min-width: 0; }\n.rz-admin .acct-pic__actions { display: flex; align-items: center; gap: 14px; }\n.rz-admin .acct-pic__remove { font: inherit; font-size: .8125rem; background: none; border: 0; padding: 0; color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\n.rz-admin .acct-pic__remove:hover { color: #c0392b; }\n.rz-admin .acct-pic__remove:disabled { cursor: default; opacity: .6; }\n.rz-admin .acct-pic__hint { margin: 10px 0 0; font-size: .75rem; color: var(--text-muted); line-height: 1.4; }\n.rz-admin .acct-pic__has .acct-pic__hint { margin-top: 0; }\n.rz-admin .acct-pic__note { margin: 8px 0 0; }\n.rz-admin .acct-pic__error { margin: 8px 0 0; font-size: .8rem; color: #c0392b; }\n\n/* Branded dropdown (role pickers): a bordered button that opens the shell's menu, checkmark on the current choice. */\n.rz-admin .acct-dd { position: relative; display: inline-block; }\n.rz-admin .acct-dd__btn { display: inline-flex; align-items: center; gap: .5rem; font: inherit; font-size: .85rem; color: var(--text-primary); background: var(--surface-0); border: 1px solid var(--border); border-radius: 6px; padding: 0 .7rem; height: 34px; cursor: pointer; }\n.rz-admin .acct-dd__btn:hover { border-color: var(--text-muted); }\n.rz-admin .acct-dd__btn:focus-visible { outline: 2px solid var(--signal); outline-offset: 1px; }\n.rz-admin .acct-dd__btn:disabled { opacity: .6; cursor: default; }\n.rz-admin .acct-dd__menu { left: 0; right: auto; min-width: 15rem; padding: .3rem 0; }\n.rz-admin .acct-dd__item { align-items: flex-start; }\n.rz-admin .acct-dd__check { width: 1rem; flex-shrink: 0; color: var(--signal); font-weight: 700; }\n.rz-admin .acct-dd__text { display: flex; flex-direction: column; line-height: 1.3; }\n.rz-admin .acct-dd__hint { font-size: .74rem; color: var(--text-muted); }\n/* Team table: everything on one center line, and the role menu may overflow the table (the shell\n clips .rz-table for rounded corners, so round the header cells by hand instead). */\n.rz-admin .acct-team { overflow: visible; }\n.rz-admin .acct-team thead th:first-child { border-top-left-radius: 8px; }\n.rz-admin .acct-team thead th:last-child { border-top-right-radius: 8px; }\n.rz-admin .acct-team tbody tr:last-child td { border-bottom: 0; }\n.rz-admin .acct-team td { vertical-align: middle; }\n.rz-admin .acct-team td > * { vertical-align: middle; }\n.rz-admin .acct-team .rz-pill { position: relative; top: 0; }\n.rz-admin .acct-dd__menu { z-index: 60; }\n.rz-admin .acct-invite__row .acct-dd__btn { height: 40px; }\n\n.rz-admin .rz-term { position: relative; display: inline; }\n.rz-admin .rz-term__word { cursor: help; text-decoration: underline dotted; text-underline-offset: 4px; text-decoration-color: color-mix(in srgb, currentColor 50%, transparent); }\n.rz-admin .rz-term__word:hover, .rz-admin .rz-term__word:focus-visible { text-decoration-color: var(--signal); outline: none; }\n.rz-admin .rz-term__tip { position: absolute; left: 0; top: calc(100% + 8px); z-index: 70; width: 272px; max-width: 80vw; padding: 12px 14px; border-radius: 8px; background: var(--text-primary); color: var(--surface-0); font-size: .8125rem; line-height: 1.4; font-weight: 400; box-shadow: 0 8px 24px rgba(14,23,38,.18); opacity: 0; pointer-events: none; transition: opacity .15s; }\n.rz-admin .rz-term__tip--open { opacity: 1; }\n\n/* ---- Help center ---------------------------------------------------- */\n.rz-admin .rz-help__search { position: relative; margin: 0 0 1.5rem; max-width: 44rem; }\n.rz-admin .rz-help__search svg { position: absolute; left: .9rem; top: 50%; transform: translateY(-50%); color: var(--text-muted); pointer-events: none; }\n.rz-admin .rz-help__search input { width: 100%; padding-left: 2.6rem; font-size: 1rem; }\n.rz-admin .rz-help__body { display: grid; grid-template-columns: 13rem minmax(0, 1fr); gap: 2rem; align-items: start; }\n@media (max-width: 760px) { .rz-admin .rz-help__body { grid-template-columns: 1fr; gap: 1rem; } .rz-admin .rz-help__nav { display: flex; flex-wrap: wrap; gap: .25rem; } }\n.rz-admin .rz-help__nav { position: sticky; top: calc(var(--rz-topbar) + 1rem); display: flex; flex-direction: column; gap: .1rem; }\n.rz-admin .rz-help__navitem { padding: .45rem .75rem; border-radius: 6px; color: var(--text-secondary); text-decoration: none; font-size: .875rem; }\n.rz-admin .rz-help__navitem:hover { background: var(--surface-2); color: var(--text-primary); }\n.rz-admin .rz-help__navitem--active { background: var(--surface-2); color: var(--signal); font-weight: 500; }\n.rz-admin .rz-help__main { max-width: 44rem; min-width: 0; }\n.rz-admin .rz-help__h { font-family: var(--rz-font-display); font-size: 1.5rem; font-weight: 600; letter-spacing: -.01em; margin: 0 0 .35rem; }\n.rz-admin .rz-help__blurb { color: var(--text-secondary); margin: 0 0 1.25rem; }\n.rz-admin .rz-help__count { color: var(--text-muted); font-size: .85rem; margin: 0 0 .75rem; }\n.rz-admin .rz-help__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }\n.rz-admin .rz-help__card { display: flex; flex-direction: column; gap: .2rem; padding: .9rem 1rem; background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--rz-radius); text-decoration: none; color: inherit; transition: border-color .15s; }\n.rz-admin .rz-help__card:hover { border-color: var(--signal); }\n.rz-admin .rz-help__meta { font-family: var(--rz-font-mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); }\n.rz-admin .rz-help__title { font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-help__summary { color: var(--text-secondary); font-size: .9rem; line-height: 1.5; }\n.rz-admin .rz-help__crumb { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--rz-font-mono); font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--text-muted); text-decoration: none; margin: 0 0 1rem; }\n.rz-admin .rz-help__crumb:hover { color: var(--signal); }\n.rz-admin .rz-help__prose { line-height: 1.65; color: var(--text-primary); }\n.rz-admin .rz-help__prose > * + * { margin-top: .85rem; }\n.rz-admin .rz-help__prose h2 { font-family: var(--rz-font-display); font-size: 1.1rem; font-weight: 600; margin-top: 1.75rem; }\n.rz-admin .rz-help__prose h3 { font-size: .95rem; font-weight: 600; margin-top: 1.25rem; }\n.rz-admin .rz-help__prose p, .rz-admin .rz-help__prose li { color: var(--text-secondary); }\n.rz-admin .rz-help__prose strong { color: var(--text-primary); font-weight: 600; }\n.rz-admin .rz-help__prose ul, .rz-admin .rz-help__prose ol { padding-left: 1.35rem; }\n.rz-admin .rz-help__prose li + li { margin-top: .3rem; }\n.rz-admin .rz-help__prose code { font-family: var(--rz-font-mono); font-size: .85em; background: var(--surface-2); border: 1px solid var(--border); border-radius: 4px; padding: .05em .35em; }\n.rz-admin .rz-help__prose pre { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--rz-radius); padding: .8rem 1rem; overflow-x: auto; }\n.rz-admin .rz-help__prose pre code { background: transparent; border: 0; padding: 0; font-size: .82rem; line-height: 1.55; }\n.rz-admin .rz-help__prose blockquote { margin: 0; padding: .2rem 0 .2rem 1rem; border-left: 3px solid var(--signal); color: var(--text-secondary); }\n.rz-admin .rz-help__prose a { color: var(--signal); text-decoration: none; }\n.rz-admin .rz-help__prose a:hover { color: var(--text-primary); }\n.rz-admin .rz-help__prose .rz-table td { white-space: normal; color: var(--text-secondary); }\n.rz-admin .rz-help__pager { display: flex; justify-content: space-between; gap: 1rem; margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--separator); font-size: .875rem; }\n.rz-admin .rz-help__pager a { display: inline-flex; align-items: center; gap: .35rem; color: var(--text-secondary); text-decoration: none; }\n.rz-admin .rz-help__pager a:hover { color: var(--signal); }\n.rz-admin .rz-arrow--back { transform: none; }\n@media (prefers-reduced-motion: no-preference) { .rz-admin a:hover .rz-arrow--back { transform: translateX(-4px); } }\n\n/* ---- Studio update strip / Settings \u2192 Studio ---------------------------- */\n.rz-admin .rz-update { border: 1px solid color-mix(in srgb, var(--signal) 22%, var(--border)); border-radius: 8px; background: color-mix(in srgb, var(--signal) 5%, var(--surface-1)); padding: .75rem 1.1rem; }\n.rz-admin .rz-update--strip { margin: 0 0 1.5rem; }\n.rz-admin .rz-update__row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.1rem; }\n.rz-admin .rz-update__title { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--text-primary); }\n.rz-admin .rz-update--line { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1rem; padding: .55rem 1.1rem; font-size: .875rem; }\n.rz-admin .rz-update--line .rz-update__later { margin-left: auto; }\n.rz-admin .rz-update__row .rz-update__done { flex: 1; margin-top: .5rem; }\n.rz-admin .rz-update__row .rz-update__later { align-self: flex-end; margin-top: .5rem; }\n.rz-admin .rz-update__title::before { content: \"\"; width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent); }\n.rz-admin .rz-update__link { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; padding: 0; font: inherit; font-size: .875rem; color: var(--signal); cursor: pointer; text-decoration: none; }\n.rz-admin .rz-update__link:hover { color: var(--text-primary); }\n.rz-admin .rz-update__later { margin-left: auto; background: none; border: 0; padding: 0; font: inherit; font-size: .8rem; color: var(--text-muted); cursor: pointer; }\n.rz-admin .rz-update__later:hover { color: var(--text-primary); }\n.rz-admin .rz-update__notes { margin: .6rem 0 0; font-size: .875rem; line-height: 1.55; color: var(--text-secondary); white-space: pre-line; }\n.rz-admin .rz-update__problem { margin: .6rem 0 0; font-size: .875rem; color: var(--status-down); }\n.rz-admin .rz-update__done { display: block; margin-top: .5rem; font-size: .875rem; color: var(--text-secondary); }\n";
|
|
386
396
|
|
|
387
397
|
/**
|
|
388
398
|
* Plain-English facts about how Studio works — the text a site's help
|
|
@@ -475,4 +485,4 @@ declare function searchHelp(query: string, articles?: HelpArticle[]): HelpHit[];
|
|
|
475
485
|
/** Every article as plain text, section by section — what STUDIO_FACTS carries to the assistant. */
|
|
476
486
|
declare function helpAsText(vars?: HelpVars): string;
|
|
477
487
|
|
|
478
|
-
export { ACTION_NAMES, type ActionResult, ContentEditor, type DiscardOutcome, GLOSSARY, HELP_ARTICLES, HELP_SECTIONS, type HelpArticle, type HelpSection, type HelpSectionId, type ImagePayload, InstallTracker, type Installing, Jargon, type ListRow, type MergeOutcome, type PendingSummary, type PublishInput, PublishPanel, RemoveItem, STUDIO_CSS, STUDIO_FACTS, StudioAcceptInvite, StudioAccount, type StudioActions, type StudioContextValue, StudioDashboard, StudioEdit, StudioHelp, StudioList, StudioNew, StudioNoAccess, StudioNotConfigured, StudioProvider, StudioPullRequest, StudioShellFrame, StudioSignIn, StudioTerm, type StudioUpdate, type TeamState, UpdateBody, UpdateStrip, canSeeUpdates, copyFor, fillVars, helpAsText, joinTypes, publicDirOf, searchHelp, useEntry, useInstalling, useStudio };
|
|
488
|
+
export { ACTION_NAMES, type ActionResult, ContentEditor, type DiscardOutcome, GLOSSARY, HELP_ARTICLES, HELP_SECTIONS, type HelpArticle, type HelpSection, type HelpSectionId, type ImagePayload, InstallTracker, type Installing, Jargon, type ListRow, type MergeOutcome, type NudgeOutcome, type PendingSummary, type PublishInput, PublishPanel, RemoveItem, STUDIO_CSS, STUDIO_FACTS, StudioAcceptInvite, StudioAccount, type StudioActions, type StudioContextValue, StudioDashboard, StudioEdit, StudioHelp, StudioList, StudioNew, StudioNoAccess, StudioNotConfigured, StudioProvider, StudioPullRequest, StudioShellFrame, StudioSignIn, StudioTerm, type StudioUpdate, type TeamState, UpdateBody, UpdateStrip, canSeeUpdates, copyFor, fillVars, helpAsText, joinTypes, publicDirOf, searchHelp, useEntry, useInstalling, useStudio };
|
package/dist/studio-ui/index.js
CHANGED
|
@@ -244,7 +244,7 @@ var OutIcon = () => /* @__PURE__ */ jsxs("svg", { ...ico, children: [
|
|
|
244
244
|
/* @__PURE__ */ jsx("path", { d: "M16 17l5-5-5-5" }),
|
|
245
245
|
/* @__PURE__ */ jsx("path", { d: "M21 12H9" })
|
|
246
246
|
] });
|
|
247
|
-
function AccountMenu({ user, role, theme, onTheme, signOutPath, accountHref, helpHref, siteUrl }) {
|
|
247
|
+
function AccountMenu({ user, role, theme, onTheme, signOutPath, accountHref, helpHref, siteUrl, version }) {
|
|
248
248
|
const [open, setOpen] = useState(false);
|
|
249
249
|
const wrap = useRef(null);
|
|
250
250
|
useEffect(() => {
|
|
@@ -297,11 +297,15 @@ function AccountMenu({ user, role, theme, onTheme, signOutPath, accountHref, hel
|
|
|
297
297
|
/* @__PURE__ */ jsx("form", { method: "post", action: signOutPath, className: "rz-menu__signout", children: /* @__PURE__ */ jsxs("button", { type: "submit", role: "menuitem", className: "rz-menu__item", children: [
|
|
298
298
|
/* @__PURE__ */ jsx(OutIcon, {}),
|
|
299
299
|
"Sign out"
|
|
300
|
-
] }) })
|
|
300
|
+
] }) }),
|
|
301
|
+
version && /* @__PURE__ */ jsxs("div", { className: "rz-menu__version", children: [
|
|
302
|
+
"Studio ",
|
|
303
|
+
version
|
|
304
|
+
] })
|
|
301
305
|
] })
|
|
302
306
|
] });
|
|
303
307
|
}
|
|
304
|
-
function TopBar({ siteName, productName, logoUrl, homeHref, siteUrl, user, role, theme, onTheme, signOutPath, accountHref, helpHref }) {
|
|
308
|
+
function TopBar({ siteName, productName, logoUrl, homeHref, siteUrl, user, role, theme, onTheme, signOutPath, accountHref, helpHref, version }) {
|
|
305
309
|
return /* @__PURE__ */ jsxs("header", { className: "rz-topbar", children: [
|
|
306
310
|
/* @__PURE__ */ jsxs(
|
|
307
311
|
"a",
|
|
@@ -322,7 +326,7 @@ function TopBar({ siteName, productName, logoUrl, homeHref, siteUrl, user, role,
|
|
|
322
326
|
"Welcome back, ",
|
|
323
327
|
firstNameOf(user)
|
|
324
328
|
] }),
|
|
325
|
-
/* @__PURE__ */ jsx(AccountMenu, { user, role, theme, onTheme, signOutPath, accountHref, helpHref, siteUrl })
|
|
329
|
+
/* @__PURE__ */ jsx(AccountMenu, { user, role, theme, onTheme, signOutPath, accountHref, helpHref, siteUrl, version })
|
|
326
330
|
] })
|
|
327
331
|
] });
|
|
328
332
|
}
|
|
@@ -403,6 +407,7 @@ var SHELL_CSS = `
|
|
|
403
407
|
.rz-sidebar__collapse:hover { color: var(--text-primary); }
|
|
404
408
|
.rz-sidebar__collapse svg { flex-shrink: 0; }
|
|
405
409
|
.rz-sidebar--collapsed .rz-sidebar__collapse { justify-content: center; padding: .6rem 0; }
|
|
410
|
+
.rz-menu__version { padding: .45rem 1rem .55rem; border-top: 1px solid var(--separator); font-family: var(--rz-font-mono); font-size: .6875rem; letter-spacing: .04em; color: var(--text-muted); }
|
|
406
411
|
.rz-sidebar__version { display: block; padding: 0 1rem .75rem; font-family: var(--rz-font-mono); font-size: .6875rem; letter-spacing: .04em; color: var(--text-muted); opacity: .8; white-space: nowrap; }
|
|
407
412
|
.rz-sidebar--collapsed .rz-sidebar__version { padding: 0 0 .75rem; text-align: center; }
|
|
408
413
|
.rz-main { flex: 1; min-width: 0; }
|
|
@@ -520,9 +525,9 @@ var SHELL_CSS = `
|
|
|
520
525
|
flex-direction: row; align-items: stretch;
|
|
521
526
|
border-right: 0; border-top: 1px solid var(--border); box-shadow: 0 -6px 16px rgba(14,23,38,.06);
|
|
522
527
|
}
|
|
523
|
-
|
|
524
|
-
.rz-sidebar__pinned {
|
|
525
|
-
.rz-sidebar__item { flex: 1; justify-content: center; padding: 0; min-width:
|
|
528
|
+
/* Both nav groups dissolve into the bar so every icon gets an equal share of the width. */
|
|
529
|
+
.rz-sidebar__nav, .rz-sidebar__pinned { display: contents; }
|
|
530
|
+
.rz-sidebar__item { flex: 1 1 0; justify-content: center; padding: 0; min-width: 0; border-radius: 0; }
|
|
526
531
|
.rz-sidebar__item svg { width: 22px; height: 22px; }
|
|
527
532
|
.rz-sidebar__item--active { background: transparent; box-shadow: inset 0 2px 0 var(--signal); }
|
|
528
533
|
/* Labels stay in the accessibility tree but not on screen. */
|
|
@@ -634,7 +639,8 @@ function AdminShell({
|
|
|
634
639
|
onTheme: setTheme,
|
|
635
640
|
signOutPath: signOutPath ?? `${basePath}/auth/signout`,
|
|
636
641
|
accountHref: accountHref === null ? void 0 : accountHref ?? `${basePath}/account`,
|
|
637
|
-
helpHref: helpHref === null ? void 0 : helpHref ?? `${basePath}/help
|
|
642
|
+
helpHref: helpHref === null ? void 0 : helpHref ?? `${basePath}/help`,
|
|
643
|
+
version
|
|
638
644
|
}
|
|
639
645
|
),
|
|
640
646
|
/* @__PURE__ */ jsxs("div", { className: "rz-body", children: [
|
|
@@ -727,7 +733,7 @@ function Tabs({ options, value, onChange, label = "Sections" }) {
|
|
|
727
733
|
}
|
|
728
734
|
|
|
729
735
|
// src/version.ts
|
|
730
|
-
var ADMIN_VERSION = "0.15.
|
|
736
|
+
var ADMIN_VERSION = "0.15.7" ;
|
|
731
737
|
|
|
732
738
|
// src/studio-ui/css.ts
|
|
733
739
|
var STUDIO_CSS = `
|
|
@@ -778,11 +784,12 @@ var STUDIO_CSS = `
|
|
|
778
784
|
.rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }
|
|
779
785
|
.rz-admin .rz-table--posts tr { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; padding: .8rem .9rem; border-bottom: 1px solid var(--separator); }
|
|
780
786
|
.rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }
|
|
781
|
-
.rz-admin .rz-table--posts td { display: block; padding: 0; border: 0; white-space:
|
|
782
|
-
.rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; }
|
|
787
|
+
.rz-admin .rz-table--posts td, .rz-admin .rz-table--posts td.rz-fit { display: block; width: auto; padding: 0; border: 0; white-space: nowrap; overflow: visible; }
|
|
788
|
+
.rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; white-space: normal; }
|
|
783
789
|
.rz-admin .rz-table--posts .rz-title-cell .rz-title-text { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-weight: 500; color: var(--text-primary); }
|
|
784
790
|
.rz-admin .rz-table--posts .rz-title-link { display: inline; }
|
|
785
791
|
.rz-admin .rz-table--posts .rz-slug { font-weight: 400; color: var(--text-muted); overflow-wrap: anywhere; -webkit-line-clamp: 1; }
|
|
792
|
+
.rz-admin [data-slugs="off"] .rz-table--posts .rz-slug { display: none; }
|
|
786
793
|
.rz-admin .rz-table--posts td.rz-fit { font-size: .85rem; }
|
|
787
794
|
.rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }
|
|
788
795
|
}
|
|
@@ -936,6 +943,10 @@ var STUDIO_CSS = `
|
|
|
936
943
|
.rz-admin .rz-update--strip { margin: 0 0 1.5rem; }
|
|
937
944
|
.rz-admin .rz-update__row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.1rem; }
|
|
938
945
|
.rz-admin .rz-update__title { display: inline-flex; align-items: center; gap: .55rem; font-weight: 600; color: var(--text-primary); }
|
|
946
|
+
.rz-admin .rz-update--line { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem 1rem; padding: .55rem 1.1rem; font-size: .875rem; }
|
|
947
|
+
.rz-admin .rz-update--line .rz-update__later { margin-left: auto; }
|
|
948
|
+
.rz-admin .rz-update__row .rz-update__done { flex: 1; margin-top: .5rem; }
|
|
949
|
+
.rz-admin .rz-update__row .rz-update__later { align-self: flex-end; margin-top: .5rem; }
|
|
939
950
|
.rz-admin .rz-update__title::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent); }
|
|
940
951
|
.rz-admin .rz-update__link { display: inline-flex; align-items: center; gap: .3rem; background: none; border: 0; padding: 0; font: inherit; font-size: .875rem; color: var(--signal); cursor: pointer; text-decoration: none; }
|
|
941
952
|
.rz-admin .rz-update__link:hover { color: var(--text-primary); }
|
|
@@ -947,14 +958,16 @@ var STUDIO_CSS = `
|
|
|
947
958
|
`;
|
|
948
959
|
var POLL_MS = 8e3;
|
|
949
960
|
var LOCAL_FALLBACK_MS = 15e4;
|
|
961
|
+
var SLOW_MS = 4 * 6e4;
|
|
950
962
|
var GIVE_UP_MS = 15 * 6e4;
|
|
951
|
-
function useDeployed(active, mergedSha) {
|
|
963
|
+
function useDeployed(active, mergedSha, attempt = 0) {
|
|
952
964
|
const [state, setState] = useState("waiting");
|
|
953
965
|
useEffect(() => {
|
|
954
966
|
if (!active) return;
|
|
955
967
|
let stop = false;
|
|
956
968
|
let baseline;
|
|
957
969
|
const started = Date.now();
|
|
970
|
+
setState("waiting");
|
|
958
971
|
const read2 = async () => {
|
|
959
972
|
try {
|
|
960
973
|
const r = await fetch("/api/version", { cache: "no-store" });
|
|
@@ -978,22 +991,24 @@ function useDeployed(active, mergedSha) {
|
|
|
978
991
|
return;
|
|
979
992
|
}
|
|
980
993
|
if (elapsed >= GIVE_UP_MS) {
|
|
981
|
-
setState("
|
|
994
|
+
setState("stalled");
|
|
982
995
|
return;
|
|
983
996
|
}
|
|
997
|
+
if (elapsed >= SLOW_MS) setState("slow");
|
|
984
998
|
setTimeout(tick, POLL_MS);
|
|
985
999
|
};
|
|
986
1000
|
void tick();
|
|
987
1001
|
return () => {
|
|
988
1002
|
stop = true;
|
|
989
1003
|
};
|
|
990
|
-
}, [active, mergedSha]);
|
|
1004
|
+
}, [active, mergedSha, attempt]);
|
|
991
1005
|
return state;
|
|
992
1006
|
}
|
|
993
1007
|
var KEY = "rz-update-installing";
|
|
1008
|
+
var MIN_KEY = "rz-update-minimized";
|
|
994
1009
|
function readInstalling() {
|
|
995
1010
|
try {
|
|
996
|
-
const raw =
|
|
1011
|
+
const raw = localStorage.getItem(KEY);
|
|
997
1012
|
if (!raw) return null;
|
|
998
1013
|
const v = JSON.parse(raw);
|
|
999
1014
|
return typeof v.version === "string" ? v : null;
|
|
@@ -1003,8 +1018,11 @@ function readInstalling() {
|
|
|
1003
1018
|
}
|
|
1004
1019
|
function writeInstalling(i) {
|
|
1005
1020
|
try {
|
|
1006
|
-
if (i)
|
|
1007
|
-
else
|
|
1021
|
+
if (i) localStorage.setItem(KEY, JSON.stringify(i));
|
|
1022
|
+
else {
|
|
1023
|
+
localStorage.removeItem(KEY);
|
|
1024
|
+
localStorage.removeItem(MIN_KEY);
|
|
1025
|
+
}
|
|
1008
1026
|
} catch {
|
|
1009
1027
|
}
|
|
1010
1028
|
}
|
|
@@ -1025,21 +1043,55 @@ function useInstalling() {
|
|
|
1025
1043
|
return [installing, update];
|
|
1026
1044
|
}
|
|
1027
1045
|
function InstallTracker({ installing, compact = false }) {
|
|
1028
|
-
const
|
|
1046
|
+
const { actions, supportName } = useStudio();
|
|
1047
|
+
const [attempt, setAttempt] = useState(0);
|
|
1048
|
+
const [nudge, setNudge] = useState(null);
|
|
1049
|
+
const deploy = useDeployed(true, installing.sha, attempt);
|
|
1029
1050
|
const live = deploy === "live";
|
|
1051
|
+
const late = deploy === "slow" || deploy === "stalled";
|
|
1052
|
+
const doNudge = async () => {
|
|
1053
|
+
if (!actions.nudgeBuild) return;
|
|
1054
|
+
setNudge("busy");
|
|
1055
|
+
const out = await actions.nudgeBuild();
|
|
1056
|
+
setNudge(out);
|
|
1057
|
+
if (out.state === "sent") setAttempt((n) => n + 1);
|
|
1058
|
+
};
|
|
1059
|
+
const [minimized, setMinimized] = useState(false);
|
|
1060
|
+
useEffect(() => {
|
|
1061
|
+
try {
|
|
1062
|
+
setMinimized(localStorage.getItem(MIN_KEY) === "1");
|
|
1063
|
+
} catch {
|
|
1064
|
+
}
|
|
1065
|
+
}, []);
|
|
1066
|
+
const minimize = (on) => {
|
|
1067
|
+
try {
|
|
1068
|
+
on ? localStorage.setItem(MIN_KEY, "1") : localStorage.removeItem(MIN_KEY);
|
|
1069
|
+
} catch {
|
|
1070
|
+
}
|
|
1071
|
+
setMinimized(on);
|
|
1072
|
+
};
|
|
1073
|
+
const reload = /* @__PURE__ */ jsx("button", { type: "button", className: "rz-update__link", onClick: () => window.location.reload(), children: "Reload Studio" });
|
|
1074
|
+
if (live || minimized && compact) {
|
|
1075
|
+
return /* @__PURE__ */ jsxs("div", { className: `rz-update rz-update--line${compact ? " rz-update--strip" : ""}`, role: "status", children: [
|
|
1076
|
+
/* @__PURE__ */ jsx("span", { className: "rz-update__title", children: live ? `Studio ${installing.version} is live` : `Installing Studio ${installing.version}` }),
|
|
1077
|
+
live ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1078
|
+
reload,
|
|
1079
|
+
" to start using it."
|
|
1080
|
+
] }) : /* @__PURE__ */ jsx("span", { className: "rz-muted", children: "The website is rebuilding \u2014 keep working." }),
|
|
1081
|
+
!live && /* @__PURE__ */ jsx("button", { type: "button", className: "rz-update__later", onClick: () => minimize(false), children: "Show progress" })
|
|
1082
|
+
] });
|
|
1083
|
+
}
|
|
1030
1084
|
const steps = [
|
|
1031
1085
|
{ label: "Updated", state: "done", note: `Studio ${installing.version}` },
|
|
1032
|
-
{ label: "Live", state:
|
|
1086
|
+
{ label: "Live", state: "active", note: late ? "Taking longer than usual" : "Rebuilding the website" }
|
|
1033
1087
|
];
|
|
1034
1088
|
return /* @__PURE__ */ jsxs("div", { className: `rz-update${compact ? " rz-update--strip" : ""}`, role: "status", children: [
|
|
1035
1089
|
/* @__PURE__ */ jsx(Steps, { steps }),
|
|
1036
|
-
/* @__PURE__ */
|
|
1037
|
-
"Studio ",
|
|
1038
|
-
|
|
1039
|
-
"
|
|
1040
|
-
|
|
1041
|
-
" to start using it \u2014 the version at the foot of the sidebar will change."
|
|
1042
|
-
] }) : "Update accepted. Nothing to do meanwhile \u2014 keep working. The website is rebuilding with the new Studio; this turns green when it's done, in about two minutes." })
|
|
1090
|
+
/* @__PURE__ */ jsxs("div", { className: "rz-update__row", children: [
|
|
1091
|
+
/* @__PURE__ */ jsx("span", { className: "rz-update__done", children: !late ? "Update accepted. Nothing to do meanwhile \u2014 keep working. The website is rebuilding with the new Studio; usually a few minutes, sometimes longer. This turns green when it's done." : nudge === "busy" ? "Asking the hosting service to build again\u2026" : nudge?.state === "sent" ? "Asked. The rebuild should start within a minute; this turns green when it's done." : nudge?.state === "error" ? `That didn't work (${nudge.message}). Tell ${supportName} \u2014 it's a one-click fix on their side.` : nudge?.state === "unavailable" || !actions.nudgeBuild ? `This is taking longer than usual. Occasionally the hosting service misses a rebuild \u2014 tell ${supportName}; it's a one-click fix on their side, and nothing on your website has changed.` : "This is taking longer than usual. Occasionally the hosting service misses a rebuild. You can ask it again \u2014 it's safe to press, nothing on your website changes." }),
|
|
1092
|
+
late && actions.nudgeBuild && nudge !== "busy" && nudge?.state !== "sent" && nudge?.state !== "unavailable" && /* @__PURE__ */ jsx(Button, { size: "sm", onClick: doNudge, children: "Nudge the build" }),
|
|
1093
|
+
compact && /* @__PURE__ */ jsx("button", { type: "button", className: "rz-update__later", onClick: () => minimize(true), children: "Minimize" })
|
|
1094
|
+
] })
|
|
1043
1095
|
] });
|
|
1044
1096
|
}
|
|
1045
1097
|
var HIDE_KEY = "rz-update-later";
|
|
@@ -3172,7 +3224,7 @@ function PublishPanel({ number, htmlUrl, merged, closed = false, branch, removal
|
|
|
3172
3224
|
{
|
|
3173
3225
|
label: removal ? "Removed" : "Live",
|
|
3174
3226
|
state: onSite ? "done" : live ? "active" : "todo",
|
|
3175
|
-
note: onSite ? removal ? "Off the site" : "On the site" : live ? deploy === "
|
|
3227
|
+
note: onSite ? removal ? "Off the site" : "On the site" : live ? deploy === "waiting" ? "Rebuilding the website" : "Taking longer than usual" : "Automatic"
|
|
3176
3228
|
}
|
|
3177
3229
|
];
|
|
3178
3230
|
if (discarded) {
|
|
@@ -3194,7 +3246,7 @@ function PublishPanel({ number, htmlUrl, merged, closed = false, branch, removal
|
|
|
3194
3246
|
}
|
|
3195
3247
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3196
3248
|
/* @__PURE__ */ jsx(Steps, { steps }),
|
|
3197
|
-
live ? onSite ? /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: removal ? `Done \u2014 the ${noun} is off the website.` : "Done \u2014 your change is on the website now." }) : deploy === "slow" ? /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "The site is taking longer than usual to rebuild. It will get there; check back in a few minutes." }) : /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "Published. The website is rebuilding with your change \u2014
|
|
3249
|
+
live ? onSite ? /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: removal ? `Done \u2014 the ${noun} is off the website.` : "Done \u2014 your change is on the website now." }) : deploy === "stalled" ? /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "The website still hasn't rebuilt. Your change is saved and published; the rebuild just hasn't happened. Tell your web team \u2014 it's a one-click fix on their side." }) : deploy === "slow" ? /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "The site is taking longer than usual to rebuild. It will get there; check back in a few minutes." }) : /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: "Published. The website is rebuilding with your change \u2014 usually a few minutes. Stay here and this page will tell you the moment it's live; if you look at the site before then you'll still see the old version." }) : stale ? /* @__PURE__ */ jsxs("div", { className: "rz-alert admin__alert", children: [
|
|
3198
3250
|
"Someone else changed this file first. ",
|
|
3199
3251
|
/* @__PURE__ */ jsx(Link3, { href: "/admin", children: "Open it again" }),
|
|
3200
3252
|
", make your change on the latest version, and publish."
|
|
@@ -3214,7 +3266,7 @@ function PublishPanel({ number, htmlUrl, merged, closed = false, branch, removal
|
|
|
3214
3266
|
noun
|
|
3215
3267
|
] })),
|
|
3216
3268
|
/* @__PURE__ */ jsx(LinkButton, { variant: removal || !liveUrl ? "primary" : "secondary", href: listUrl, children: backLabel }),
|
|
3217
|
-
live && !onSite && /* @__PURE__ */ jsx("span", { className: "rz-actions__hint", children: deploy === "
|
|
3269
|
+
live && !onSite && /* @__PURE__ */ jsx("span", { className: "rz-actions__hint", children: deploy === "waiting" ? "Waiting for the site to rebuild\u2026" : "Still rebuilding." })
|
|
3218
3270
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3219
3271
|
/* @__PURE__ */ jsx(Button, { variant: "primary", disabled: pending || !ready, onClick: publish, children: pending ? "Publishing\u2026" : "Publish" }),
|
|
3220
3272
|
previewUrl && ready && /* @__PURE__ */ jsx(LinkButton, { external: true, href: previewUrl, children: "Preview the change" }),
|
|
@@ -5218,7 +5270,7 @@ The new version didn't build cleanly against your website. Nothing was installed
|
|
|
5218
5270
|
|
|
5219
5271
|
## The tracker is stuck on "Live"
|
|
5220
5272
|
|
|
5221
|
-
The rebuild usually takes
|
|
5273
|
+
The rebuild usually takes a few minutes. After a while the tracker says *taking longer than usual* and, on most sites, offers **Nudge the build**. Press it \u2014 it asks the hosting service to build the website again. It's safe: the update is already accepted, nothing on your website changes, and pressing it twice does no harm. If the button isn't there, or it doesn't help within ten minutes, tell {supportName}; it's a one-click fix on their side. Either way you can leave the page and come back \u2014 the tracker remembers.
|
|
5222
5274
|
|
|
5223
5275
|
## I'm not seeing updates at all
|
|
5224
5276
|
|
|
@@ -5664,6 +5716,7 @@ function BackArrow() {
|
|
|
5664
5716
|
// src/studio-ui/types.ts
|
|
5665
5717
|
var ACTION_NAMES = [
|
|
5666
5718
|
"updateStudio",
|
|
5719
|
+
"nudgeBuild",
|
|
5667
5720
|
"publishContent",
|
|
5668
5721
|
"removeContent",
|
|
5669
5722
|
"mergeContentPr",
|