@elytracms/studio 0.0.62 → 0.0.63

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.
Files changed (78) hide show
  1. package/dist/components/account/credential-panel.js +6 -1
  2. package/dist/components/account/credential-panel.js.map +1 -1
  3. package/dist/components/auth-context.d.ts +14 -0
  4. package/dist/components/auth-context.js +32 -2
  5. package/dist/components/auth-context.js.map +1 -1
  6. package/dist/components/builder/blocks-model.d.ts +7 -0
  7. package/dist/components/builder/blocks-model.js +5 -0
  8. package/dist/components/builder/blocks-model.js.map +1 -1
  9. package/dist/components/builder/blocks-panel.js +2 -2
  10. package/dist/components/builder/blocks-panel.js.map +1 -1
  11. package/dist/components/builder/fixture-thumbnail.d.ts +15 -0
  12. package/dist/components/builder/fixture-thumbnail.js +14 -0
  13. package/dist/components/builder/fixture-thumbnail.js.map +1 -1
  14. package/dist/components/cms/cms-index.js +6 -3
  15. package/dist/components/cms/cms-index.js.map +1 -1
  16. package/dist/components/deployment-setup-gate.js +40 -8
  17. package/dist/components/deployment-setup-gate.js.map +1 -1
  18. package/dist/components/operation-error.d.ts +7 -5
  19. package/dist/components/operation-error.js +19 -36
  20. package/dist/components/operation-error.js.map +1 -1
  21. package/dist/components/project-list.js +17 -1
  22. package/dist/components/project-list.js.map +1 -1
  23. package/dist/components/project-switcher.d.ts +10 -0
  24. package/dist/components/project-switcher.js +13 -3
  25. package/dist/components/project-switcher.js.map +1 -1
  26. package/dist/components/session-expired-overlay.d.ts +27 -0
  27. package/dist/components/session-expired-overlay.js +51 -0
  28. package/dist/components/session-expired-overlay.js.map +1 -0
  29. package/dist/components/sign-in-view.d.ts +13 -1
  30. package/dist/components/sign-in-view.js +27 -13
  31. package/dist/components/sign-in-view.js.map +1 -1
  32. package/dist/components/studio-project-screen.js +2 -2
  33. package/dist/components/studio-project-screen.js.map +1 -1
  34. package/dist/components/studio-shell.js +40 -3
  35. package/dist/components/studio-shell.js.map +1 -1
  36. package/dist/customization.d.ts +4 -1
  37. package/dist/customization.js +3 -0
  38. package/dist/customization.js.map +1 -1
  39. package/dist/lib/auth-errors.d.ts +58 -28
  40. package/dist/lib/auth-errors.js +93 -15
  41. package/dist/lib/auth-errors.js.map +1 -1
  42. package/dist/lib/i18n/index.d.ts +1 -0
  43. package/dist/lib/i18n/index.js.map +1 -1
  44. package/dist/lib/i18n/messages.de.d.ts +24 -0
  45. package/dist/lib/i18n/messages.de.js +1019 -0
  46. package/dist/lib/i18n/messages.de.js.map +1 -0
  47. package/dist/lib/i18n/messages.en.d.ts +880 -0
  48. package/dist/lib/i18n/messages.en.js +71 -3
  49. package/dist/lib/i18n/messages.en.js.map +1 -1
  50. package/dist/lib/operations/studio-operations.js +7 -0
  51. package/dist/lib/operations/studio-operations.js.map +1 -1
  52. package/dist/lib/persistence/deployment-readiness.d.ts +8 -1
  53. package/dist/lib/persistence/deployment-readiness.js +16 -1
  54. package/dist/lib/persistence/deployment-readiness.js.map +1 -1
  55. package/dist/lib/session-expiry.d.ts +67 -0
  56. package/dist/lib/session-expiry.js +72 -0
  57. package/dist/lib/session-expiry.js.map +1 -0
  58. package/dist/lib/tab-title.d.ts +53 -0
  59. package/dist/lib/tab-title.js +77 -0
  60. package/dist/lib/tab-title.js.map +1 -0
  61. package/dist/lib/workspace/index.d.ts +1 -1
  62. package/dist/lib/workspace/index.js +1 -1
  63. package/dist/lib/workspace/index.js.map +1 -1
  64. package/dist/lib/workspace/switcher-source.d.ts +27 -0
  65. package/dist/lib/workspace/switcher-source.js +30 -0
  66. package/dist/lib/workspace/switcher-source.js.map +1 -1
  67. package/dist/router/index.d.ts +6 -0
  68. package/dist/router/index.js +6 -0
  69. package/dist/router/index.js.map +1 -1
  70. package/dist/router/launcher-visit.d.ts +13 -0
  71. package/dist/router/launcher-visit.js +34 -0
  72. package/dist/router/launcher-visit.js.map +1 -0
  73. package/dist/router/root.js +12 -2
  74. package/dist/router/root.js.map +1 -1
  75. package/dist/ui/dialog.d.ts +15 -0
  76. package/dist/ui/dialog.js +17 -0
  77. package/dist/ui/dialog.js.map +1 -1
  78. package/package.json +6 -2
@@ -19,7 +19,7 @@ import { msg } from './types.js';
19
19
  * developer boot hints (backend/workspace gates) are a documented follow-up — they
20
20
  * need a message-with-elements splitter beyond the plain-string `translate()`.
21
21
  */
22
- export const EN_MESSAGES = {
22
+ const MESSAGES = {
23
23
  // ─────────────────────────────────────────────────────────────────────────
24
24
  // Common — generic, reused across surfaces
25
25
  // ─────────────────────────────────────────────────────────────────────────
@@ -54,7 +54,7 @@ export const EN_MESSAGES = {
54
54
  // ─────────────────────────────────────────────────────────────────────────
55
55
  // Built-in navigation views (the section rail)
56
56
  // ─────────────────────────────────────────────────────────────────────────
57
- 'nav.cms.label': msg('CMS'),
57
+ 'nav.cms.label': msg('Content'),
58
58
  'nav.cms.description': msg('Model collections, fields, and documents.'),
59
59
  'nav.components.label': msg('Components'),
60
60
  'nav.components.description': msg('Browse the registry of primitives and project components.'),
@@ -133,6 +133,9 @@ export const EN_MESSAGES = {
133
133
  'shell.deploymentSetup.issuesLabel': msg('Deployment setup checks', 'aria-label on the list of failing readiness checks.'),
134
134
  'shell.deploymentSetup.fixLabel': msg('Fix', 'Label before a copy-pasteable remediation command on the deployment-setup screen.'),
135
135
  'shell.deploymentSetup.retry': msg('Retry checks'),
136
+ // EC-399 — expected deployment env vars (presence only) on the setup screen.
137
+ 'shell.deploymentSetup.envSection': msg('Deployment environment'),
138
+ 'shell.deploymentSetup.envSectionHint': msg('Env vars this deployment is expected to carry — presence only, values are never shown. `elytra doctor` checks them definitively.'),
136
139
  'shell.unsavedChanges.title': msg('Unsaved changes'),
137
140
  'shell.unsavedChanges.body': msg('You have unsaved changes. Save them before leaving, or discard them.'),
138
141
  'shell.unsavedChanges.saving': msg('Saving…'),
@@ -145,11 +148,57 @@ export const EN_MESSAGES = {
145
148
  // Auth / errors
146
149
  // ─────────────────────────────────────────────────────────────────────────
147
150
  'auth.signIn': msg('Sign in'),
151
+ // EC-397 — the engine sign-in screen (`SignInView`/`SignInScreen`).
152
+ 'auth.signIn.heading': msg('Sign in to {productName}', 'Sign-in screen heading; {productName} is the product/brand name (default "Elytra").'),
153
+ 'auth.signIn.headingCreate': msg('Create your account', 'Sign-in screen heading in create-account mode.'),
154
+ 'auth.signIn.subtext.continue': msg('Continue to {project}.', 'Sign-in subtext; {project} is the active project name (data).'),
155
+ 'auth.signIn.subtext.register': msg('Register on {project}.', 'Create-account subtext; {project} is the active project name (data).'),
156
+ 'auth.signIn.subtext.generic': msg('Use your studio account to continue.', 'Sign-in subtext when no project name is known.'),
157
+ 'auth.signIn.emailLabel': msg('Email', 'Label of the email input on the sign-in form.'),
158
+ 'auth.signIn.emailPlaceholder': msg('you@example.com', 'Placeholder inside the email input — use a locale-typical example address.'),
159
+ 'auth.signIn.passwordLabel': msg('Password', 'Label of the password input on the sign-in form.'),
160
+ 'auth.signIn.submit': msg('Sign in', 'Submit button of the sign-in form.'),
161
+ 'auth.signIn.submitCreate': msg('Create account', 'Submit button in create-account mode.'),
162
+ 'auth.signIn.submitting': msg('Signing in…', 'Submit button while the sign-in request is in flight.'),
163
+ 'auth.signIn.submittingCreate': msg('Creating account…', 'Submit button while the create-account request is in flight.'),
164
+ 'auth.signIn.toggle.firstTime': msg('First time on this backend?', 'Lead-in before the "Create an account" link below the form.'),
165
+ 'auth.signIn.toggle.alreadyHave': msg('Already have an account on this backend?', 'Lead-in before the "Sign in" link in create-account mode.'),
166
+ 'auth.signIn.toggle.signIn': msg('Sign in', 'Link switching the form from create-account back to sign-in mode.'),
167
+ 'auth.signIn.toggle.createAccount': msg('Create an account', 'Link switching the form to create-account mode.'),
168
+ 'auth.signIn.devAccounts.title': msg('Playground mode — seeded dev accounts', 'Title of the seeded dev-credentials hint (playground mode only; the credential lines are fixtures, not chrome).'),
169
+ // EC-397 — engine-classified sign-in failures (the EC-362/EC-363 reason
170
+ // codes). Each message MUST stay byte-identical to the auth-adapter copy it
171
+ // localizes: `signInErrorMessageKey` (lib/auth-errors.ts) recognizes a
172
+ // failure by exact EN-message match, so a reworded adapter message simply
173
+ // falls back to the raw English until re-synced here —
174
+ // `lib/auth-errors.test.ts` pins the sync against the real classifier.
175
+ 'auth.signIn.error.invalidCredentials': msg('Email or password is incorrect.', 'Wrong password or unknown email on sign-in.'),
176
+ 'auth.signIn.error.invalidCredentialsSignUp': msg('That email or password can’t be used (password too short?).', 'Create-account rejection (invalid email or too-short password).'),
177
+ 'auth.signIn.error.accountExists': msg('An account with this email already exists — sign in instead.'),
178
+ 'auth.signIn.error.deploymentMisconfigured': msg('This deployment can’t sign you in: its auth signing key is not set. Run `npx @convex-dev/auth` against this deployment, then retry. (The deployment-setup check reports the same.)', 'EC-257 remedy: the backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),
179
+ 'auth.signIn.error.notInvited': msg('This deployment is invite-only. Ask an admin to invite your email, then create your account.', 'EC-324: sign-up rejected because the email is not on the invite allowlist.'),
180
+ 'auth.signIn.error.tooManyAttempts': msg('Too many failed sign-in attempts — wait a moment, then try again.', 'EC-363: the sign-in rate limit tripped.'),
181
+ 'auth.signIn.error.serverError': msg('Sign-in failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable sign-in failure.'),
182
+ 'auth.signIn.error.serverErrorSignUp': msg('Sign-up failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable create-account failure.'),
183
+ 'auth.signIn.error.unavailable': msg('Sign-in is currently unavailable.', 'The session could not be established after a successful authentication call.'),
184
+ 'auth.signIn.error.playgroundSignUp': msg('Sign-up isn’t available in playground mode — use the dev credentials below.', 'Playground mode has fixed seeded dev users; there is no registration.'),
185
+ // EC-397 — root-route boot states (`createStudioRootRoute`).
186
+ 'auth.boot.checkingSession': msg('Checking session…', 'Full-screen state while the stored session is restored at boot.'),
148
187
  'error.dismiss': msg('Dismiss error', 'aria-label on the error banner dismiss button.'),
149
- 'error.signedOut': msg('signed out', 'Badge on the session-expired error banner — lowercase token.'),
188
+ // EC-403 — the blocking session-expired re-auth overlay
189
+ // (`session-expired-overlay.tsx`), raised app-wide when any operation fails
190
+ // the session-expired predicate; re-auth happens in place, no navigation.
191
+ 'error.sessionExpiredTitle': msg("You've been signed out", 'Heading of the blocking session-expired re-auth overlay.'),
192
+ 'error.sessionExpired': msg("You've been signed out, so your latest changes aren't being saved. Sign in again to keep editing — your unsaved changes stay right here.", 'Body of the blocking session-expired re-auth overlay. Plain language — no auth/transport jargon.'),
150
193
  // ─────────────────────────────────────────────────────────────────────────
151
194
  // CMS — collection list / view bar / filters / cells
152
195
  // ─────────────────────────────────────────────────────────────────────────
196
+ // EC-412 — the CMS section landing (`cms-index.tsx`): the collection grid.
197
+ 'cms.index.heading': msg('Content', 'Display heading of the CMS section landing (the collection grid).'),
198
+ 'cms.index.description': msg('Schema-driven collections. Open a collection to browse its documents as a table and edit them in the detail editor.'),
199
+ 'cms.index.fieldCount.one': msg('{count} field', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),
200
+ 'cms.index.fieldCount.other': msg('{count} fields', 'Collection-card meta line, shown after the collection id; {count} is the schema field count.'),
201
+ 'cms.index.singleDocument': msg('Single document', 'Note on a singleton collection card (EC-217) — one fixed document instead of a row count.'),
153
202
  'cms.list.new': msg('New', 'Create button on a non-page collection.'),
154
203
  'cms.list.newPage': msg('New page'),
155
204
  'cms.list.newNamed': msg('New {noun}', 'Empty-state create button; {noun} is the singular collection label.'),
@@ -577,6 +626,19 @@ export const EN_MESSAGES = {
577
626
  'account.password.changing': msg('Changing…'),
578
627
  'account.password.changed': msg('Your password has been changed.'),
579
628
  'account.password.mismatch': msg('The new passwords don’t match.'),
629
+ // EC-412 — engine-classified change-password failures. Each message MUST stay
630
+ // byte-identical to the auth-adapter copy it localizes:
631
+ // `changePasswordErrorMessageKey` (lib/auth-errors.ts) recognizes a failure by
632
+ // exact EN-message match (the EC-397 sign-in pattern), so a reworded adapter
633
+ // message falls back to the raw English until re-synced here —
634
+ // `lib/auth-errors.test.ts` pins the sync against the real classifier.
635
+ 'account.password.error.notSignedIn': msg('You are not signed in.', 'Change-password attempt without a live session.'),
636
+ 'account.password.error.currentIncorrect': msg('Your current password is incorrect.'),
637
+ 'account.password.error.weakPassword': msg('Choose a stronger password (at least 8 characters).'),
638
+ 'account.password.error.tooManyAttempts': msg('Too many failed attempts — wait a moment, then try again.', 'EC-377: the current-password verification rate limit tripped.'),
639
+ 'account.password.error.deploymentMisconfigured': msg('This deployment can’t change your password: its auth signing key is not set. Run `npx @convex-dev/auth`.', 'The backend deployment has no auth signing key. Keep the `npx @convex-dev/auth` command verbatim.'),
640
+ 'account.password.error.serverError': msg('Password change failed (unexpected server error) — check the deployment logs.', 'Honest generic for an unclassifiable change-password failure.'),
641
+ 'account.password.error.playgroundUnsupported': msg('Password change isn’t available in playground mode.', 'Playground mode has fixed seeded dev users; credentials can’t change.'),
580
642
  // ─────────────────────────────────────────────────────────────────────────
581
643
  // Redirects (section)
582
644
  // ─────────────────────────────────────────────────────────────────────────
@@ -957,4 +1019,10 @@ export const EN_MESSAGES = {
957
1019
  'ai.update.diffBefore': msg('Current'),
958
1020
  'ai.update.diffAfter': msg('Proposed'),
959
1021
  };
1022
+ /**
1023
+ * The engine's built-in English source catalog (see the module docblock). Typed as
1024
+ * {@link SourceCatalog} (the open index signature) so runtime lookups by arbitrary
1025
+ * string key stay valid; the literal key set lives in {@link MessageKey}.
1026
+ */
1027
+ export const EN_MESSAGES = MESSAGES;
960
1028
  //# sourceMappingURL=messages.en.js.map