@goodfellow-cms/admin 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor.js +723 -23
- package/dist/{entry-values-BrY3L0Ai.js → entry-values-Bu8ljnoX.js} +765 -409
- package/dist/es-Dxyy-khR.js +2122 -0
- package/dist/index.d.ts +222 -8
- package/dist/index.js +4703 -3043
- package/dist/plugin-protocol-BgYL9WSm.js +458 -0
- package/dist/plugin.js +38 -3
- package/package.json +6 -5
- package/plugin.css +43 -39
- package/styles.css +483 -12
- package/dist/plugin-protocol-DkvBDqsF.js +0 -119
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare const defaultStrings: {
|
|
|
17
17
|
readonly "nav.blocks": "Blocks";
|
|
18
18
|
readonly "nav.layout": "Header & Footer";
|
|
19
19
|
readonly "nav.settings": "Site Settings";
|
|
20
|
+
readonly "nav.menu": "Menu";
|
|
20
21
|
readonly loading: "Loading…";
|
|
21
22
|
readonly "setup.noBackend": "This site's settings don't say where the site is stored, so the admin panel can't open it. A developer needs to add a backend to goodfellow.config.tsx.";
|
|
22
23
|
readonly "signIn.title": "Sign in to edit this site";
|
|
@@ -102,13 +103,24 @@ export declare const defaultStrings: {
|
|
|
102
103
|
readonly "editor.failed": "The editor stopped working. Reload the page to start it again.";
|
|
103
104
|
readonly "editor.frame": "Editing {title}";
|
|
104
105
|
readonly "editor.choose": "Editor";
|
|
106
|
+
readonly "editor.blockSearch": "Search blocks";
|
|
107
|
+
readonly "editor.blockSearchNone": 'No blocks match. Try another word, such as "picture" or "columns".';
|
|
108
|
+
readonly "editor.blockSearchFound": "Blocks found";
|
|
105
109
|
readonly "editor.standard": "Standard editor";
|
|
110
|
+
readonly "editor.plugin.switchLoses": "Some of what you changed in {editor} can't be kept in the other editor, so switching now leaves behind everything you changed since you opened {editor}. Switch anyway?\n\n{problems}";
|
|
111
|
+
readonly "editor.plugin.pageSettings": "The page's settings";
|
|
112
|
+
readonly "editor.plugin.problem": "{block}: {message}";
|
|
113
|
+
readonly "editor.plugin.problemField": "{block}, {field}: {message}";
|
|
114
|
+
readonly "editor.plugin.loading": "Opening {editor}…";
|
|
106
115
|
readonly "editor.plugin.failed": "{editor} didn't start. Choose the standard editor to keep editing.";
|
|
116
|
+
readonly "editor.invalid": "The editor gave back something this site can't publish, so nothing was published. Reload the page and try again.";
|
|
107
117
|
readonly "editor.plugin.invalid": "{editor} gave back something this site can't publish, so nothing was published. Try again, or choose the standard editor.";
|
|
108
118
|
readonly "publish.publishing": "Publishing…";
|
|
109
119
|
readonly "publish.done": "Published.";
|
|
110
120
|
readonly "publish.conflict": "Someone else changed the site since you opened this page, so your changes weren't published. Reload to see their changes, then make yours again.";
|
|
111
121
|
readonly "publish.error": "Your changes couldn't be published. Check your connection and try again.";
|
|
122
|
+
readonly "publish.reloaded": "This is the page as the other person left it. Make your changes again, or put yours back to publish them over theirs.";
|
|
123
|
+
readonly "publish.putMineBack": "Put my changes back";
|
|
112
124
|
readonly "publish.invalid": "Fix the highlighted problems before publishing.";
|
|
113
125
|
readonly "draft.label": "Draft";
|
|
114
126
|
readonly "draft.add": "Add to draft";
|
|
@@ -131,6 +143,9 @@ export declare const defaultStrings: {
|
|
|
131
143
|
readonly "draft.leave": "Back to the live site";
|
|
132
144
|
readonly "draft.waiting": "A draft started {date} is waiting to be published.";
|
|
133
145
|
readonly "draft.waitingMany": "{count} drafts are waiting to be published.";
|
|
146
|
+
readonly "draft.reviewWaiting": "A draft is waiting for review: {title}.";
|
|
147
|
+
readonly "draft.reviewWaitingMany": "{count} drafts are waiting for review.";
|
|
148
|
+
readonly "draft.inReview": "Submitted for review.";
|
|
134
149
|
readonly "draft.choose": "Draft to open";
|
|
135
150
|
readonly "draft.started": "Started {date}";
|
|
136
151
|
readonly "draft.open": "Open";
|
|
@@ -150,8 +165,25 @@ export declare const defaultStrings: {
|
|
|
150
165
|
readonly "checks.alsoWarnings": "These could be better too:";
|
|
151
166
|
readonly "checks.publishAnyway": "Publish anyway";
|
|
152
167
|
readonly "checks.goBack": "Go back";
|
|
168
|
+
readonly "limits.title": "Some of this is outside what you can change";
|
|
169
|
+
readonly "limits.intro": "An owner has limited what you can change on this site, and these changes are outside it:";
|
|
170
|
+
readonly "limits.review": "Submit them for review instead: the site's reviewers are asked to look, and can publish them for you.";
|
|
171
|
+
readonly "limits.noReview": "Ask an owner to make these changes for you, or to let you make them on Site Settings' Editors screen.";
|
|
172
|
+
readonly "limits.goBack": "Go back";
|
|
173
|
+
readonly "limits.submitting": "Submitting for review…";
|
|
174
|
+
readonly "limits.submitted": "Submitted for review. The live site stays as it is until a reviewer publishes it.";
|
|
175
|
+
readonly "limits.submitError": "The changes couldn't be submitted for review. Check your connection and try again.";
|
|
176
|
+
readonly "limits.page": "The page {name}";
|
|
177
|
+
readonly "limits.entry": "{name}, in {collection}";
|
|
178
|
+
readonly "limits.media": "The media library";
|
|
179
|
+
readonly "limits.layout": "The header and footer";
|
|
180
|
+
readonly "limits.menus": "The menus";
|
|
181
|
+
readonly "limits.other": "The site's settings, or other things only owners change";
|
|
182
|
+
readonly "limits.readOnly": "You can look at this, but an owner has limited what you can change, and it's outside it.";
|
|
183
|
+
readonly "limits.mediaReadOnly": "An owner has limited what you can change, and the media library is outside it. You can still use its files on pages you can change.";
|
|
153
184
|
readonly "checks.missing-page": "{place} links to {target}, which isn't a page on the site.";
|
|
154
185
|
readonly "checks.missing-media": "{place} uses {target}, which isn't in the media library.";
|
|
186
|
+
readonly "checks.unsafe-link": "{place} links to {target}, an address that would run code on the site. Pages leave it out: use an address that starts with https://, or one of the site's own pages.";
|
|
155
187
|
readonly "checks.no-title": "{place} has no title, so browser tabs and search results show only the site's name.";
|
|
156
188
|
readonly "checks.missing-translation": "{place} has no translation in {language} yet. Visitors reading in {language} are sent to its home page instead.";
|
|
157
189
|
readonly "checks.outdated-translation": "{place} has changed since its translation in {language} was made. Update the translation, then mark it as up to date.";
|
|
@@ -181,6 +213,7 @@ export declare const defaultStrings: {
|
|
|
181
213
|
readonly "pages.empty": "This site has no pages yet.";
|
|
182
214
|
readonly "pages.column.title": "Title";
|
|
183
215
|
readonly "pages.column.address": "Address";
|
|
216
|
+
readonly "pages.look": "Look";
|
|
184
217
|
readonly "pages.edit": "Edit";
|
|
185
218
|
readonly "pages.move": "Change address";
|
|
186
219
|
readonly "pages.duplicate": "Duplicate";
|
|
@@ -242,7 +275,7 @@ export declare const defaultStrings: {
|
|
|
242
275
|
readonly "deletePage.submit": "Delete page";
|
|
243
276
|
readonly "deletePage.message": 'Delete page "{title}"';
|
|
244
277
|
readonly "address.invalid": "Use lowercase letters, numbers and hyphens, with / between parts, such as /about-us.";
|
|
245
|
-
readonly "address.reserved": "This address
|
|
278
|
+
readonly "address.reserved": "This address can't be used: the admin panel uses it, or it ends in /index, which is the page above it. Choose another.";
|
|
246
279
|
readonly "address.taken": "Another page already uses this address.";
|
|
247
280
|
readonly "field.required": "This can't be empty.";
|
|
248
281
|
readonly "editPage.message": 'Update page "{title}"';
|
|
@@ -320,7 +353,7 @@ export declare const defaultStrings: {
|
|
|
320
353
|
readonly "newEntry.addressHint": "The last part of the page's address, as in {example}.";
|
|
321
354
|
readonly "newEntry.message": 'Add {entry} "{title}"';
|
|
322
355
|
readonly "entryName.invalid": "Use lowercase letters, numbers and hyphens only, such as easter-vigil.";
|
|
323
|
-
readonly "entryName.reserved": "This address
|
|
356
|
+
readonly "entryName.reserved": "This address can't be used: the admin panel uses it, or it ends in /index, which is the page above it. Choose another.";
|
|
324
357
|
readonly "entryName.taken": "Something else on the site already uses this address.";
|
|
325
358
|
readonly "moveEntry.message": 'Move {entry} "{title}" from {from} to {to}';
|
|
326
359
|
readonly "deleteEntry.body": "{title} will be removed from {name}.";
|
|
@@ -451,6 +484,11 @@ export declare const defaultStrings: {
|
|
|
451
484
|
readonly "blocks.discard": "Discard changes";
|
|
452
485
|
readonly "blocks.publish": "Publish";
|
|
453
486
|
readonly "blocks.publishedNotice": "Published. Added blocks will be in the editor's list of blocks, and removed ones gone from it, once the site has been updated.";
|
|
487
|
+
readonly "blocks.submit": "Submit for review";
|
|
488
|
+
readonly "blocks.reviewHint": "Blocks' code runs on this site's server, which holds its secrets, so adding and removing blocks is submitted for review, for a developer to accept.";
|
|
489
|
+
readonly "blocks.reviewDescription": "From the admin panel's Blocks screen. The blocks' code runs on the site's server.";
|
|
490
|
+
readonly "blocks.submittedNotice": "Submitted for review. Once a developer accepts it and the site has been updated, the editor's list of blocks will change.";
|
|
491
|
+
readonly "blocks.seeReview": "See it";
|
|
454
492
|
readonly "blocks.addMessage": "Add the {name} block";
|
|
455
493
|
readonly "blocks.removeMessage": "Remove the {name} block";
|
|
456
494
|
readonly "blocks.changeMessage": "Change blocks: {changes}";
|
|
@@ -488,6 +526,7 @@ export declare const defaultStrings: {
|
|
|
488
526
|
readonly "media.uploaded": "Uploaded. Visitors see new files once the live site is updated.";
|
|
489
527
|
readonly "media.uploadMessage": "Add {names}";
|
|
490
528
|
readonly "media.replaceMessage": "Replace {name}";
|
|
529
|
+
readonly "media.replaceKind": "{name} is a different kind of file from {target}. Replace it with a file of the same kind, or upload {name} as a new file.";
|
|
491
530
|
readonly "media.deleteMessage": "Delete {name}";
|
|
492
531
|
readonly "media.deleteTitle": "Delete {name}?";
|
|
493
532
|
readonly "media.deleteBody": "{name} will be removed from the site.";
|
|
@@ -513,6 +552,57 @@ export declare const defaultStrings: {
|
|
|
513
552
|
readonly "table.removeColumn": "Remove this column";
|
|
514
553
|
readonly "table.removeColumnNumber": "Remove column {column}";
|
|
515
554
|
readonly "table.cell": "Row {row}, column {column}";
|
|
555
|
+
readonly "style.align": "Text alignment";
|
|
556
|
+
readonly "style.align.default": "As the block has it";
|
|
557
|
+
readonly "style.align.left": "Left";
|
|
558
|
+
readonly "style.align.center": "Centered";
|
|
559
|
+
readonly "style.align.right": "Right";
|
|
560
|
+
readonly "style.align.justify": "Justified";
|
|
561
|
+
readonly "style.fontSize": "Text size";
|
|
562
|
+
readonly "style.fontSize.xs": "Extra small";
|
|
563
|
+
readonly "style.fontSize.sm": "Small";
|
|
564
|
+
readonly "style.fontSize.base": "Normal";
|
|
565
|
+
readonly "style.fontSize.lg": "Large";
|
|
566
|
+
readonly "style.fontSize.xl": "Extra large";
|
|
567
|
+
readonly "style.fontSize.2xl": "Very large";
|
|
568
|
+
readonly "style.fontSize.3xl": "Huge";
|
|
569
|
+
readonly "style.fontSize.4xl": "Very huge";
|
|
570
|
+
readonly "style.fontSize.5xl": "Giant";
|
|
571
|
+
readonly "style.fontSize.6xl": "Enormous";
|
|
572
|
+
readonly "style.color": "Text color";
|
|
573
|
+
readonly "style.background": "Background color";
|
|
574
|
+
readonly "style.colorDefault": "As the block has it";
|
|
575
|
+
readonly "style.colorCustom": "Choose a color";
|
|
576
|
+
readonly "style.contrast": "This text may be hard to read on this background. Try colors further apart.";
|
|
577
|
+
readonly "style.padding": "Space inside";
|
|
578
|
+
readonly "style.margin": "Space around";
|
|
579
|
+
readonly "style.eachSide": "Set each side";
|
|
580
|
+
readonly "style.side.top": "Top";
|
|
581
|
+
readonly "style.side.right": "Right";
|
|
582
|
+
readonly "style.side.bottom": "Bottom";
|
|
583
|
+
readonly "style.side.left": "Left";
|
|
584
|
+
readonly "style.allSides": "All sides";
|
|
585
|
+
readonly "style.none": "None";
|
|
586
|
+
readonly "style.radius": "Rounded corners";
|
|
587
|
+
readonly "style.hiddenOn": "Hide on";
|
|
588
|
+
readonly "style.hiddenOn.phones": "Phones (narrower than 640px)";
|
|
589
|
+
readonly "style.hiddenOn.tablets": "Tablets (640px to 1023px)";
|
|
590
|
+
readonly "style.hiddenOn.computers": "Computers (1024px and wider)";
|
|
591
|
+
readonly "style.hiddenOnHint": "Choose a preview width above the page to see it as each size of screen does. A block hidden there is still in the Outline, where you can choose it.";
|
|
592
|
+
readonly "style.hiddenOnAll": "This block is hidden on every size of screen, so visitors never see it.";
|
|
593
|
+
readonly "style.radius.none": "Square";
|
|
594
|
+
readonly "style.radius.sm": "Slightly rounded";
|
|
595
|
+
readonly "style.radius.md": "Rounded";
|
|
596
|
+
readonly "style.radius.lg": "The theme's rounding";
|
|
597
|
+
readonly "style.radius.xl": "Very rounded";
|
|
598
|
+
readonly "style.radius.full": "Round";
|
|
599
|
+
readonly "style.default": "As the block has it";
|
|
600
|
+
readonly "style.custom": "Your own…";
|
|
601
|
+
readonly "style.customLength": "Your own size, such as 12px or 1.5rem";
|
|
602
|
+
readonly "style.customLengthInvalid": "Write a number with px, rem, em or %, such as 12px.";
|
|
603
|
+
readonly "style.other": "Other CSS classes";
|
|
604
|
+
readonly "style.otherHint": "Tailwind classes, or your own from Custom CSS, separated by spaces.";
|
|
605
|
+
readonly "style.reset": "Back to the block's own look";
|
|
516
606
|
readonly "media.credit": "Credit: {credit}";
|
|
517
607
|
readonly "media.stored": "Kept by {plugin}";
|
|
518
608
|
readonly "media.error.storageSize": "{name} is too large: {plugin} takes files up to {size}.";
|
|
@@ -604,10 +694,8 @@ export declare const defaultStrings: {
|
|
|
604
694
|
readonly "ai.error.answer": "The answer couldn't be used. Try again, or try a different model or service.";
|
|
605
695
|
readonly "ai.error.service": "{service} reported a problem. Try again in a moment.";
|
|
606
696
|
readonly "settings.title": "Site Settings";
|
|
607
|
-
readonly "appearance.
|
|
608
|
-
readonly "
|
|
609
|
-
readonly "appearance.light": "Light";
|
|
610
|
-
readonly "appearance.dark": "Dark";
|
|
697
|
+
readonly "appearance.darkMode": "Dark mode";
|
|
698
|
+
readonly "adminLanguage.label": "Language of the admin panel";
|
|
611
699
|
readonly "settings.tab.general": "General";
|
|
612
700
|
readonly "settings.tab.languages": "Languages";
|
|
613
701
|
readonly "settings.tab.theme": "Colors & fonts";
|
|
@@ -623,6 +711,7 @@ export declare const defaultStrings: {
|
|
|
623
711
|
readonly "settings.previewEmpty": "Add a home page to see a preview here.";
|
|
624
712
|
readonly "domain.intro": "Connect a domain you own, such as example.org, so the site is at that address.";
|
|
625
713
|
readonly "domain.current": "The site is at {address} now.";
|
|
714
|
+
readonly "domain.copy": "This admin panel is a copy of the site's, such as a staging site, at {address}. That address is set where the copy is built, so the domain this screen connects is the main site's.";
|
|
626
715
|
readonly "domain.connected": "Connected to {domain}.";
|
|
627
716
|
readonly "domain.signIn": "Editors sign in by going to {host} and coming back here. Add {address} to the redirect URIs of the application they sign in with on {host}, or signing in will stop working once the site moves.";
|
|
628
717
|
readonly "domain.local": "Domains are connected in the published site's admin panel, where you sign in with GitHub, GitLab or Bitbucket.";
|
|
@@ -722,6 +811,7 @@ export declare const defaultStrings: {
|
|
|
722
811
|
readonly "security.contentOnly": "The sign-in page is set in the site's code, which is kept apart from its content, so a developer sets it there.";
|
|
723
812
|
readonly "security.broker.title": "Sign-in page";
|
|
724
813
|
readonly "security.broker.intro": "A sign-in page of its own, called a token broker, keeps editors' sign-in and AI keys at an address that holds nothing else, and shows the admin panel from there, so nothing on the site's pages can reach them. It asks the editor before publishing the site's code. It needs an address of its own, such as signin.example.org, that serves nothing else.";
|
|
814
|
+
readonly "security.exposed": "Editors sign in at the site's own address, where its pages could reach their sign-in: code added on the Code tab, or by a block, could act as anyone signed in. A sign-in page of its own, below, keeps it out of their reach, and needs no domain on GitLab, Cloudflare Pages or Vercel. Where you have a domain and the host allows it, an admin address of its own, on the Domain screen, does too.";
|
|
725
815
|
readonly "security.broker.useTitle": "Sign in at a sign-in page that's online";
|
|
726
816
|
readonly "security.add.title": "Add a token broker";
|
|
727
817
|
readonly "security.add.intro": "Makes a project on {host} for the sign-in page, from Goodfellow's released files and a file naming this site, and puts it online where you choose. It needs a token that can create projects, used only now and kept only until you leave this screen.";
|
|
@@ -794,6 +884,74 @@ export declare const defaultStrings: {
|
|
|
794
884
|
readonly "settings.tab.editors": "Editors";
|
|
795
885
|
readonly "settings.tab.updates": "Updates";
|
|
796
886
|
readonly "settings.tab.history": "Site history";
|
|
887
|
+
readonly "settings.tab.comments": "Comments";
|
|
888
|
+
readonly "comments.intro": "Visitors' comments are kept on GitHub, in a public project of their own, and shown on pages with the Comments block through Giscus. Visitors sign in with a GitHub account to comment.";
|
|
889
|
+
readonly "comments.demo": "Comments can't be set up in the demo.";
|
|
890
|
+
readonly "comments.local": "Comments are set up from the admin panel on the live site, which signs in to GitHub. Pages here show them once they are.";
|
|
891
|
+
readonly "comments.unavailable": "The admin panel can set comments up only where it signs in to GitHub itself. Set them up on GitHub as the documentation's Comments page says, then paste Giscus's code into the Comments block.";
|
|
892
|
+
readonly "comments.setup.title": "Set up comments";
|
|
893
|
+
readonly "comments.setup.new": "Make a new project for comments";
|
|
894
|
+
readonly "comments.setup.existing": "Use a project I already have";
|
|
895
|
+
readonly "comments.setup.name": "Name of the new project";
|
|
896
|
+
readonly "comments.setup.nameHint": "It's made beside the site's own on GitHub. Anyone can read it, since visitors read the comments from there.";
|
|
897
|
+
readonly "comments.setup.existingName": "The project, as owner/name or its address on GitHub";
|
|
898
|
+
readonly "comments.setup.existingHint": "It must be public. Its Discussions are turned on if they're off.";
|
|
899
|
+
readonly "comments.setup.button": "Set up comments";
|
|
900
|
+
readonly "comments.setup.working": "Setting up…";
|
|
901
|
+
readonly "comments.setup.description": "Visitors' comments on {site}";
|
|
902
|
+
readonly "comments.setup.message": "Set up comments";
|
|
903
|
+
readonly "comments.install.title": "Last step: install Giscus";
|
|
904
|
+
readonly "comments.install.intro": "Giscus is the GitHub app that shows comments on pages and posts what visitors write. Install it on {project}, choosing only that project.";
|
|
905
|
+
readonly "comments.install.button": "Install Giscus";
|
|
906
|
+
readonly "comments.install.then": "Then add the Comments block to a page, or to a collection's template. Pages show comments once the site has been rebuilt.";
|
|
907
|
+
readonly "comments.place.title": "Where comments are kept";
|
|
908
|
+
readonly "comments.place.kept": "Comments are kept as {category} discussions in";
|
|
909
|
+
readonly "comments.place.install": "If pages don't show comments, check that Giscus is installed on the project:";
|
|
910
|
+
readonly "comments.place.giscus": "Giscus on GitHub";
|
|
911
|
+
readonly "comments.stop.button": "Stop using comments";
|
|
912
|
+
readonly "comments.stop.title": "Stop using comments?";
|
|
913
|
+
readonly "comments.stop.body": "Pages stop showing comments once the site has been rebuilt. Everything visitors wrote stays in {project} on GitHub, so you can set comments up with it again later.";
|
|
914
|
+
readonly "comments.stop.message": "Stop using comments";
|
|
915
|
+
readonly "comments.moderate.title": "What visitors have written";
|
|
916
|
+
readonly "comments.moderate.empty": "No one has commented yet.";
|
|
917
|
+
readonly "comments.moderate.more": "Show more pages";
|
|
918
|
+
readonly "comments.moderate.block": "To stop someone commenting at all, block them on GitHub.";
|
|
919
|
+
readonly "comments.moderate.blockLink": "How to block someone";
|
|
920
|
+
readonly "comments.thread.count": "Comments: {count}";
|
|
921
|
+
readonly "comments.thread.locked": "Closed to new comments";
|
|
922
|
+
readonly "comments.thread.lock": "Close to new comments";
|
|
923
|
+
readonly "comments.thread.unlock": "Open to new comments";
|
|
924
|
+
readonly "comments.openOnGitHub": "Open on GitHub";
|
|
925
|
+
readonly "comments.comment.hidden": "Hidden";
|
|
926
|
+
readonly "comments.comment.hiddenAs": "Hidden as {reason}";
|
|
927
|
+
readonly "comments.comment.hide": "Hide";
|
|
928
|
+
readonly "comments.comment.show": "Show again";
|
|
929
|
+
readonly "comments.comment.delete": "Delete";
|
|
930
|
+
readonly "comments.hide.title": "Hide this comment?";
|
|
931
|
+
readonly "comments.hide.body": "It stays on the page, folded away and marked with why it was hidden, until you show it again.";
|
|
932
|
+
readonly "comments.hide.reason": "Why";
|
|
933
|
+
readonly "comments.reason.spam": "spam";
|
|
934
|
+
readonly "comments.reason.abuse": "abusive";
|
|
935
|
+
readonly "comments.reason.off-topic": "off topic";
|
|
936
|
+
readonly "comments.delete.title": "Delete this comment?";
|
|
937
|
+
readonly "comments.delete.body": "It's removed for good.";
|
|
938
|
+
readonly "comments.delete.bodyReplies": "It's removed for good, with the replies to it.";
|
|
939
|
+
readonly "comments.token.title": "Use a GitHub token for comments";
|
|
940
|
+
readonly "comments.token.intro": "The admin panel's sign-in can reach only the site's own project on GitHub. To set up and moderate comments, use a GitHub token of your own. It's kept only in this tab, until you sign out.";
|
|
941
|
+
readonly "comments.token.create": "Create a token on GitHub";
|
|
942
|
+
readonly "comments.token.scope": "It's filled in with what comments need: leave the choices as they are.";
|
|
943
|
+
readonly "comments.token.paste": "Copy the token and paste it here:";
|
|
944
|
+
readonly "comments.token.label": "GitHub token";
|
|
945
|
+
readonly "comments.token.active": "This tab is using a GitHub token of your own for comments.";
|
|
946
|
+
readonly "comments.error.no-access": "GitHub didn't let this sign-in do that. Use a GitHub token of your own, made by someone who can manage the project.";
|
|
947
|
+
readonly "comments.error.not-found": "GitHub has no project with that name, or this sign-in can't see it.";
|
|
948
|
+
readonly "comments.error.not-public": "That project is private, so visitors couldn't read its comments. Make it public on GitHub, then try again.";
|
|
949
|
+
readonly "comments.error.name-taken": "There's already a project with that name. Choose another name, or use it as a project you already have.";
|
|
950
|
+
readonly "comments.error.name-invalid": "A project's name can have only letters, numbers, hyphens, underscores and dots.";
|
|
951
|
+
readonly "comments.error.no-discussions": "Discussions are off in that project, and this sign-in can't turn them on. Turn them on in the project's settings on GitHub, then try again.";
|
|
952
|
+
readonly "comments.error.no-category": "That project's Discussions have no categories yet. Open its Discussions on GitHub once, then try again.";
|
|
953
|
+
readonly "comments.error.other": "Something went wrong on GitHub. Try again in a moment.";
|
|
954
|
+
readonly "comments.error.fix": "Open it on GitHub";
|
|
797
955
|
readonly "settings.tab.import": "WordPress";
|
|
798
956
|
readonly "settings.tab.themes": "Themes";
|
|
799
957
|
readonly "plugins.notFound": "The site has no plugin screen at this address.";
|
|
@@ -1149,7 +1307,7 @@ export declare const defaultStrings: {
|
|
|
1149
1307
|
readonly "updates.error.save": "The change couldn't be saved. Try again in a moment.";
|
|
1150
1308
|
readonly "updates.error.other": "Something went wrong. Try again in a moment.";
|
|
1151
1309
|
readonly "editors.intro": "The people who can edit this site.";
|
|
1152
|
-
readonly "editors.roles": "Editors can change and publish everything in the admin panel. Owners can also invite and remove editors, and connect a domain.";
|
|
1310
|
+
readonly "editors.roles": "Editors can change and publish everything in the admin panel, unless their limits below say otherwise. Owners can also invite and remove editors, limit what they can change, and connect a domain.";
|
|
1153
1311
|
readonly "editors.local": "Editors are invited in the published site's admin panel, where you sign in with GitHub, GitLab or Bitbucket.";
|
|
1154
1312
|
readonly "editors.demo": "Editors can't be invited in a demo.";
|
|
1155
1313
|
readonly "editors.loading": "Loading editors…";
|
|
@@ -1185,6 +1343,33 @@ export declare const defaultStrings: {
|
|
|
1185
1343
|
readonly "editors.error.invalid": "That isn't a username or email address that {host} accepts.";
|
|
1186
1344
|
readonly "editors.error.already": "They already edit the site, or have been invited.";
|
|
1187
1345
|
readonly "editors.error.other": "Something went wrong. Try again in a moment.";
|
|
1346
|
+
readonly "permissions.title": "Limits";
|
|
1347
|
+
readonly "permissions.intro": "Limit what someone can change: some pages, some collections, the media library, the header and footer, or the menus. Anyone not listed here can change everything their role allows. Changes outside someone's limits go to a reviewer, who publishes them or not.";
|
|
1348
|
+
readonly "permissions.where": "The admin panel keeps people to their limits, so nobody changes the wrong page by mistake. People who can publish to the site on {host} could still change other files there, so only a site with its own server holds everyone to them.";
|
|
1349
|
+
readonly "permissions.whereServer": "The site's server holds everyone to their limits, whatever they try.";
|
|
1350
|
+
readonly "permissions.host": "the site's host";
|
|
1351
|
+
readonly "permissions.person": "Their username";
|
|
1352
|
+
readonly "permissions.personHint": "The name they sign in with, as the list above shows it.";
|
|
1353
|
+
readonly "permissions.add": "Limit what they can change";
|
|
1354
|
+
readonly "permissions.change": "Change";
|
|
1355
|
+
readonly "permissions.remove": "Remove limits";
|
|
1356
|
+
readonly "permissions.nothing": "Nothing yet";
|
|
1357
|
+
readonly "permissions.allPages": "Every page";
|
|
1358
|
+
readonly "permissions.editTitle": "What {name} can change";
|
|
1359
|
+
readonly "permissions.editIntro": "Tick what they can change. They can look at everything else, and submit changes to it for review.";
|
|
1360
|
+
readonly "permissions.pages": "Pages";
|
|
1361
|
+
readonly "permissions.pagesHint": "Each with the pages under it, and their translations.";
|
|
1362
|
+
readonly "permissions.collections": "Collections' items";
|
|
1363
|
+
readonly "permissions.more": "Also";
|
|
1364
|
+
readonly "permissions.languages": "Languages";
|
|
1365
|
+
readonly "permissions.everyLanguage": "Every language";
|
|
1366
|
+
readonly "permissions.save": "Publish limits";
|
|
1367
|
+
readonly "permissions.message": "Change what {name} can change";
|
|
1368
|
+
readonly "permissions.removeMessage": "Let {name} change everything";
|
|
1369
|
+
readonly "permissions.reviewers": "Who reviews changes outside someone's limits";
|
|
1370
|
+
readonly "permissions.reviewersHint": "Usernames, separated by commas. Leave it empty for every owner.";
|
|
1371
|
+
readonly "permissions.saveReviewers": "Publish reviewers";
|
|
1372
|
+
readonly "permissions.reviewersMessage": "Change who reviews changes outside editors' limits";
|
|
1188
1373
|
readonly "general.siteTitle": "Site name";
|
|
1189
1374
|
readonly "general.description": "Description";
|
|
1190
1375
|
readonly "general.descriptionHint": "Shown by search engines when a page doesn't have its own description.";
|
|
@@ -1237,6 +1422,25 @@ export declare const defaultStrings: {
|
|
|
1237
1422
|
readonly "forms.accessKeyLink": "Get an access key from Web3Forms";
|
|
1238
1423
|
readonly "forms.captcha": "Ask visitors to show they aren't robots (hCaptcha)";
|
|
1239
1424
|
readonly "forms.captchaHint": "Adds Web3Forms' hCaptcha and its script to pages with a form. To turn away answers without it, also turn hCaptcha on for the form in a Web3Forms account.";
|
|
1425
|
+
readonly "consent.title": "Visitors' consent";
|
|
1426
|
+
readonly "consent.ask": "Ask visitors before showing content from other sites";
|
|
1427
|
+
readonly "consent.hint": "Videos from YouTube and Vimeo, Google forms and maps, hCaptcha and the code under Code wait until visitors agree, with a notice at the bottom of the page that asks them. Their answer is kept in their browser. Links to #consent, such as in a menu, open the notice again.";
|
|
1428
|
+
readonly "consent.message": "What the notice says";
|
|
1429
|
+
readonly "consent.accept": "Button that agrees";
|
|
1430
|
+
readonly "consent.decline": "Button that doesn't";
|
|
1431
|
+
readonly "consent.held": "What's shown in a video's or form's place";
|
|
1432
|
+
readonly "consent.heldHint": "{site} is where it comes from, such as youtube-nocookie.com.";
|
|
1433
|
+
readonly "consent.show": "Button there that shows it";
|
|
1434
|
+
readonly "consent.policy": "Privacy page";
|
|
1435
|
+
readonly "consent.policyHint": "The page that says what the site and the sites it shows content from do, such as /privacy.";
|
|
1436
|
+
readonly "consent.policyLabel": "Words of the link to it";
|
|
1437
|
+
readonly "consent.choose": "Button that shows the choices";
|
|
1438
|
+
readonly "consent.save": "Button that keeps the choices";
|
|
1439
|
+
readonly "consent.kind.content": "Choice for content from other sites";
|
|
1440
|
+
readonly "consent.kind.statistics": "Choice for statistics";
|
|
1441
|
+
readonly "consent.kind.marketing": "Choice for advertising";
|
|
1442
|
+
readonly "consent.days": "Ask again after this many days";
|
|
1443
|
+
readonly "consent.daysHint": "Visitors' answers last this long, then the notice asks again. 180 days, about six months, is common; regulators in Europe accept up to 395, 13 months.";
|
|
1240
1444
|
readonly "forms.formspree": "Formspree form address";
|
|
1241
1445
|
readonly "forms.formspreeHint": "Make a form in Formspree and copy its address, such as https://formspree.io/f/xyzabcde. On Formspree's free plan, visitors see Formspree's own thank-you page.";
|
|
1242
1446
|
readonly "forms.address": "Address forms send answers to";
|
|
@@ -1355,13 +1559,23 @@ export declare const defaultStrings: {
|
|
|
1355
1559
|
readonly "css.label": "Custom CSS";
|
|
1356
1560
|
readonly "code.editorHint": "Tab indents, and suggestions appear as you type. Press Escape, then Tab, to leave the editor. Ctrl+F finds and replaces.";
|
|
1357
1561
|
readonly "code.intro": "Code from services such as analytics or site verification, added to every page of the site. It never runs in the admin panel, so check it on the site once it's published. Paste only code you trust: it can change anything on the site.";
|
|
1562
|
+
readonly "code.exposed": "Editors sign in at the same address as the site's pages, so code here runs where it could act as anyone signed in to the admin panel, and publish changes as them.";
|
|
1563
|
+
readonly "code.exposedFix": "A sign-in page or an admin address of its own, on the Security tab, keeps their sign-in out of its reach.";
|
|
1358
1564
|
readonly "code.head": "In the page head";
|
|
1359
1565
|
readonly "code.headHint": "Script, style, link, meta and noscript tags, such as the ones Google Analytics gives you.";
|
|
1566
|
+
readonly "code.purpose.head": "What the code in the page head is for";
|
|
1567
|
+
readonly "code.purpose.body": "What the code at the end of the page is for";
|
|
1568
|
+
readonly "code.purposeHint": "Visitors choose which kinds to allow. Code needed for the site to work loads for everyone without asking, so choose it only for code that doesn't follow visitors.";
|
|
1569
|
+
readonly "code.purpose.needed": "Needed for the site to work: loads without asking";
|
|
1570
|
+
readonly "code.purpose.content": "Content from other sites, such as a chat widget";
|
|
1571
|
+
readonly "code.purpose.statistics": "Statistics, such as Google Analytics";
|
|
1572
|
+
readonly "code.purpose.marketing": "Advertising";
|
|
1360
1573
|
readonly "code.body": "At the end of the page";
|
|
1361
1574
|
readonly "code.bodyHint": "Any HTML, such as a chat widget, added just before the end of every page.";
|
|
1362
1575
|
readonly "code.error.text": 'The code in the page head has text outside a tag: "{text}". Only tags such as <script> and <meta> can go there.';
|
|
1363
1576
|
readonly "code.error.tag": 'A <{tag}> tag can\'t go in the page head. Put it in "At the end of the page" instead.';
|
|
1364
1577
|
readonly "code.error.unclosed": "A {tag} tag in the page head isn't closed.";
|
|
1578
|
+
readonly "code.error.template": "This code has </template> in it. While the site asks visitors before loading other sites' content, that would let the code run before they agree. Take it out.";
|
|
1365
1579
|
};
|
|
1366
1580
|
type StringKey = keyof typeof defaultStrings;
|
|
1367
1581
|
type Strings = Record<StringKey, string>;
|
|
@@ -1433,7 +1647,7 @@ interface AdminProps {
|
|
|
1433
1647
|
registry?: string;
|
|
1434
1648
|
}
|
|
1435
1649
|
/** The admin panel. Render it on its own page, such as `/admin`. */
|
|
1436
|
-
export declare function Admin({ site, frames, store, host, server, preview, siteUrl, strings, registry }: AdminProps): import("react").JSX.Element;
|
|
1650
|
+
export declare function Admin({ site, frames, store, host, server, preview, siteUrl, strings, registry }: AdminProps): import("react").JSX.Element | null;
|
|
1437
1651
|
/** Renders the admin panel into an element. */
|
|
1438
1652
|
export declare function mountAdmin(element: Element, props: AdminProps): void;
|
|
1439
1653
|
//#endregion
|