@antelopejs/dms-saas 0.2.0 → 0.3.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/README.md +307 -33
- package/dist/billing-state/index.d.ts +1 -0
- package/dist/billing-state/index.js +1 -0
- package/dist/billing-state/index.js.map +1 -1
- package/dist/billing-state/past-due-banner.d.ts +4 -0
- package/dist/billing-state/past-due-banner.js +25 -0
- package/dist/billing-state/past-due-banner.js.map +1 -0
- package/dist/config/runtime.d.ts +6 -1
- package/dist/config/runtime.js +50 -1
- package/dist/config/runtime.js.map +1 -1
- package/dist/crons/recompute-billing-state.js +4 -1
- package/dist/crons/recompute-billing-state.js.map +1 -1
- package/dist/data-api/platformOwner/index.d.ts +1 -0
- package/dist/data-api/platformOwner/index.js +1 -0
- package/dist/data-api/platformOwner/index.js.map +1 -1
- package/dist/data-api/platformOwner/invitations.d.ts +22 -0
- package/dist/data-api/platformOwner/invitations.js +121 -0
- package/dist/data-api/platformOwner/invitations.js.map +1 -0
- package/dist/data-api/platformOwner/invoice-options.js +3 -2
- package/dist/data-api/platformOwner/invoice-options.js.map +1 -1
- package/dist/data-api/platformOwner/workspaces.d.ts +3 -0
- package/dist/data-api/platformOwner/workspaces.js +64 -12
- package/dist/data-api/platformOwner/workspaces.js.map +1 -1
- package/dist/data-api/tenant/tenant-invoices.js +2 -10
- package/dist/data-api/tenant/tenant-invoices.js.map +1 -1
- package/dist/hooks/register.js +2 -1
- package/dist/hooks/register.js.map +1 -1
- package/dist/implementations/dms-saas/billing.d.ts +2 -1
- package/dist/implementations/dms-saas/billing.js +6 -0
- package/dist/implementations/dms-saas/billing.js.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/invoice-line-items/billing-window.js +2 -2
- package/dist/invoice-line-items/billing-window.js.map +1 -1
- package/dist/invoice-line-items/injection.d.ts +10 -0
- package/dist/invoice-line-items/injection.js +7 -3
- package/dist/invoice-line-items/injection.js.map +1 -1
- package/dist/operator-actions/db/lifecycle-delivery.model.js +1 -3
- package/dist/operator-actions/db/lifecycle-delivery.model.js.map +1 -1
- package/dist/operator-actions/db/lifecycle-delivery.table.d.ts +1 -1
- package/dist/operator-actions/db/lifecycle-delivery.table.js.map +1 -1
- package/dist/operator-actions/db/operator-action.model.js +1 -3
- package/dist/operator-actions/db/operator-action.model.js.map +1 -1
- package/dist/operator-actions/db/operator-action.table.d.ts +1 -1
- package/dist/operator-actions/db/operator-action.table.js.map +1 -1
- package/dist/operator-actions/index.d.ts +1 -0
- package/dist/operator-actions/index.js +1 -0
- package/dist/operator-actions/index.js.map +1 -1
- package/dist/operator-actions/invitation-commands.d.ts +12 -0
- package/dist/operator-actions/invitation-commands.js +46 -0
- package/dist/operator-actions/invitation-commands.js.map +1 -0
- package/dist/operator-actions/types.d.ts +1 -1
- package/dist/pages/platform/dashboard.js +2 -4
- package/dist/pages/platform/dashboard.js.map +1 -1
- package/dist/pages/platform/workspaces/detail.js +40 -1
- package/dist/pages/platform/workspaces/detail.js.map +1 -1
- package/dist/pages/platform/workspaces/index.d.ts +2 -8
- package/dist/pages/platform/workspaces/index.js +27 -111
- package/dist/pages/platform/workspaces/index.js.map +1 -1
- package/dist/pages/public/legal/privacy-policy.js +2 -1
- package/dist/pages/public/legal/privacy-policy.js.map +1 -1
- package/dist/pages/public/legal/terms-and-conditions.js +2 -1
- package/dist/pages/public/legal/terms-and-conditions.js.map +1 -1
- package/dist/pages/public/legal/terms-of-use.js +2 -1
- package/dist/pages/public/legal/terms-of-use.js.map +1 -1
- package/dist/plans/index.d.ts +1 -0
- package/dist/plans/index.js +1 -0
- package/dist/plans/index.js.map +1 -1
- package/dist/plans/platform-support.d.ts +2 -0
- package/dist/plans/platform-support.js +19 -0
- package/dist/plans/platform-support.js.map +1 -0
- package/dist/plans/seat-capacity.d.ts +9 -2
- package/dist/plans/seat-capacity.js +59 -12
- package/dist/plans/seat-capacity.js.map +1 -1
- package/dist/plans/seat-hooks.js +34 -13
- package/dist/plans/seat-hooks.js.map +1 -1
- package/dist/routes/platformOwner/credit-notes-issue.js +2 -1
- package/dist/routes/platformOwner/credit-notes-issue.js.map +1 -1
- package/dist/routes/platformOwner/dashboard.d.ts +8 -6
- package/dist/routes/platformOwner/dashboard.js +31 -17
- package/dist/routes/platformOwner/dashboard.js.map +1 -1
- package/dist/routes/platformOwner/index.d.ts +1 -0
- package/dist/routes/platformOwner/index.js +1 -0
- package/dist/routes/platformOwner/index.js.map +1 -1
- package/dist/routes/platformOwner/workspace-invitations.d.ts +13 -0
- package/dist/routes/platformOwner/workspace-invitations.js +73 -0
- package/dist/routes/platformOwner/workspace-invitations.js.map +1 -0
- package/dist/routes/public/register.d.ts +7 -3
- package/dist/routes/public/register.js +42 -27
- package/dist/routes/public/register.js.map +1 -1
- package/dist/routes/tenant/tenant-billing.d.ts +7 -11
- package/dist/routes/tenant/tenant-billing.js +34 -26
- package/dist/routes/tenant/tenant-billing.js.map +1 -1
- package/dist/routes/tenant/tenant-plan-ops.js +2 -2
- package/dist/routes/tenant/tenant-plan-ops.js.map +1 -1
- package/dist/routes/tenant/tenant-plan.d.ts +1 -0
- package/dist/routes/tenant/tenant-plan.js +27 -2
- package/dist/routes/tenant/tenant-plan.js.map +1 -1
- package/dist/routes/tenant/tenant-seats.d.ts +2 -4
- package/dist/routes/tenant/tenant-seats.js.map +1 -1
- package/dist/routes/tenant/workspaces.d.ts +2 -0
- package/dist/routes/tenant/workspaces.js +10 -4
- package/dist/routes/tenant/workspaces.js.map +1 -1
- package/dist/stripe/upcoming-invoice.d.ts +21 -0
- package/dist/stripe/upcoming-invoice.js +42 -0
- package/dist/stripe/upcoming-invoice.js.map +1 -0
- package/dist/stripe/webhook-dispatch.js +2 -0
- package/dist/stripe/webhook-dispatch.js.map +1 -1
- package/dist/types/config.d.ts +9 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -1
- package/dist/upcoming-invoice/db/preview-cache.model.d.ts +38 -0
- package/dist/upcoming-invoice/db/preview-cache.model.js +57 -0
- package/dist/upcoming-invoice/db/preview-cache.model.js.map +1 -0
- package/dist/upcoming-invoice/db/preview-cache.table.d.ts +10 -0
- package/dist/upcoming-invoice/db/preview-cache.table.js +42 -0
- package/dist/upcoming-invoice/db/preview-cache.table.js.map +1 -0
- package/dist/upcoming-invoice/eligibility.d.ts +17 -0
- package/dist/upcoming-invoice/eligibility.js +52 -0
- package/dist/upcoming-invoice/eligibility.js.map +1 -0
- package/dist/upcoming-invoice/invalidation.d.ts +2 -0
- package/dist/upcoming-invoice/invalidation.js +39 -0
- package/dist/upcoming-invoice/invalidation.js.map +1 -0
- package/dist/upcoming-invoice/mapping.d.ts +8 -0
- package/dist/upcoming-invoice/mapping.js +82 -0
- package/dist/upcoming-invoice/mapping.js.map +1 -0
- package/dist/upcoming-invoice/outcomes.d.ts +13 -0
- package/dist/upcoming-invoice/outcomes.js +15 -0
- package/dist/upcoming-invoice/outcomes.js.map +1 -0
- package/dist/upcoming-invoice/preview.d.ts +3 -0
- package/dist/upcoming-invoice/preview.js +80 -0
- package/dist/upcoming-invoice/preview.js.map +1 -0
- package/dist/upcoming-invoice/pricing.d.ts +3 -0
- package/dist/upcoming-invoice/pricing.js +84 -0
- package/dist/upcoming-invoice/pricing.js.map +1 -0
- package/dist/upcoming-invoice/usage.d.ts +14 -0
- package/dist/upcoming-invoice/usage.js +53 -0
- package/dist/upcoming-invoice/usage.js.map +1 -0
- package/dist/workspaces/billing-identity.d.ts +19 -0
- package/dist/workspaces/billing-identity.js +51 -0
- package/dist/workspaces/billing-identity.js.map +1 -0
- package/dist/workspaces/default-plan.d.ts +5 -0
- package/dist/workspaces/default-plan.js +110 -0
- package/dist/workspaces/default-plan.js.map +1 -0
- package/dist/workspaces/index.d.ts +2 -0
- package/dist/workspaces/index.js +2 -0
- package/dist/workspaces/index.js.map +1 -1
- package/dist/workspaces/invitations.d.ts +26 -0
- package/dist/workspaces/invitations.js +112 -0
- package/dist/workspaces/invitations.js.map +1 -0
- package/dist/workspaces/provisioning.d.ts +3 -3
- package/dist/workspaces/provisioning.js +49 -11
- package/dist/workspaces/provisioning.js.map +1 -1
- package/frontend-vue/app/components/BillingIdentityFields.vue +179 -0
- package/frontend-vue/app/components/PastDueBanner.vue +81 -0
- package/frontend-vue/app/components/PaymentMethodCard.vue +94 -38
- package/frontend-vue/app/components/PlanComparisonModal.vue +62 -26
- package/frontend-vue/app/components/PlanUpgradeModal.vue +181 -0
- package/frontend-vue/app/components/PlatformNotes.vue +4 -0
- package/frontend-vue/app/components/RefundButton.vue +10 -1
- package/frontend-vue/app/components/Register.vue +49 -92
- package/frontend-vue/app/components/SeatQuotaBanner.vue +28 -0
- package/frontend-vue/app/components/TenantBillingForm.vue +52 -128
- package/frontend-vue/app/components/TenantPlanCard.vue +68 -10
- package/frontend-vue/app/components/UserSummaryCard.vue +12 -10
- package/frontend-vue/app/components/WorkspaceAdminCreateModal.vue +202 -0
- package/frontend-vue/app/components/WorkspaceCreateModal.vue +46 -9
- package/frontend-vue/app/components/WorkspaceInvitationLink.vue +106 -0
- package/frontend-vue/app/components/WorkspaceSummaryCard.vue +39 -15
- package/frontend-vue/app/components/WorkspaceSuspended.vue +3 -5
- package/frontend-vue/app/components/WorkspaceSwitcherWidget.vue +8 -5
- package/frontend-vue/app/composables/useBillingCountries.ts +25 -5
- package/frontend-vue/app/composables/useBillingDocumentType.ts +9 -5
- package/frontend-vue/app/composables/useBillingIdentity.ts +141 -0
- package/frontend-vue/app/composables/useInvitationLink.ts +69 -0
- package/frontend-vue/app/composables/usePastDueBannerAction.ts +20 -0
- package/frontend-vue/app/composables/usePlanComparison.ts +15 -0
- package/frontend-vue/app/composables/usePlanFeatureFormat.ts +312 -20
- package/frontend-vue/app/composables/usePlanFeatureLabel.ts +24 -0
- package/frontend-vue/app/composables/useSaasRegistration.ts +110 -223
- package/frontend-vue/app/composables/useSeatQuota.ts +8 -0
- package/frontend-vue/app/composables/useStripePaymentElement.ts +3 -3
- package/frontend-vue/app/composables/useWorkspaceAccessCache.ts +29 -2
- package/frontend-vue/app/composables/useWorkspaceFinalization.ts +7 -32
- package/frontend-vue/app/custom-pages/auth/no-workspace.vue +49 -194
- package/frontend-vue/app/plugins/auth-links.ts +0 -4
- package/frontend-vue/app/plugins/billing-data-types.ts +4 -2
- package/frontend-vue/app/types/runtime-config.ts +13 -0
- package/frontend-vue/dms.frontend.ts +10 -4
- package/frontend-vue/i18n/locales/saas-en-GB.json +161 -36
- package/frontend-vue/i18n/locales/saas-fr-FR.json +162 -37
- package/frontend-vue/package.json +0 -1
- package/frontend-vue/pnpm-lock.yaml +1 -125
- package/package.json +5 -5
- package/frontend-vue/app/middleware/workspace-suspended.global.ts +0 -59
|
@@ -43,7 +43,8 @@
|
|
|
43
43
|
"no_stripe_price": "Plan has no Stripe price",
|
|
44
44
|
"seat_limit_reached": "The plan's member limit has been reached",
|
|
45
45
|
"no_pending_change": "No scheduled plan change to cancel",
|
|
46
|
-
"unpaid_invoice_blocks_downgrade": "An invoice is unpaid. Settle it before changing to a cheaper plan."
|
|
46
|
+
"unpaid_invoice_blocks_downgrade": "An invoice is unpaid. Settle it before changing to a cheaper plan.",
|
|
47
|
+
"no_free_plan": "No free plan is available for sign-up right now."
|
|
47
48
|
},
|
|
48
49
|
"workspace": {
|
|
49
50
|
"not_found": "Workspace not found",
|
|
@@ -96,7 +97,8 @@
|
|
|
96
97
|
"billing": {
|
|
97
98
|
"country_required": "Billing country is required",
|
|
98
99
|
"info_not_found": "Billing information not found",
|
|
99
|
-
"invalid_return_url": "Invalid return URL"
|
|
100
|
+
"invalid_return_url": "Invalid return URL",
|
|
101
|
+
"identity_incomplete": "Some required billing fields are missing or invalid."
|
|
100
102
|
},
|
|
101
103
|
"migration": {
|
|
102
104
|
"already_pending": "A migration is already pending for this plan"
|
|
@@ -164,7 +166,14 @@
|
|
|
164
166
|
"registration": {
|
|
165
167
|
"extras_invalid": "The additional registration fields are not in a supported format",
|
|
166
168
|
"extras_too_large": "The additional registration fields are too large",
|
|
167
|
-
"extras_too_complex": "The additional registration fields have too many entries"
|
|
169
|
+
"extras_too_complex": "The additional registration fields have too many entries",
|
|
170
|
+
"payment_method_required": "A payment method is required to sign up.",
|
|
171
|
+
"payment_method_disabled": "This deployment does not take a card at sign-up.",
|
|
172
|
+
"password_policy": "The password must be at least 8 characters long, with an uppercase letter, a number and one of {'@'}$!%*?&, and no other special character."
|
|
173
|
+
},
|
|
174
|
+
"invitations": {
|
|
175
|
+
"not_found": "This invitation no longer exists.",
|
|
176
|
+
"email_not_sent": "The invitation was renewed but the email could not be sent. Copy the invitation link and send it yourself."
|
|
168
177
|
}
|
|
169
178
|
},
|
|
170
179
|
"dashboard": {
|
|
@@ -194,14 +203,12 @@
|
|
|
194
203
|
},
|
|
195
204
|
"register": {
|
|
196
205
|
"title": "Sign up",
|
|
197
|
-
"page_description": "Create an account
|
|
198
|
-
"submit": "
|
|
199
|
-
"choose_plan": "Choose a plan",
|
|
206
|
+
"page_description": "Create an account and open your first workspace on the free plan.",
|
|
207
|
+
"submit": "Create my account",
|
|
200
208
|
"field": {
|
|
201
209
|
"email": "Email",
|
|
202
210
|
"password": "Password",
|
|
203
211
|
"full_name": "Full name",
|
|
204
|
-
"workspace_name": "Workspace name",
|
|
205
212
|
"company_name": "Company name",
|
|
206
213
|
"vat_number": "VAT number",
|
|
207
214
|
"country": "Country",
|
|
@@ -217,31 +224,25 @@
|
|
|
217
224
|
"business": "Business"
|
|
218
225
|
},
|
|
219
226
|
"error": {
|
|
220
|
-
"no_plan": "Please select a plan",
|
|
221
227
|
"no_payment": "Payment method required",
|
|
222
|
-
"no_country": "Please select your billing country",
|
|
223
228
|
"legal_required": "You must accept the terms and conditions and privacy policy",
|
|
224
229
|
"failed": "Registration failed",
|
|
225
230
|
"load": "Could not load the registration options"
|
|
226
231
|
},
|
|
227
232
|
"legal_acceptance": "I accept the {terms_and_conditions} and the {privacy_policy}",
|
|
228
|
-
"
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
+
"hint": {
|
|
234
|
+
"card": "Saved securely via Stripe. You are not charged on the free plan."
|
|
235
|
+
},
|
|
236
|
+
"skip_payment_method": "Add a card later",
|
|
237
|
+
"default_workspace_name": "{name}'s workspace"
|
|
233
238
|
},
|
|
234
239
|
"no_workspace": {
|
|
235
240
|
"title": "Set up your first workspace",
|
|
236
|
-
"subtitle": "You're signed in, but you don't belong to any workspace yet.
|
|
241
|
+
"subtitle": "You're signed in, but you don't belong to any workspace yet. Create one on the free plan to get started — you can rename it and upgrade later.",
|
|
237
242
|
"logout": "Sign out",
|
|
238
|
-
"submit": "Create workspace
|
|
243
|
+
"submit": "Create workspace",
|
|
239
244
|
"submitting": "Creating your workspace…",
|
|
240
245
|
"section": {
|
|
241
|
-
"details": "Workspace details",
|
|
242
|
-
"details_hint": "This is the workspace name your team will see.",
|
|
243
|
-
"plan": "Choose a plan",
|
|
244
|
-
"plan_hint": "You can switch later from the billing settings.",
|
|
245
246
|
"payment": "Payment method",
|
|
246
247
|
"payment_hint": "Saved securely via Stripe."
|
|
247
248
|
},
|
|
@@ -251,7 +252,7 @@
|
|
|
251
252
|
}
|
|
252
253
|
},
|
|
253
254
|
"oauth_registration": {
|
|
254
|
-
"entry_note": "Signing up with a provider still asks
|
|
255
|
+
"entry_note": "Signing up with a provider still asks you to accept the terms on the next step.",
|
|
255
256
|
"identity": {
|
|
256
257
|
"provider": "Signed in with {provider} as {email}",
|
|
257
258
|
"password": "Signed in as {email}",
|
|
@@ -445,7 +446,9 @@
|
|
|
445
446
|
"name": "Name is required.",
|
|
446
447
|
"plan": "Plan is required.",
|
|
447
448
|
"owner_email": "Owner email is required.",
|
|
448
|
-
"free_until_past": "The expiration date must be in the future."
|
|
449
|
+
"free_until_past": "The expiration date must be in the future.",
|
|
450
|
+
"load": "Could not load the plans.",
|
|
451
|
+
"failed": "Could not create the workspace."
|
|
449
452
|
},
|
|
450
453
|
"field": {
|
|
451
454
|
"name": "Workspace name",
|
|
@@ -454,8 +457,6 @@
|
|
|
454
457
|
"owner_email": "Owner email",
|
|
455
458
|
"owner_email_description": "If the email matches an existing user, they are added as owner. Otherwise an invite is sent.",
|
|
456
459
|
"name_description": "Internal workspace name (can be renamed later).",
|
|
457
|
-
"free_workspace": "Free workspace",
|
|
458
|
-
"free_workspace_description": "No Stripe billing. Untick to open a Stripe Checkout session the owner must complete.",
|
|
459
460
|
"free_until": "Free until",
|
|
460
461
|
"free_until_description": "Optional. Date when the comp expires. Leave empty for indefinite. After that date the workspace is flagged past_due and access is blocked until a paid plan is picked."
|
|
461
462
|
},
|
|
@@ -463,6 +464,11 @@
|
|
|
463
464
|
"name": "Acme Corp",
|
|
464
465
|
"plan": "Select a plan",
|
|
465
466
|
"owner_email": "owner{'@'}example.com"
|
|
467
|
+
},
|
|
468
|
+
"submit": "Create workspace",
|
|
469
|
+
"email_failed": {
|
|
470
|
+
"title": "Workspace created, but the invitation email could not be sent",
|
|
471
|
+
"description": "The owner has not been notified. Copy the invitation link and send it to them yourself."
|
|
466
472
|
}
|
|
467
473
|
}
|
|
468
474
|
},
|
|
@@ -517,7 +523,8 @@
|
|
|
517
523
|
"company_name": "Company name",
|
|
518
524
|
"customer_type": "Customer type",
|
|
519
525
|
"vat_number": "VAT number",
|
|
520
|
-
"owner": "Owner"
|
|
526
|
+
"owner": "Owner",
|
|
527
|
+
"owner_status": "Owner status"
|
|
521
528
|
},
|
|
522
529
|
"status": {
|
|
523
530
|
"active": "Active",
|
|
@@ -548,10 +555,18 @@
|
|
|
548
555
|
"cancelled": "Cancelled",
|
|
549
556
|
"pending_payment": "Pending payment"
|
|
550
557
|
},
|
|
558
|
+
"owner_status": {
|
|
559
|
+
"joined": "Joined",
|
|
560
|
+
"invitation_pending": "Invitation pending",
|
|
561
|
+
"invitation_expired": "Invitation expired",
|
|
562
|
+
"none": "No owner"
|
|
563
|
+
},
|
|
551
564
|
"summary": {
|
|
552
565
|
"title": "Workspace summary",
|
|
553
|
-
"members": "{count} member
|
|
554
|
-
"
|
|
566
|
+
"members": "{count} member | {count} members",
|
|
567
|
+
"platform_support": "{count} platform support | {count} platform support",
|
|
568
|
+
"per_month": "/mo",
|
|
569
|
+
"pending_invitations": "{count} pending invitation | {count} pending invitations"
|
|
555
570
|
},
|
|
556
571
|
"tabs": {
|
|
557
572
|
"invoices": "Invoices",
|
|
@@ -588,7 +603,39 @@
|
|
|
588
603
|
"load": "Could not load the creation options.",
|
|
589
604
|
"failed": "Could not create the workspace.",
|
|
590
605
|
"card": "Could not initialise card payment."
|
|
591
|
-
}
|
|
606
|
+
},
|
|
607
|
+
"no_plans": "No plan is available right now. Please contact support to create a workspace."
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"invitations": {
|
|
611
|
+
"caption": "Pending invitations",
|
|
612
|
+
"column": {
|
|
613
|
+
"status": "Status",
|
|
614
|
+
"sent_at": "Sent",
|
|
615
|
+
"expires_at": "Expires"
|
|
616
|
+
},
|
|
617
|
+
"status": {
|
|
618
|
+
"pending": "Pending",
|
|
619
|
+
"expired": "Expired"
|
|
620
|
+
},
|
|
621
|
+
"action": {
|
|
622
|
+
"resend": "Resend",
|
|
623
|
+
"resend_success": "Invitation sent again.",
|
|
624
|
+
"resend_confirm_title": "Resend this invitation?",
|
|
625
|
+
"resend_confirm_description": "A new link valid for 7 days is emailed to the invitee. The previous link stops working.",
|
|
626
|
+
"copy_link": "Copy invitation link"
|
|
627
|
+
},
|
|
628
|
+
"link": {
|
|
629
|
+
"title": "Invitation link",
|
|
630
|
+
"description": "Send this link to the invitee so they can create their account and join the workspace.",
|
|
631
|
+
"label": "Signup link",
|
|
632
|
+
"expires": "Valid until {date}.",
|
|
633
|
+
"copy": "Copy",
|
|
634
|
+
"copied": "Invitation link copied.",
|
|
635
|
+
"copy_failed": "Could not copy the link. Copy it manually:",
|
|
636
|
+
"error": "Could not retrieve the invitation link.",
|
|
637
|
+
"warning": "Anyone with this link can join the workspace as the invitee. Share it only with them.",
|
|
638
|
+
"close": "Close"
|
|
592
639
|
}
|
|
593
640
|
}
|
|
594
641
|
},
|
|
@@ -662,7 +709,9 @@
|
|
|
662
709
|
"subtotal": "Subtotal",
|
|
663
710
|
"tax": "Tax",
|
|
664
711
|
"total": "Total",
|
|
665
|
-
"lines": "Line items"
|
|
712
|
+
"lines": "Line items",
|
|
713
|
+
"total_excl_tax": "Total excl. tax",
|
|
714
|
+
"total_incl_tax": "Total incl. tax"
|
|
666
715
|
},
|
|
667
716
|
"actions": {
|
|
668
717
|
"download_pdf": "Download PDF",
|
|
@@ -911,7 +960,12 @@
|
|
|
911
960
|
"limit_reached_owner": "Your plan's seat limit is reached. Upgrade to add more members.",
|
|
912
961
|
"limit_reached_member": "Your plan's seat limit is reached. Ask a workspace owner to upgrade the plan.",
|
|
913
962
|
"upgrade": "Upgrade",
|
|
914
|
-
"load_failed": "Seat usage could not be loaded"
|
|
963
|
+
"load_failed": "Seat usage could not be loaded",
|
|
964
|
+
"platform_support": {
|
|
965
|
+
"title": "Platform support",
|
|
966
|
+
"badge": "Platform support",
|
|
967
|
+
"description": "These platform team members have access to this workspace to support you. They are listed in the members table without a role and do not use a seat."
|
|
968
|
+
}
|
|
915
969
|
},
|
|
916
970
|
"free_access": {
|
|
917
971
|
"banner_title": "Complimentary access",
|
|
@@ -952,7 +1006,15 @@
|
|
|
952
1006
|
"suspend_warning": "Without settlement the workspace is suspended on {date} — data and volumes are preserved.",
|
|
953
1007
|
"suspended_summary": "Invoice {invoice} of {amount} is still unpaid. Settling it restores access immediately.",
|
|
954
1008
|
"settle": "Settle on Stripe",
|
|
955
|
-
"load_failed": "Could not check the billing status of this workspace."
|
|
1009
|
+
"load_failed": "Could not check the billing status of this workspace.",
|
|
1010
|
+
"banner": {
|
|
1011
|
+
"generic": "Payment failed — this workspace has an unpaid invoice. The workspace owner must settle it to avoid suspension.",
|
|
1012
|
+
"generic_owner": "Payment failed — this workspace has an unpaid invoice. Settle it from the billing page to avoid suspension.",
|
|
1013
|
+
"open_billing": "Open billing",
|
|
1014
|
+
"summary": "Payment failed — invoice {invoice} of {amount} is unpaid.",
|
|
1015
|
+
"with_deadline": "Payment failed — invoice {invoice} of {amount} is unpaid. Settle it before {date} to avoid suspension.",
|
|
1016
|
+
"settle": "Settle"
|
|
1017
|
+
}
|
|
956
1018
|
},
|
|
957
1019
|
"payment_method": {
|
|
958
1020
|
"title": "Payment method",
|
|
@@ -962,8 +1024,15 @@
|
|
|
962
1024
|
"declined": "declined",
|
|
963
1025
|
"default": "default",
|
|
964
1026
|
"expires": "exp. {date}",
|
|
965
|
-
"none": "No card
|
|
966
|
-
"
|
|
1027
|
+
"none": "No card yet — you'll be asked for one when you move to a paid plan.",
|
|
1028
|
+
"none_with_portal": "No card on file — add one from the Stripe portal below.",
|
|
1029
|
+
"portal_hint": "Card changes, receipts and history all happen in the Stripe portal; the card is never stored on our side.",
|
|
1030
|
+
"verified": "verified",
|
|
1031
|
+
"never_charged": "never charged",
|
|
1032
|
+
"add": "Upgrade to a paid plan",
|
|
1033
|
+
"owner_only": "The payment method is managed by the workspace owner.",
|
|
1034
|
+
"update_note": "The last charge on this card was declined: update it in the Stripe portal, then settle the unpaid invoice.",
|
|
1035
|
+
"free_note": "Verified — never charged while the workspace stays on a free plan."
|
|
967
1036
|
},
|
|
968
1037
|
"billing_email": {
|
|
969
1038
|
"label": "Billing e-mail",
|
|
@@ -973,16 +1042,61 @@
|
|
|
973
1042
|
"verified": "verified (VIES)",
|
|
974
1043
|
"pending": "verification in progress",
|
|
975
1044
|
"unverified": "not verified"
|
|
1045
|
+
},
|
|
1046
|
+
"identity": {
|
|
1047
|
+
"to_complete": "to complete",
|
|
1048
|
+
"incomplete_toast": "Fill in the highlighted fields.",
|
|
1049
|
+
"optional": "optional",
|
|
1050
|
+
"country_placeholder": "Select a country",
|
|
1051
|
+
"customer_type_hint": {
|
|
1052
|
+
"business": "Invoiced to a company, with its VAT number.",
|
|
1053
|
+
"individual": "Invoiced in your own name."
|
|
1054
|
+
},
|
|
1055
|
+
"errors": {
|
|
1056
|
+
"customerType": "Choose a customer type.",
|
|
1057
|
+
"companyName": "The company name is required.",
|
|
1058
|
+
"country": "Choose the billing country.",
|
|
1059
|
+
"line1": "The address is required.",
|
|
1060
|
+
"postalCode": "The postal code is required.",
|
|
1061
|
+
"city": "The city is required.",
|
|
1062
|
+
"billingEmail": "Enter a valid e-mail address."
|
|
1063
|
+
}
|
|
976
1064
|
}
|
|
977
1065
|
},
|
|
978
1066
|
"plan": {
|
|
979
1067
|
"current": "Current plan",
|
|
980
|
-
"none": "No plan",
|
|
981
1068
|
"change": "Change plan",
|
|
982
1069
|
"go_paid": "Upgrade to a paid plan",
|
|
983
1070
|
"blocked_hint": "Plan changes resume once the unpaid invoice is settled.",
|
|
1071
|
+
"blocked_hint_inactive": "Plan changes resume once the workspace is active again.",
|
|
984
1072
|
"next_renewal": "Next renewal on {date}.",
|
|
985
1073
|
"unlimited": "unlimited",
|
|
1074
|
+
"units": {
|
|
1075
|
+
"byte": {
|
|
1076
|
+
"quantity": "{value} byte | {value} bytes",
|
|
1077
|
+
"price": "{price} / byte"
|
|
1078
|
+
},
|
|
1079
|
+
"kilobyte": {
|
|
1080
|
+
"quantity": "{value} KB",
|
|
1081
|
+
"price": "{price} / KB"
|
|
1082
|
+
},
|
|
1083
|
+
"megabyte": {
|
|
1084
|
+
"quantity": "{value} MB",
|
|
1085
|
+
"price": "{price} / MB"
|
|
1086
|
+
},
|
|
1087
|
+
"gigabyte": {
|
|
1088
|
+
"quantity": "{value} GB",
|
|
1089
|
+
"price": "{price} / GB"
|
|
1090
|
+
},
|
|
1091
|
+
"terabyte": {
|
|
1092
|
+
"quantity": "{value} TB",
|
|
1093
|
+
"price": "{price} / TB"
|
|
1094
|
+
},
|
|
1095
|
+
"minute": {
|
|
1096
|
+
"quantity": "{value} minute | {value} minutes",
|
|
1097
|
+
"price": "{price} / minute"
|
|
1098
|
+
}
|
|
1099
|
+
},
|
|
986
1100
|
"pending_downgrade": "Downgrade to {plan} at next cycle",
|
|
987
1101
|
"pending_downgrade_on": "Downgrade to {plan} on {date}",
|
|
988
1102
|
"cancel_downgrade": "Cancel downgrade",
|
|
@@ -996,14 +1110,25 @@
|
|
|
996
1110
|
},
|
|
997
1111
|
"comparison": {
|
|
998
1112
|
"title": "Change plan",
|
|
999
|
-
"subtitle": "
|
|
1113
|
+
"subtitle": "Workspace {workspace} — currently on {plan}. Upgrades apply immediately and are prorated; downgrades take effect at the next cycle.",
|
|
1000
1114
|
"subtitle_no_plan": "Upgrades apply immediately and are prorated; downgrades take effect at the next cycle.",
|
|
1001
1115
|
"current": "current",
|
|
1002
1116
|
"scheduled": "scheduled",
|
|
1003
1117
|
"choose": "Choose",
|
|
1004
1118
|
"show_detail": "See full detail",
|
|
1005
1119
|
"hide_detail": "Hide detail",
|
|
1006
|
-
"
|
|
1120
|
+
"close": "Close"
|
|
1121
|
+
},
|
|
1122
|
+
"upgrade": {
|
|
1123
|
+
"title": "Upgrade to {plan}",
|
|
1124
|
+
"description": "Confirm who is billed, then enter your card on Stripe's secure payment page.",
|
|
1125
|
+
"subscription": "{plan} subscription",
|
|
1126
|
+
"due_today": "Due today",
|
|
1127
|
+
"excl_tax": "{amount} excl. tax",
|
|
1128
|
+
"tax_note": "Tax is computed from the billing country below.",
|
|
1129
|
+
"card_title": "Payment card",
|
|
1130
|
+
"card_note": "The next step opens Stripe's secure payment page, where the card is entered and charged. It is never stored on our side.",
|
|
1131
|
+
"confirm": "Continue to payment"
|
|
1007
1132
|
}
|
|
1008
1133
|
},
|
|
1009
1134
|
"data_export": {
|