Add tenant lifecycle view and limit controls
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-01 19:36:51 +01:00
parent 117250879b
commit da06db2d3b
22 changed files with 1312 additions and 148 deletions

View File

@@ -376,11 +376,19 @@ return [
'deletion_warning_sent_at' => 'Deletion warning sent at',
'anonymized_at' => 'Anonymized at',
'subscription_expires_at' => 'Subscription expires at',
'grace_period_ends_at' => 'Grace period ends at',
'max_photos_per_event' => 'Max photos per event',
'max_storage_mb' => 'Max storage (MB)',
'storage_used_mb' => 'Storage used',
'storage_remaining_mb' => 'Storage remaining',
'storage_usage_percent' => 'Storage usage',
'owner' => 'Owner',
'access_status' => 'Access status',
],
'sections' => [
'profile' => 'Profile',
'lifecycle' => 'Lifecycle',
'limits' => 'Limits',
'timeline' => 'Audit timeline',
],
'actions' => [
@@ -404,6 +412,28 @@ return [
'send_warning' => 'Send warning email',
'send_warning_missing_title' => 'No contact email available',
'send_warning_missing_body' => 'No email address is available to send the warning.',
'update_limits' => 'Update limits',
'update_subscription_expires_at' => 'Update subscription expiry',
'set_grace_period' => 'Set grace period',
'clear_grace_period' => 'Clear grace period',
'lifecycle_controls' => 'Lifecycle controls',
'note' => 'Internal note',
],
'pages' => [
'overview' => 'Overview',
'lifecycle' => 'Lifecycle',
'edit' => 'Edit',
],
'status' => [
'active' => 'Active',
'inactive' => 'Inactive',
'suspended' => 'Suspended',
'expired' => 'Expired',
'grace' => 'Grace period',
'anonymized' => 'Anonymized',
],
'limits' => [
'unlimited' => 'Unlimited',
],
'timeline' => [
'title' => 'Event',
@@ -422,6 +452,21 @@ return [
'anonymized_details' => 'Tenant data anonymized.',
'notification_sent' => 'Notification sent',
'notification_failed' => 'Notification failed',
'grace_period_until' => 'Grace until :date',
'by' => 'By :name',
'events' => [
'activated' => 'Tenant activated',
'deactivated' => 'Tenant deactivated',
'suspended' => 'Tenant suspended',
'unsuspended' => 'Tenant unsuspended',
'deletion_scheduled' => 'Deletion scheduled',
'deletion_cancelled' => 'Deletion cancelled',
'anonymize_requested' => 'Anonymization requested',
'grace_period_set' => 'Grace period set',
'grace_period_cleared' => 'Grace period cleared',
'limits_updated' => 'Limits updated',
'subscription_expires_at_updated' => 'Subscription expiry updated',
],
'tone' => [
'success' => 'Success',
'warning' => 'Warning',