@realiizlabs/admin 0.15.3 → 0.15.5
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/shell/index.cjs +31 -14
- package/dist/shell/index.cjs.map +1 -1
- package/dist/shell/index.d.cts +1 -1
- package/dist/shell/index.d.ts +1 -1
- package/dist/shell/index.js +31 -14
- package/dist/shell/index.js.map +1 -1
- package/dist/studio/index.cjs +1 -1
- package/dist/studio/index.js +1 -1
- package/dist/studio-ui/index.cjs +132 -51
- package/dist/studio-ui/index.cjs.map +1 -1
- package/dist/studio-ui/index.d.cts +16 -4
- package/dist/studio-ui/index.d.ts +16 -4
- package/dist/studio-ui/index.js +131 -52
- package/dist/studio-ui/index.js.map +1 -1
- package/package.json +2 -2
package/dist/studio/index.cjs
CHANGED
package/dist/studio/index.js
CHANGED
package/dist/studio-ui/index.cjs
CHANGED
|
@@ -495,7 +495,7 @@ var SHELL_CSS = `
|
|
|
495
495
|
/* ---- account menu --------------------------------------------------- */
|
|
496
496
|
.rz-avatar__img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; display: block; }
|
|
497
497
|
.rz-tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--border); margin: 0 0 1.5rem; flex-wrap: wrap; }
|
|
498
|
-
.rz-tabs__tab { padding: .55rem .9rem; font: inherit; font-size: .88rem; color: var(--text-secondary); background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; }
|
|
498
|
+
.rz-tabs__tab { padding: .55rem .9rem; font: inherit; font-size: .88rem; color: var(--text-secondary); background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; white-space: nowrap; }
|
|
499
499
|
.rz-tabs__tab:hover { color: var(--text-primary); }
|
|
500
500
|
.rz-tabs__tab[aria-selected="true"] { color: var(--text-primary); border-bottom-color: var(--signal); font-weight: 600; }
|
|
501
501
|
.rz-tabs__tab:focus-visible { outline: 2px solid var(--signal); outline-offset: -2px; border-radius: 4px; }
|
|
@@ -516,22 +516,33 @@ var SHELL_CSS = `
|
|
|
516
516
|
.rz-seg button { font: inherit; font-size: .75rem; padding: .15rem .55rem; line-height: 1.3; background: transparent; color: var(--text-secondary); border: 0; cursor: pointer; }
|
|
517
517
|
.rz-seg button[aria-pressed="true"] { background: var(--surface-3); color: var(--text-primary); }
|
|
518
518
|
|
|
519
|
-
/* ---- mobile: sidebar becomes a
|
|
519
|
+
/* ---- mobile: the sidebar becomes a fixed bottom bar, icons only ------- */
|
|
520
520
|
@media (max-width: 720px) {
|
|
521
|
+
.rz-admin { --rz-bottombar: calc(56px + env(safe-area-inset-bottom, 0px)); }
|
|
521
522
|
.rz-body { flex-direction: column; }
|
|
522
|
-
.rz-sidebar, .rz-sidebar--collapsed {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
523
|
+
.rz-sidebar, .rz-sidebar--collapsed {
|
|
524
|
+
position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 30;
|
|
525
|
+
width: 100%; height: var(--rz-bottombar); padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
526
|
+
flex-direction: row; align-items: stretch;
|
|
527
|
+
border-right: 0; border-top: 1px solid var(--border); box-shadow: 0 -6px 16px rgba(14,23,38,.06);
|
|
528
|
+
}
|
|
529
|
+
.rz-sidebar__nav, .rz-sidebar__pinned { display: flex; flex: 1; padding: 0; overflow: visible; border-top: 0; }
|
|
530
|
+
.rz-sidebar__pinned { flex: 0 0 auto; }
|
|
531
|
+
.rz-sidebar__item { flex: 1; justify-content: center; padding: 0; min-width: 56px; border-radius: 0; }
|
|
532
|
+
.rz-sidebar__item svg { width: 22px; height: 22px; }
|
|
533
|
+
.rz-sidebar__item--active { background: transparent; box-shadow: inset 0 2px 0 var(--signal); }
|
|
534
|
+
/* Labels stay in the accessibility tree but not on screen. */
|
|
535
|
+
.rz-sidebar__label, .rz-sidebar--collapsed .rz-sidebar__label { display: block; position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
|
|
536
|
+
.rz-sidebar__collapse, .rz-sidebar__version, .rz-sidebar__item--disabled { display: none; }
|
|
528
537
|
.rz-topbar__greeting { display: none; }
|
|
529
|
-
.rz-content { padding: 18px 14px
|
|
530
|
-
/*
|
|
531
|
-
|
|
532
|
-
.rz-
|
|
533
|
-
|
|
534
|
-
.rz-
|
|
538
|
+
.rz-content { padding: 18px 14px calc(var(--rz-bottombar) + 24px); }
|
|
539
|
+
/* Section tabs: one row that scrolls sideways (bleeding to the screen edges), scrollbar hidden,
|
|
540
|
+
a fade on the right so it's clear there's more; the active tab is scrolled into view. */
|
|
541
|
+
.rz-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; margin-left: -14px; margin-right: -14px; padding: 0 14px; -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 2.5rem), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 2.5rem), transparent); }
|
|
542
|
+
.rz-tabs::-webkit-scrollbar { display: none; }
|
|
543
|
+
.rz-tabs__tab { flex: 0 0 auto; scroll-snap-align: center; }
|
|
544
|
+
/* Save bar: sits just above the bottom bar; bleed matches the narrower content padding; stack status above the buttons. */
|
|
545
|
+
.rz-content .realiiz-form__bar { bottom: var(--rz-bottombar); margin: 18px -14px calc(-1 * (var(--rz-bottombar) + 24px)); padding: 10px 14px; flex-wrap: wrap; }
|
|
535
546
|
.rz-content .realiiz-form__status { flex-basis: 100%; margin-right: 0; font-size: .8rem; }
|
|
536
547
|
/* Editor toolbar wraps; the Insert group drops its label and left rule to save width. */
|
|
537
548
|
.rz-admin .realiiz-md__head { padding: 5px; }
|
|
@@ -678,6 +689,12 @@ function Steps({ steps }) {
|
|
|
678
689
|
}
|
|
679
690
|
function Tabs({ options, value, onChange, label = "Sections" }) {
|
|
680
691
|
const list = react.useRef(null);
|
|
692
|
+
react.useEffect(() => {
|
|
693
|
+
const el = list.current;
|
|
694
|
+
if (!el || el.scrollWidth <= el.clientWidth) return;
|
|
695
|
+
const i = options.findIndex((o) => o.value === value);
|
|
696
|
+
el.children[i]?.scrollIntoView?.({ inline: "center", block: "nearest" });
|
|
697
|
+
}, [options, value]);
|
|
681
698
|
const onKey = (e) => {
|
|
682
699
|
const i = options.findIndex((o) => o.value === value);
|
|
683
700
|
if (i < 0) return;
|
|
@@ -716,7 +733,7 @@ function Tabs({ options, value, onChange, label = "Sections" }) {
|
|
|
716
733
|
}
|
|
717
734
|
|
|
718
735
|
// src/version.ts
|
|
719
|
-
var ADMIN_VERSION = "0.15.
|
|
736
|
+
var ADMIN_VERSION = "0.15.5" ;
|
|
720
737
|
|
|
721
738
|
// src/studio-ui/css.ts
|
|
722
739
|
var STUDIO_CSS = `
|
|
@@ -759,9 +776,21 @@ var STUDIO_CSS = `
|
|
|
759
776
|
.rz-admin .rz-title-link .rz-arrow { opacity: 0; }
|
|
760
777
|
.rz-admin .rz-title-link:hover { color: var(--signal); }
|
|
761
778
|
.rz-admin .rz-title-link:hover .rz-arrow { opacity: 1; }
|
|
779
|
+
/* Phones: the four columns can't share the width, so each row becomes a small card \u2014
|
|
780
|
+
the title on its own line (wrapping to two), the address under it, then date \xB7 status \xB7
|
|
781
|
+
actions on one row. Same markup; only the display changes. */
|
|
762
782
|
@media (max-width: 720px) {
|
|
763
|
-
.rz-admin .rz-
|
|
764
|
-
.rz-admin .rz-
|
|
783
|
+
.rz-admin .rz-table--posts, .rz-admin .rz-table--posts tbody { display: block; }
|
|
784
|
+
.rz-admin .rz-table--posts colgroup, .rz-admin .rz-table--posts thead { display: none; }
|
|
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); }
|
|
786
|
+
.rz-admin .rz-table--posts tr:last-child { border-bottom: 0; }
|
|
787
|
+
.rz-admin .rz-table--posts td { display: block; padding: 0; border: 0; white-space: normal; overflow: visible; }
|
|
788
|
+
.rz-admin .rz-table--posts .rz-title-cell { flex: 1 1 100%; min-width: 0; margin-bottom: .15rem; }
|
|
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); }
|
|
790
|
+
.rz-admin .rz-table--posts .rz-title-link { display: inline; }
|
|
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 .rz-table--posts td.rz-fit { font-size: .85rem; }
|
|
793
|
+
.rz-admin .rz-table--posts td.rz-fit:last-child { margin-left: auto; }
|
|
765
794
|
}
|
|
766
795
|
|
|
767
796
|
/* Dashboard card for a section that isn't built yet: the real card, faded, buttons disabled. */
|
|
@@ -773,6 +802,9 @@ var STUDIO_CSS = `
|
|
|
773
802
|
.rz-admin .acct-card { display: flex; flex-direction: column; gap: .9rem; }
|
|
774
803
|
.rz-admin .acct-title { font-size: 1rem; font-weight: 600; margin: 0; color: var(--text-primary); }
|
|
775
804
|
.rz-admin .acct-blurb { font-size: .875rem; color: var(--text-secondary); margin: -.4rem 0 0; line-height: 1.5; }
|
|
805
|
+
.rz-admin .acct-blurb--link { margin-top: .6rem; }
|
|
806
|
+
.rz-admin .acct-blurb a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }
|
|
807
|
+
.rz-admin .acct-blurb a:hover { color: var(--text-primary); }
|
|
776
808
|
.rz-admin .acct-field { display: flex; flex-direction: column; gap: .35rem; }
|
|
777
809
|
.rz-admin .acct-label { font-size: .85rem; font-weight: 500; color: var(--text-primary); }
|
|
778
810
|
.rz-admin .acct-hint { font-size: .78rem; color: var(--text-muted); }
|
|
@@ -964,11 +996,64 @@ function useDeployed(active, mergedSha) {
|
|
|
964
996
|
}, [active, mergedSha]);
|
|
965
997
|
return state;
|
|
966
998
|
}
|
|
999
|
+
var KEY = "rz-update-installing";
|
|
1000
|
+
function readInstalling() {
|
|
1001
|
+
try {
|
|
1002
|
+
const raw = sessionStorage.getItem(KEY);
|
|
1003
|
+
if (!raw) return null;
|
|
1004
|
+
const v = JSON.parse(raw);
|
|
1005
|
+
return typeof v.version === "string" ? v : null;
|
|
1006
|
+
} catch {
|
|
1007
|
+
return null;
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
function writeInstalling(i) {
|
|
1011
|
+
try {
|
|
1012
|
+
if (i) sessionStorage.setItem(KEY, JSON.stringify(i));
|
|
1013
|
+
else sessionStorage.removeItem(KEY);
|
|
1014
|
+
} catch {
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
function useInstalling() {
|
|
1018
|
+
const [installing, set] = react.useState(null);
|
|
1019
|
+
react.useEffect(() => {
|
|
1020
|
+
const i = readInstalling();
|
|
1021
|
+
if (i && i.version === ADMIN_VERSION) {
|
|
1022
|
+
writeInstalling(null);
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
set(i);
|
|
1026
|
+
}, []);
|
|
1027
|
+
const update = (i) => {
|
|
1028
|
+
writeInstalling(i);
|
|
1029
|
+
set(i);
|
|
1030
|
+
};
|
|
1031
|
+
return [installing, update];
|
|
1032
|
+
}
|
|
1033
|
+
function InstallTracker({ installing, compact = false }) {
|
|
1034
|
+
const deploy = useDeployed(true, installing.sha);
|
|
1035
|
+
const live = deploy === "live";
|
|
1036
|
+
const steps = [
|
|
1037
|
+
{ label: "Updated", state: "done", note: `Studio ${installing.version}` },
|
|
1038
|
+
{ label: "Live", state: live ? "done" : "active", note: live ? "On the site now" : deploy === "slow" ? "Taking longer than usual" : "Rebuilding, about two minutes" }
|
|
1039
|
+
];
|
|
1040
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rz-update${compact ? " rz-update--strip" : ""}`, role: "status", children: [
|
|
1041
|
+
/* @__PURE__ */ jsxRuntime.jsx(Steps, { steps }),
|
|
1042
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rz-update__done", children: live ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1043
|
+
"Studio ",
|
|
1044
|
+
installing.version,
|
|
1045
|
+
" is live. ",
|
|
1046
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "rz-update__link", onClick: () => window.location.reload(), children: "Reload Studio" }),
|
|
1047
|
+
" to start using it \u2014 the version at the foot of the sidebar will change."
|
|
1048
|
+
] }) : "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." })
|
|
1049
|
+
] });
|
|
1050
|
+
}
|
|
967
1051
|
var HIDE_KEY = "rz-update-later";
|
|
968
1052
|
function canSeeUpdates(role) {
|
|
969
1053
|
return role === "owner" || role === "staff";
|
|
970
1054
|
}
|
|
971
1055
|
function UpdateStrip({ update, role }) {
|
|
1056
|
+
const [installing, setInstalling] = useInstalling();
|
|
972
1057
|
const [hidden, setHidden] = react.useState(true);
|
|
973
1058
|
react.useEffect(() => {
|
|
974
1059
|
try {
|
|
@@ -977,7 +1062,9 @@ function UpdateStrip({ update, role }) {
|
|
|
977
1062
|
setHidden(false);
|
|
978
1063
|
}
|
|
979
1064
|
}, [update?.version]);
|
|
980
|
-
if (!
|
|
1065
|
+
if (!canSeeUpdates(role)) return null;
|
|
1066
|
+
if (installing) return /* @__PURE__ */ jsxRuntime.jsx(InstallTracker, { installing, compact: true });
|
|
1067
|
+
if (!update || update.state !== "ready" || hidden) return null;
|
|
981
1068
|
const later = () => {
|
|
982
1069
|
try {
|
|
983
1070
|
sessionStorage.setItem(HIDE_KEY, update.version);
|
|
@@ -985,35 +1072,24 @@ function UpdateStrip({ update, role }) {
|
|
|
985
1072
|
}
|
|
986
1073
|
setHidden(true);
|
|
987
1074
|
};
|
|
988
|
-
return /* @__PURE__ */ jsxRuntime.jsx(UpdateBody, { update, onLater: later, compact: true });
|
|
1075
|
+
return /* @__PURE__ */ jsxRuntime.jsx(UpdateBody, { update, onLater: later, onMerged: setInstalling, compact: true });
|
|
989
1076
|
}
|
|
990
|
-
function UpdateBody({ update, onLater, compact = false }) {
|
|
1077
|
+
function UpdateBody({ update, onLater, onMerged, compact = false }) {
|
|
991
1078
|
const { actions } = useStudio();
|
|
992
1079
|
const [showNotes, setShowNotes] = react.useState(!compact);
|
|
993
1080
|
const [busy, setBusy] = react.useState(false);
|
|
994
1081
|
const [outcome, setOutcome] = react.useState(null);
|
|
995
|
-
const merged = outcome?.state === "merged";
|
|
996
|
-
const deploy = useDeployed(merged, merged ? outcome.sha : null);
|
|
997
1082
|
const run = async () => {
|
|
998
1083
|
setBusy(true);
|
|
999
1084
|
try {
|
|
1000
|
-
|
|
1085
|
+
const result = await actions.updateStudio(update.number);
|
|
1086
|
+
setOutcome(result);
|
|
1087
|
+
if (result.state === "merged") onMerged({ version: update.version, sha: result.sha });
|
|
1001
1088
|
} finally {
|
|
1002
1089
|
setBusy(false);
|
|
1003
1090
|
}
|
|
1004
1091
|
};
|
|
1005
|
-
|
|
1006
|
-
const live = deploy === "live";
|
|
1007
|
-
const steps = [
|
|
1008
|
-
{ label: "Updated", state: "done", note: `Studio ${update.version}` },
|
|
1009
|
-
{ label: "Live", state: live ? "done" : "active", note: live ? "On the site now" : deploy === "slow" ? "Taking longer than usual" : "Rebuilding, about two minutes" }
|
|
1010
|
-
];
|
|
1011
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rz-update${compact ? " rz-update--strip" : ""}`, role: "status", children: [
|
|
1012
|
-
/* @__PURE__ */ jsxRuntime.jsx(Steps, { steps }),
|
|
1013
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rz-update__done", children: live ? `Studio ${update.version} is live. Reload and the version at the foot of the sidebar will change.` : "The version shown in Studio changes once the site has rebuilt." })
|
|
1014
|
-
] });
|
|
1015
|
-
}
|
|
1016
|
-
const problem = outcome && outcome.state !== "pending" ? outcome.state === "stale" ? "The site changed since the checks ran. Try again in a minute." : outcome.state === "red" ? `The checks failed${outcome.failingCheck ? ` (${outcome.failingCheck})` : ""}. Your web team has been able to see this.` : outcome.state === "error" ? outcome.message : null : null;
|
|
1092
|
+
const problem = outcome && outcome.state !== "pending" && outcome.state !== "merged" ? outcome.state === "stale" ? "The site changed since the checks ran. Try again in a minute." : outcome.state === "red" ? `The checks failed${outcome.failingCheck ? ` (${outcome.failingCheck})` : ""}. Your web team has been able to see this.` : outcome.state === "error" ? outcome.message : null : null;
|
|
1017
1093
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rz-update${compact ? " rz-update--strip" : ""}`, role: "status", children: [
|
|
1018
1094
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rz-update__row", children: [
|
|
1019
1095
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "rz-update__title", children: [
|
|
@@ -3955,25 +4031,28 @@ function BusinessTab({ initial }) {
|
|
|
3955
4031
|
}
|
|
3956
4032
|
function StudioTab({ update, version, role }) {
|
|
3957
4033
|
const { supportName } = useStudio();
|
|
4034
|
+
const [installing, setInstalling] = useInstalling();
|
|
3958
4035
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "acct-stack", children: [
|
|
3959
4036
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "acct-card", children: [
|
|
3960
4037
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "acct-title", children: [
|
|
3961
4038
|
"Studio ",
|
|
3962
4039
|
version
|
|
3963
4040
|
] }),
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
"
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
"
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
|
|
3975
|
-
|
|
3976
|
-
|
|
4041
|
+
installing ? /* @__PURE__ */ jsxRuntime.jsx(InstallTracker, { installing }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4042
|
+
!update && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "acct-blurb", children: "You\u2019re up to date. When a new version comes out, it appears here and as a strip at the top of every Studio page." }),
|
|
4043
|
+
update?.state === "checking" && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "acct-blurb", children: [
|
|
4044
|
+
"Studio ",
|
|
4045
|
+
update.version,
|
|
4046
|
+
" is on its way \u2014 the checks are still running. Come back in a couple of minutes."
|
|
4047
|
+
] }),
|
|
4048
|
+
update?.state === "failed" && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "acct-blurb", children: [
|
|
4049
|
+
"Studio ",
|
|
4050
|
+
update.version,
|
|
4051
|
+
" is available, but its checks failed, so it can\u2019t be installed yet.",
|
|
4052
|
+
role === "staff" && update.failingCheck ? ` Failing check: ${update.failingCheck}.` : ` ${supportName} has been able to see this and will sort it out.`
|
|
4053
|
+
] }),
|
|
4054
|
+
update?.state === "ready" && /* @__PURE__ */ jsxRuntime.jsx(UpdateBody, { update, onMerged: setInstalling })
|
|
4055
|
+
] })
|
|
3977
4056
|
] }),
|
|
3978
4057
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "acct-card", children: [
|
|
3979
4058
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "acct-title", children: "How updates work" }),
|
|
@@ -3984,7 +4063,7 @@ function StudioTab({ update, version, role }) {
|
|
|
3984
4063
|
/* @__PURE__ */ jsxRuntime.jsx("b", { children: "Update" }),
|
|
3985
4064
|
". If the update would break anything, the button never unlocks. Your site looks for new versions once a week, on Monday morning."
|
|
3986
4065
|
] }),
|
|
3987
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "acct-blurb
|
|
4066
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "acct-blurb acct-blurb--link", children: [
|
|
3988
4067
|
/* @__PURE__ */ jsxRuntime.jsx("a", { href: "/admin/help#s-updates", children: "Everything about updates, in the Help center" }),
|
|
3989
4068
|
" \u2014 when they arrive, what they can and can\u2019t change, and what to do if one fails."
|
|
3990
4069
|
] })
|
|
@@ -4093,7 +4172,7 @@ Open the avatar menu (top right) and choose **Sign out**.
|
|
|
4093
4172
|
|
|
4094
4173
|
One item per kind of content this site publishes \u2014 on {siteName} that's {types}. Each opens a list of everything of that kind with its status. **Dashboard** at the top shows one card per kind with a count and how many changes are waiting. **Settings** at the bottom opens your account.
|
|
4095
4174
|
|
|
4096
|
-
|
|
4175
|
+
Press **Collapse** at the bottom to shrink the sidebar to icons. On a phone, the same items sit in a bar of icons along the bottom of the screen \u2014 Dashboard, each kind of content, Settings.
|
|
4097
4176
|
|
|
4098
4177
|
## A list page
|
|
4099
4178
|
|
|
@@ -5107,7 +5186,7 @@ Not from Studio. It's rarely needed, because an update can't touch your content,
|
|
|
5107
5186
|
|
|
5108
5187
|
## I pressed Update and nothing seems different
|
|
5109
5188
|
|
|
5110
|
-
|
|
5189
|
+
That's expected for the first couple of minutes. The strip turns into a tracker: **Updated** means the update was accepted; **Live** means the website has finished rebuilding, which takes about two minutes. The tracker stays on screen (even if you move around Studio or reload) until it's live, then offers a **Reload Studio** button. Until you reload, you're still using the old version and the number at the bottom of the sidebar hasn't changed \u2014 that's normal, not a failure.
|
|
5111
5190
|
|
|
5112
5191
|
## I pressed Update twice
|
|
5113
5192
|
|
|
@@ -5616,6 +5695,7 @@ exports.ContentEditor = ContentEditor;
|
|
|
5616
5695
|
exports.GLOSSARY = GLOSSARY;
|
|
5617
5696
|
exports.HELP_ARTICLES = HELP_ARTICLES;
|
|
5618
5697
|
exports.HELP_SECTIONS = HELP_SECTIONS;
|
|
5698
|
+
exports.InstallTracker = InstallTracker;
|
|
5619
5699
|
exports.Jargon = Jargon;
|
|
5620
5700
|
exports.PublishPanel = PublishPanel;
|
|
5621
5701
|
exports.RemoveItem = RemoveItem;
|
|
@@ -5645,6 +5725,7 @@ exports.joinTypes = joinTypes;
|
|
|
5645
5725
|
exports.publicDirOf = publicDirOf;
|
|
5646
5726
|
exports.searchHelp = searchHelp;
|
|
5647
5727
|
exports.useEntry = useEntry;
|
|
5728
|
+
exports.useInstalling = useInstalling;
|
|
5648
5729
|
exports.useStudio = useStudio;
|
|
5649
5730
|
//# sourceMappingURL=index.cjs.map
|
|
5650
5731
|
//# sourceMappingURL=index.cjs.map
|