@fayz-ai/core 0.16.0 → 0.18.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.
@@ -382,7 +382,14 @@ var shellTranslationsEn = {
382
382
  "limit.label.content_posts_month": "monthly content posts",
383
383
  "limit.label.blog_posts": "blog posts",
384
384
  "limit.reached": "Voc\xEA atingiu o limite de {label} do plano {plan}.",
385
- "banner.overLimit": "Voc\xEA excedeu o limite de {label} do seu plano \u2014 fa\xE7a upgrade para continuar crescendo.",
385
+ "banner.overLimit": "You have exceeded your plan's {label} limit \u2014 upgrade to keep growing.",
386
+ "banner.overLimit.title": "You have used all your {resource}",
387
+ "banner.overLimit.planLabel": "{plan} plan",
388
+ "banner.overLimit.unlock": "Nothing is blocked. {plan} lifts this cap and keeps it out of your way.",
389
+ "banner.overLimit.body": "Nothing is blocked \u2014 but this is the ceiling of your plan.",
390
+ "banner.overLimit.ctaPriced": "Get {plan} \u2014 {price}/mo",
391
+ "banner.overLimit.compare": "Compare plans",
392
+ "banner.overLimit.more": "+{count} other limit(s) at the ceiling.",
386
393
  "settings.team": "Team",
387
394
  "settings.permissions": "Permissions",
388
395
  "settings.locations": "Locations",
@@ -1770,7 +1777,7 @@ function mergeTranslations(base, ...overrides) {
1770
1777
  registerTranslations(coreTranslations);
1771
1778
  registerTranslations({ en: shellTranslationsEn });
1772
1779
  var _lazyShellLocales = {
1773
- "pt-BR": () => import('./shell-translations.pt-br-HD4F3QKU.js').then((m) => m.shellTranslationsPtBr)
1780
+ "pt-BR": () => import('./shell-translations.pt-br-ZSSVWG6H.js').then((m) => m.shellTranslationsPtBr)
1774
1781
  };
1775
1782
  var _loadedShellLocales = /* @__PURE__ */ new Set(["en"]);
1776
1783
  var _pendingShellLocales = /* @__PURE__ */ new Map();
@@ -1793,5 +1800,5 @@ function preloadLocale(locale) {
1793
1800
  }
1794
1801
 
1795
1802
  export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation };
1796
- //# sourceMappingURL=chunk-ZIB6Y7TE.js.map
1797
- //# sourceMappingURL=chunk-ZIB6Y7TE.js.map
1803
+ //# sourceMappingURL=chunk-2VY5IJW7.js.map
1804
+ //# sourceMappingURL=chunk-2VY5IJW7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/shell-translations.en.ts","../src/i18n/index.ts"],"names":[],"mappings":"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","file":"chunk-2VY5IJW7.js","sourcesContent":["// Shared shell/CRUD/framework translations — en locale.\n// Split per-locale so only the active locale ships in the bundle: 'en' is the\n// eager fallback; other locales load via dynamic import in i18n/index.ts.\nexport const shellTranslationsEn: Record<string, string> = {\n \"common.save\": \"Save\",\n \"common.saveChanges\": \"Save Changes\",\n \"common.saving\": \"Saving...\",\n \"common.cancel\": \"Cancel\",\n \"common.delete\": \"Delete\",\n \"common.edit\": \"Edit\",\n \"common.you\": \"You\",\n \"common.close\": \"Close\",\n \"common.confirm\": \"Confirm\",\n \"common.back\": \"Back\",\n \"common.add\": \"Add\",\n \"common.loading\": \"Loading...\",\n \"common.error\": \"Something went wrong\",\n \"common.noResults\": \"No results found.\",\n \"common.search\": \"Search\",\n \"common.new\": \"New\",\n \"common.settings\": \"Settings\",\n \"common.actionsMenu\": \"More actions\",\n \"common.actions\": \"Actions\",\n \"common.continue\": \"Continue\",\n \"common.done\": \"Done\",\n \"common.yes\": \"Yes\",\n \"common.no\": \"No\",\n \"common.active\": \"Active\",\n \"common.inactive\": \"Inactive\",\n \"common.overview\": \"Overview\",\n \"common.notFound\": \"Not Found\",\n \"common.untitled\": \"Untitled\",\n \"common.noContentYet\": \"No content yet\",\n \"common.selectDate\": \"Select date\",\n \"common.plugins\": \"Plugins\",\n \"auth.login.title\": \"Sign in\",\n \"auth.login.titleCentered\": \"Welcome Back\",\n \"auth.login.subtitle\": \"Enter your credentials to access your account\",\n \"auth.login.emailLabel\": \"Email\",\n \"auth.login.emailPlaceholder\": \"you@example.com\",\n \"auth.login.passwordLabel\": \"Password\",\n \"auth.login.passwordPlaceholder\": \"Enter your password\",\n \"auth.login.forgotPassword\": \"Forgot password?\",\n \"auth.login.submit\": \"Sign in\",\n \"auth.login.submitting\": \"Signing in...\",\n \"auth.login.error\": \"Failed to sign in. Please try again.\",\n \"auth.login.oauthDivider\": \"or continue with\",\n \"auth.login.noAccount\": \"Don't have an account?\",\n \"auth.login.noAccountCentered\": \"Don't have an account yet?\",\n \"auth.login.signUpLink\": \"Sign up\",\n \"auth.login.socialProof\": \"Join thousands of businesses already using {{appName}}\",\n \"auth.signup.title\": \"Create account\",\n \"auth.signup.titleCentered\": \"Create Account\",\n \"auth.signup.subtitle\": \"Get started with your new account\",\n \"auth.signup.nameLabel\": \"Full name\",\n \"auth.signup.namePlaceholder\": \"John Doe\",\n \"auth.signup.emailLabel\": \"Email\",\n \"auth.signup.emailPlaceholder\": \"you@example.com\",\n \"auth.signup.passwordLabel\": \"Password\",\n \"auth.signup.passwordPlaceholder\": \"At least 8 characters\",\n \"auth.signup.confirmPasswordLabel\": \"Confirm password\",\n \"auth.signup.confirmPasswordPlaceholder\": \"Repeat your password\",\n \"auth.signup.termsPrefix\": \"By creating an account, you agree to our\",\n \"auth.signup.termsOfService\": \"Terms of Service\",\n \"auth.signup.privacyPolicy\": \"Privacy Policy\",\n \"auth.signup.submit\": \"Create account\",\n \"auth.signup.submitting\": \"Creating account...\",\n \"auth.signup.error\": \"Failed to create account. Please try again.\",\n \"auth.signup.passwordMismatch\": \"Passwords do not match.\",\n \"auth.signup.passwordTooShort\": \"Password must be at least 8 characters.\",\n \"auth.signup.success\": \"Account created for {{email}}. Check your inbox to confirm your email before signing in.\",\n \"auth.signup.hasAccount\": \"Already have an account?\",\n \"auth.signup.signInLink\": \"Sign in\",\n \"auth.recovery.title\": \"Reset password\",\n \"auth.recovery.titleCentered\": \"Reset Password\",\n \"auth.recovery.instruction\": \"Enter your email address and we will send you a link to reset your password.\",\n \"auth.recovery.subtitle\": \"We'll send you a reset link\",\n \"auth.recovery.emailLabel\": \"Email\",\n \"auth.recovery.emailPlaceholder\": \"you@example.com\",\n \"auth.recovery.submit\": \"Send reset link\",\n \"auth.recovery.submitting\": \"Sending...\",\n \"auth.recovery.error\": \"Failed to send reset email. Please try again.\",\n \"auth.recovery.successHeading\": \"Check your email\",\n \"auth.recovery.successMessage\": \"We sent a password reset link to {{email}}. Please check your inbox and follow the instructions.\",\n \"auth.recovery.backToLogin\": \"Back to login\",\n \"auth.oauth.continueWith\": \"Continue with {{provider}}\",\n \"auth.signIn\": \"Sign In\",\n \"auth.signUp\": \"Sign Up\",\n \"auth.signOut\": \"Sign Out\",\n \"auth.email\": \"Email\",\n \"auth.password\": \"Password\",\n \"auth.forgotPassword\": \"Forgot Password?\",\n \"crud.list.emptyGeneric\": \"Nothing here yet\",\n \"crud.list.empty\": \"No {{entities}} yet\",\n \"crud.list.addFirst\": \"Add your first {{entity}}\",\n \"crud.list.totalCount\": \"{{count}} total {{entities}}\",\n \"crud.list.searchPlaceholder\": \"Search {{entities}}...\",\n \"crud.list.allFacet\": \"All\",\n \"crud.list.addButton\": \"+ Add {{entity}}\",\n \"crud.list.rangeCount\": \"{{from}}–{{to}} of {{total}} {{entities}}\",\n \"crud.list.pageOf\": \"{{page}} / {{pages}}\",\n \"crud.list.prevPage\": \"Previous page\",\n \"crud.list.nextPage\": \"Next page\",\n \"crud.list.emptyFilteredGeneric\": \"No results for this search\",\n \"crud.list.emptyFiltered\": \"No {{entities}} match this search\",\n \"crud.list.emptyHintGeneric\": \"What you add shows up here.\",\n \"crud.list.emptyHint\": \"Your {{entities}} will show up here once you add them.\",\n \"crud.list.loadFailedGeneric\": \"Could not load\",\n \"crud.list.loadFailed\": \"Could not load the {{entities}}\",\n \"crud.list.refresh\": \"Refresh\",\n \"crud.list.refreshCached\": \"Local (cached) data — click to refresh from network\",\n \"crud.list.sort\": \"Sort\",\n \"crud.list.sortBy\": \"Sort by\",\n \"crud.list.sortAsc\": \"Ascending\",\n \"crud.list.sortDesc\": \"Descending\",\n \"crud.list.sortCreatedAt\": \"Created at\",\n \"crud.list.sortUpdatedAt\": \"Last updated\",\n \"crud.list.selectRow\": \"Select row\",\n \"crud.list.selectAllRows\": \"Select all rows\",\n \"crud.list.selectedOne\": \"1 selected\",\n \"crud.list.selectedMany\": \"{{count}} selected\",\n \"crud.list.selectAllCount\": \"Select all {{total}}\",\n \"crud.list.deselectAll\": \"Deselect all\",\n \"crud.list.bulkActions\": \"Actions for the selection\",\n \"crud.list.moreActions\": \"More actions\",\n \"crud.list.bulkDelete\": \"Delete\",\n \"crud.list.bulkDeleteTitle\": \"Delete {{count}} {{entities}}?\",\n \"crud.list.bulkDeleteConfirm\": \"The {{count}} selected records will be deleted. This action cannot be undone.\",\n \"crud.list.bulkDeleteDone\": \"{{count}} deleted\",\n \"crud.list.bulkDeleteFailed\": \"{{count}} could not be deleted\",\n \"crud.detail.notFound\": \"{{entity}} not found.\",\n \"crud.detail.backTo\": \"Back to {{entities}}\",\n \"crud.detail.createdAt\": \"Created {{date}}\",\n \"crud.detail.createdBy\": \"by {{user}}\",\n \"crud.detail.updatedAt\": \"Last edited {{date}}\",\n \"crud.form.addTitle\": \"Add {{entity}}\",\n \"crud.form.requiredField\": \"{{field}} is required\",\n \"crud.form.requiredFields\": \"These are required: {{fields}}\",\n \"crud.form.editTitle\": \"Edit {{entity}}\",\n \"crud.form.createSubtitle\": \"Create a new {{entity}}.\",\n \"crud.form.editSubtitle\": \"Update {{entity}} details.\",\n \"crud.form.newBreadcrumb\": \"New {{entity}}\",\n \"crud.form.selectPlaceholder\": \"Select {{label}}...\",\n \"crud.form.saveError\": \"Failed to save {{entity}}\",\n \"crud.form.saving\": \"Saving...\",\n \"crud.form.changeImage\": \"Change image\",\n \"crud.form.imageAfterSave\": \"Photo after saving\",\n \"crud.form.requiredIndicator\": \"*\",\n \"crud.import.action\": \"Import\",\n \"crud.import.hint\": \"Bring several in from a CSV file\",\n \"crud.import.title\": \"Import {{entity}}\",\n \"crud.import.step.download\": \"Template\",\n \"crud.import.step.upload\": \"Upload\",\n \"crud.import.step.mapping\": \"Mapping\",\n \"crud.import.step.importing\": \"Import\",\n \"crud.import.downloadTitle\": \"Download the template\",\n \"crud.import.downloadDescription\": \"Download a CSV template with all available fields for {{entity}}. Fill it in and upload it in the next step.\",\n \"crud.import.downloadTemplate\": \"Download CSV template\",\n \"crud.import.downloadHint\": \"{{count}} fields available\",\n \"crud.import.alreadyHaveFile\": \"I already have a file\",\n \"crud.import.uploadTitle\": \"Drop your CSV file here or click to browse\",\n \"crud.import.uploadHint\": \"Only .csv files are accepted\",\n \"crud.import.invalidFile\": \"Please upload a .csv file.\",\n \"crud.import.emptyFile\": \"The file appears to be empty.\",\n \"crud.import.noRows\": \"The file has headers but no data rows.\",\n \"crud.import.mappingTitle\": \"Map your columns\",\n \"crud.import.mappingDescription\": \"{{file}} — {{columns}} columns, {{rows}} rows\",\n \"crud.import.mappedCount\": \"{{count}} of {{total}} mapped\",\n \"crud.import.csvColumn\": \"CSV Column\",\n \"crud.import.mapsTo\": \"Maps to\",\n \"crud.import.preview\": \"Preview\",\n \"crud.import.skip\": \"— Skip this column\",\n \"crud.import.startImport\": \"Start import\",\n \"crud.import.importing\": \"Importing...\",\n \"crud.import.importingHint\": \"Processing {{count}} rows\",\n \"crud.import.progressCount\": \"{{processed}} of {{total}} rows processed\",\n \"crud.import.doneSuccess\": \"Import complete!\",\n \"crud.import.doneWithErrors\": \"Import completed with errors\",\n \"crud.import.doneCount\": \"{{success}} of {{total}} rows imported successfully\",\n \"crud.import.rowNumber\": \"Row {{row}}:\",\n \"crud.import.toastSuccess\": \"{{count}} records imported\",\n \"crud.import.noConnection\": \"Not connected to the database. Import requires an active connection.\",\n \"crud.import.limitExceeded\": \"This import exceeds your plan limit. Upgrade or import fewer rows.\",\n \"crud.export.action\": \"Export\",\n \"crud.export.noData\": \"No data to export.\",\n \"crud.export.toastSuccess\": \"{{count}} records exported\",\n \"crud.delete.title\": \"Delete {{entity}}?\",\n \"crud.delete.confirmNamed\": \"Are you sure you want to delete \\\"{{displayValue}}\\\"? This action cannot be undone.\",\n \"crud.delete.confirmGeneric\": \"Are you sure you want to delete this {{entity}}? This action cannot be undone.\",\n \"crud.delete.cancel\": \"Cancel\",\n \"crud.delete.delete\": \"Delete\",\n \"crud.tabs.access\": \"Access\",\n \"crud.tabs.schedule\": \"Schedule\",\n \"crud.tabs.documents\": \"Documents\",\n \"crud.tabs.financial\": \"Statement\",\n \"crud.tabs.activity\": \"Activity\",\n \"crud.tabs.inventory\": \"Inventory\",\n \"crud.tabs.suppliers\": \"Suppliers\",\n \"crud.tabs.pricing\": \"Pricing\",\n \"crud.tabs.members\": \"Team\",\n \"crud.tabs.stats\": \"Statistics\",\n \"crud.tabs.availability\": \"Availability\",\n \"crud.tabs.orders\": \"Orders\",\n \"crud.orders.all\": \"All\",\n \"crud.orders.columnDate\": \"Date\",\n \"crud.orders.columnStage\": \"Stage\",\n \"crud.orders.columnDescription\": \"Description\",\n \"crud.orders.columnAmount\": \"Amount\",\n \"crud.orders.searchPlaceholder\": \"Search orders...\",\n \"crud.orders.noDocuments\": \"No orders yet\",\n \"crud.orders.stage.draft\": \"Draft\",\n \"crud.orders.stage.quoted\": \"Quoted\",\n \"crud.orders.stage.booked\": \"Booked\",\n \"crud.orders.stage.invoiced\": \"Invoiced\",\n \"crud.orders.stage.paid\": \"Paid\",\n \"crud.orders.stage.partial\": \"Partial\",\n \"crud.orders.stage.overdue\": \"Overdue\",\n \"crud.orders.stage.cancelled\": \"Cancelled\",\n \"crud.orders.stage.no_show\": \"No Show\",\n \"crud.orders.stage.completed\": \"Completed\",\n \"layout.userMenu.profile\": \"Profile\",\n \"layout.userMenu.settings\": \"Settings\",\n \"layout.userMenu.billing\": \"Billing\",\n \"layout.userMenu.help\": \"Help\",\n \"layout.userMenu.lightMode\": \"Light mode\",\n \"layout.userMenu.darkMode\": \"Dark mode\",\n \"layout.userMenu.systemMode\": \"System\",\n \"layout.userMenu.language\": \"Language\",\n \"layout.userMenu.selectLocation\": \"Select location\",\n \"layout.switchingLocation\": \"Switching location…\",\n \"layout.userMenu.signOut\": \"Sign out\",\n \"layout.topbar.searchPlaceholder\": \"Search...\",\n \"layout.topbar.keyboardShortcut\": \"⌘K\",\n \"layout.sidebar.collapse\": \"Collapse sidebar\",\n \"layout.sidebar.expand\": \"Expand sidebar\",\n \"layout.commandPalette.placeholder\": \"Search pages, people, products, services...\",\n \"layout.commandPalette.resultsCount\": \"{{count}} result{{plural}}\",\n \"layout.commandPalette.commandsCount\": \"{{count}} command{{plural}}\",\n \"layout.commandPalette.noResults\": \"No results found.\",\n \"layout.commandPalette.searching\": \"Searching…\",\n \"layout.commandPalette.refreshCached\": \"Cached results — search again\",\n \"layout.commandPalette.refresh\": \"Refresh results\",\n \"layout.commandPalette.navigate\": \"navigate\",\n \"layout.commandPalette.open\": \"open\",\n \"billing.title\": \"Billing\",\n \"billing.subtitle\": \"Manage your subscription and billing.\",\n \"billing.currentPlan\": \"Current Plan\",\n \"billing.subscription.title\": \"Subscription\",\n \"billing.subscription.subtitle\": \"Manage your plan and unlock more features.\",\n \"billing.changeToPlan\": \"Switch to this plan\",\n \"billing.featureMatrix\": \"Feature comparison\",\n \"billing.changePlanConfirmTitle\": \"Change plan?\",\n \"billing.changePlanConfirmBody\": \"You're switching to the {{plan}} plan.\",\n \"billing.changePlanConfirm\": \"Switch plan\",\n \"billing.planChanged\": \"You're now on the {{plan}} plan.\",\n \"billing.planChangeFailed\": \"Couldn't change your plan. Please try again.\",\n \"billing.noPlans\": \"No plans are configured.\",\n \"billing.pro\": \"Pro\",\n \"billing.upgrade\": \"Upgrade\",\n \"billing.downgrade\": \"Downgrade\",\n \"billing.monthly\": \"Monthly\",\n \"billing.yearly\": \"Yearly\",\n \"billing.yearlySave\": \"Save 20%\",\n \"billing.free\": \"Free\",\n \"billing.cancelSubscription\": \"Cancel Subscription\",\n \"billing.canceling\": \"Canceling...\",\n \"billing.resumeSubscription\": \"Resume Subscription\",\n \"billing.resuming\": \"Resuming...\",\n \"billing.features\": \"Features\",\n \"billing.perMonth\": \"/mo\",\n \"billing.perYear\": \"/yr\",\n \"billing.getStarted\": \"Get Started\",\n \"billing.processing\": \"Processing...\",\n \"billing.mostPopular\": \"Most Popular\",\n \"billing.nextBilling\": \"Next billing: {{date}}\",\n \"billing.cancelsOn\": \"Cancels on {{date}}\",\n \"billing.trialEnds\": \"Trial ends {{date}}\",\n \"billing.pastDueWarning\": \"Your payment is past due. Please update your payment method to avoid service interruption.\",\n \"billing.status.active\": \"Active\",\n \"billing.status.trialing\": \"Trial\",\n \"billing.status.pastDue\": \"Past Due\",\n \"billing.status.canceled\": \"Canceled\",\n \"billing.status.paused\": \"Paused\",\n \"organization.invite\": \"Invite\",\n \"organization.members\": \"Members\",\n \"organization.memberCount\": \"{{count}} member{{plural}} in this organization.\",\n \"organization.role\": \"Role\",\n \"organization.emailPlaceholder\": \"team@example.com\",\n \"organization.sendInvites\": \"Send Invites\",\n \"organization.sending\": \"Sending...\",\n \"organization.pending\": \"Pending Invites\",\n \"organization.remove\": \"Remove member\",\n \"organization.resend\": \"Resend\",\n \"organization.revoke\": \"Revoke\",\n \"organization.inviteTitle\": \"Invite Team Members\",\n \"organization.inviteDescription\": \"Send invites to join your organization.\",\n \"organization.inviteSent\": \"Invitations sent\",\n \"organization.inviteSentDescription\": \"Your team members will receive an email with instructions to join.\",\n \"organization.emailAddresses\": \"Email addresses\",\n \"organization.addAnother\": \"Add another\",\n \"organization.selectRole\": \"Select a role\",\n \"organization.sent\": \"Sent {{date}}\",\n \"organization.you\": \"(you)\",\n \"organization.joined\": \"Joined\",\n \"organization.failedInvites\": \"Failed to send invites\",\n \"organization.onboarding.title\": \"Set up your workspace\",\n \"organization.onboarding.namePrompt\": \"What should we call your workspace?\",\n \"organization.onboarding.preferencesPrompt\": \"Regional preferences\",\n \"organization.onboarding.workspaceName\": \"Workspace name\",\n \"organization.onboarding.workspaceNamePlaceholder\": \"My Company\",\n \"organization.onboarding.timezone\": \"Timezone\",\n \"organization.onboarding.currency\": \"Currency\",\n \"organization.onboarding.creating\": \"Setting up your workspace\",\n \"organization.onboarding.creatingDescription\": \"This will only take a moment...\",\n \"organization.onboarding.createWorkspace\": \"Create Workspace\",\n \"organization.onboarding.failedCreate\": \"Failed to create workspace\",\n \"settings.title\": \"Settings\",\n \"settings.subtitle\": \"Manage your account and organization preferences.\",\n \"settings.backToHome\": \"Back to home\",\n \"settings.navLinks\": \"Settings\",\n \"settings.general\": \"General\",\n \"settings.properties\": \"Properties\",\n \"settings.profile\": \"Profile\",\n \"settings.branding\": \"Branding\",\n \"settings.security\": \"Security\",\n \"settings.sites\": \"Sites\",\n \"settings.connectors\": \"Connectors\",\n \"settings.subscription\": \"Subscription\",\n \"upgrade.title\": \"Premium feature\",\n \"upgrade.description\": \"This feature is available on a higher plan. Upgrade to unlock it.\",\n \"upgrade.descriptionFeature\": \"The {feature} feature is available on a higher plan. Upgrade to unlock it.\",\n \"contactPicker.search\": \"Search contact...\",\n \"contactPicker.newContact\": \"New contact\",\n \"contactPicker.name\": \"Name\",\n \"contactPicker.phone\": \"Phone\",\n \"contactPicker.emailOptional\": \"Email (optional)\",\n \"contactPicker.create\": \"Create\",\n \"contactPicker.creating\": \"Creating...\",\n \"contactPicker.cancel\": \"Cancel\",\n \"contactPicker.clear\": \"Clear contact\",\n \"contactPicker.createFailed\": \"Could not create the contact\",\n \"contactPicker.addField\": \"Add {label}\",\n \"upgrade.includes\": \"Includes {feature}\",\n \"upgrade.cta\": \"View plans\",\n \"upgrade.badgeTooltip\": \"Available on a higher plan\",\n \"upgrade.unlock\": \"Unlock {feature}\",\n \"upgrade.currentPlan\": \"Your plan: {plan}\",\n \"upgrade.recommended\": \"Recommended\",\n \"upgrade.ctaUpgrade\": \"Upgrade\",\n \"upgrade.ctaUpgradeTo\": \"Upgrade to {plan}\",\n \"upgrade.compareAll\": \"Compare all plans\",\n \"upgrade.valueGeneric\": \"Get everything you need to grow — included in the plans below.\",\n \"upgrade.value.marketing\": \"Campaigns, funnel and content to grow your client base.\",\n \"upgrade.value.reports\": \"Advanced reports and insights to make sharper decisions.\",\n \"upgrade.value.fin_reconciliation\": \"Reconcile payments and keep your cash flow under control.\",\n \"upgrade.value.assistant\": \"Your operations copilot — ask, analyze and act with AI.\",\n \"upgrade.feature.assistant\": \"AI Assistant\",\n \"billing.unlimited\": \"Unlimited\",\n \"billing.upTo\": \"Up to {count}\",\n \"limit.label.clients\": \"clients\",\n \"limit.label.users\": \"team members\",\n \"limit.label.locations\": \"locations\",\n \"limit.label.bookings_month\": \"monthly bookings\",\n \"limit.label.products\": \"products\",\n \"limit.label.students\": \"students\",\n \"limit.label.courses\": \"courses\",\n \"limit.label.contacts\": \"contacts\",\n \"limit.label.deals\": \"deals\",\n \"limit.label.menu_items\": \"menu items\",\n \"limit.label.orders_month\": \"monthly orders\",\n \"limit.label.connected_banks\": \"connected banks\",\n \"limit.label.movements_month\": \"monthly movements\",\n \"limit.label.leads\": \"leads\",\n \"limit.label.quotes\": \"quotes\",\n \"limit.label.conversations_month\": \"monthly conversations\",\n \"limit.label.ai_credits_month\": \"AI credits per month\",\n \"limit.label.recipes\": \"recipes\",\n \"limit.label.form_templates\": \"form templates\",\n \"limit.label.documents_month\": \"monthly documents\",\n \"limit.label.content_posts_month\": \"monthly content posts\",\n \"limit.label.blog_posts\": \"blog posts\",\n \"limit.reached\": \"Você atingiu o limite de {label} do plano {plan}.\",\n \"banner.overLimit\": \"You have exceeded your plan's {label} limit — upgrade to keep growing.\",\n \"banner.overLimit.title\": \"You have used all your {resource}\",\n \"banner.overLimit.planLabel\": \"{plan} plan\",\n \"banner.overLimit.unlock\": \"Nothing is blocked. {plan} lifts this cap and keeps it out of your way.\",\n \"banner.overLimit.body\": \"Nothing is blocked — but this is the ceiling of your plan.\",\n \"banner.overLimit.ctaPriced\": \"Get {plan} — {price}/mo\",\n \"banner.overLimit.compare\": \"Compare plans\",\n \"banner.overLimit.more\": \"+{count} other limit(s) at the ceiling.\",\n \"settings.team\": \"Team\",\n \"settings.permissions\": \"Permissions\",\n \"settings.locations\": \"Locations\",\n \"settings.holidays\": \"Holidays\",\n \"settings.notifications\": \"Notifications\",\n \"settings.save\": \"Save Changes\",\n \"settings.saving\": \"Saving...\",\n \"settings.companyInfo\": \"Company Information\",\n \"settings.companyInfoDescription\": \"Update your organization details and regional preferences.\",\n \"settings.companyName\": \"Company Name\",\n \"settings.companyNamePlaceholder\": \"Acme Inc.\",\n \"settings.timezone\": \"Timezone\",\n \"settings.timezonePlaceholder\": \"Select timezone\",\n \"settings.currency\": \"Currency\",\n \"settings.currencyPlaceholder\": \"Select currency\",\n \"settings.locale\": \"Locale\",\n \"settings.localePlaceholder\": \"Select locale\",\n \"settings.uploadLogo\": \"Upload Logo\",\n \"settings.uiLanguage\": \"Interface Language\",\n \"settings.uiLanguageDescription\": \"Choose the language for the user interface. This applies to your session only.\",\n \"notifications.title\": \"Notifications\",\n \"notifications.markAllRead\": \"Mark all read\",\n \"notifications.empty\": \"No notifications\",\n \"notifications.whatsNew\": \"What's New\",\n \"notifications.inbox\": \"Inbox\",\n \"user.profile\": \"Profile\",\n \"user.settings\": \"Settings\",\n \"user.help\": \"Help\",\n \"user.shortcuts\": \"Keyboard Shortcuts\",\n \"user.theme\": \"Theme\",\n \"user.themeLight\": \"Light\",\n \"user.themeDark\": \"Dark\",\n \"user.themeSystem\": \"System\",\n \"app.notFound.title\": \"404\",\n \"app.notFound.heading\": \"Page not found\",\n \"app.notFound.message\": \"The page you're looking for doesn't exist or has been moved.\",\n \"app.notFound.goToDashboard\": \"Go to Dashboard\",\n \"app.accessDenied.heading\": \"Access Denied\",\n \"app.accessDenied.message\": \"You don't have permission to view this page.\",\n \"shell.accessDenied.title\": \"Access restricted\",\n \"shell.accessDenied.message\": \"You don't have permission to view this page.\",\n \"shell.error.title\": \"This page could not be loaded\",\n \"shell.error.message\": \"Something went wrong on our side. The rest of the system keeps working — you can go back and try again.\",\n \"shell.error.retry\": \"Try again\",\n \"shell.error.copy\": \"Copy error details\",\n \"shell.error.copied\": \"Copied\",\n \"shell.error.reference\": \"Mention this code when contacting support\",\n \"organization.workspaces\": \"Workspaces\",\n \"organization.onlyWorkspace\": \"This is your only workspace.\",\n \"auth.login.enterCredentials\": \"Enter your credentials to access your account\",\n \"auth.login.failedDefault\": \"Failed to sign in. Please try again.\",\n \"auth.login.failedWithProvider\": \"Failed to sign in with {{provider}}.\",\n \"auth.login.orContinueWith\": \"or continue with\",\n \"auth.login.placeholder.email\": \"you@example.com\",\n \"auth.login.placeholder.password\": \"Enter your password\",\n \"auth.login.signingIn\": \"Signing in...\",\n \"auth.login.welcomeBack\": \"Welcome Back\",\n \"auth.login.welcomeTo\": \"Welcome to {{appName}}\",\n \"auth.recovery.checkEmail\": \"Check your email\",\n \"auth.recovery.description\": \"Enter your email address and we will send you a link to reset your password.\",\n \"auth.recovery.failedDefault\": \"Failed to send reset email. Please try again.\",\n \"auth.recovery.resetLinkSent\": \"We sent a password reset link to <strong>{{email}}</strong>. Please check your inbox and follow the instructions.\",\n \"auth.recovery.sendResetLink\": \"Send reset link\",\n \"auth.recovery.sending\": \"Sending...\",\n \"auth.signup.confirmPassword\": \"Confirm password\",\n \"auth.signup.creating\": \"Creating account...\",\n \"auth.signup.emailVerification\": \"Account created for {{email}}. Check your inbox to confirm your email before signing in.\",\n \"auth.signup.failedDefault\": \"Failed to create account. Please try again.\",\n \"auth.signup.fullName\": \"Full name\",\n \"auth.signup.getStarted\": \"Get started with your new account\",\n \"auth.signup.passwordMinLength\": \"Password must be at least 8 characters.\",\n \"auth.signup.passwordsMismatch\": \"Passwords do not match.\",\n \"auth.signup.placeholder.confirm\": \"Repeat your password\",\n \"auth.signup.placeholder.name\": \"John Doe\",\n \"auth.signup.placeholder.password\": \"At least 8 characters\",\n \"auth.signup.termsAgreement\": \"By creating an account, you agree to our\",\n \"billing.invoice.amount\": \"Amount\",\n \"billing.invoice.date\": \"Date\",\n \"billing.invoice.invoice\": \"Invoice\",\n \"billing.invoice.noInvoices\": \"No invoices yet\",\n \"billing.invoice.status\": \"Status\",\n \"billing.paywall.notAvailable\": \"This feature is not available on your current plan.\",\n \"billing.paywall.requiresPlan\": \"This feature requires the {{plan}} plan or higher.\",\n \"billing.paywall.upgradeRequired\": \"Upgrade Required\",\n \"billing.paywall.viewPlans\": \"View Plans\",\n \"chat.defaultTitle\": \"Assistant\",\n \"assistant.invite.placeholder\": \"Ask about your business...\",\n \"assistant.invite.dismiss\": \"Not now\",\n \"assistant.invite.suggested\": \"Suggested\",\n \"chat.tryAsking\": \"Try asking\",\n \"chat.fab.tryIt\": \"Try it\",\n \"chat.fab.dismiss\": \"Don't show suggestions here\",\n \"chat.fab.open\": \"Open assistant\",\n \"chat.fab.close\": \"Close assistant\",\n \"chat.attachments.add\": \"Attach a file\",\n \"chat.attachments.dropHere\": \"Drop to attach\",\n \"chat.attachments.dropHint\": \"Spreadsheets, PDFs and images. I read them and use them in the answer.\",\n \"chat.attachments.parsing\": \"reading…\",\n \"chat.attachments.hasWarnings\": \"with warnings\",\n \"chat.attachments.error.excelUnsupported\": \"unsupported Excel format — save as .xlsx or .csv\",\n \"chat.whatsapp.continue\": \"Continue on WhatsApp\",\n \"chat.whatsapp.defaultMessage\": \"Hi! I came from the app.\",\n \"chat.messagePlaceholder\": \"How can I help?\",\n \"chat.upload.send\": \"Read {{count}} photo(s)\",\n \"chat.upload.addMoreImages\": \"Add another photo\",\n \"chat.upload.addMoreFiles\": \"Add another file\",\n \"chat.upload.working\": \"Reading...\",\n \"chat.upload.browseImage\": \"Or choose an image from this device\",\n \"chat.upload.browseFile\": \"Or choose a file from this device\",\n \"chat.send\": \"Send message\",\n \"chat.notConfigured\": \"Assistant not configured — set chat.apiEndpoint to enable conversations.\",\n \"chat.unavailable\": \"Assistant unavailable\",\n \"chat.greeting\": \"How can I help?\",\n \"chat.greetingNamed\": \"Hi {{name}}, how can I help?\",\n \"chat.greetingHint\": \"Ask in plain words — or tap the mic and just say it. I can look things up, create and update records, and explain what's going on in your business.\",\n \"chat.disclaimer\": \"AI can make mistakes. Check important info.\",\n \"chat.staff.team\": \"Your team\",\n \"chat.staff.switch\": \"Talk to someone else on the team\",\n \"chat.staff.hire\": \"Meet {{name}}\",\n \"chat.staff.hireNote\": \"{{name}} joins your team as soon as the plan is active. Cancel any time.\",\n \"chat.staff.priceFrom\": \"From\",\n \"chat.staff.perMonth\": \"/mo\",\n \"chat.staff.onPlan\": \"on {{plan}}\",\n \"chat.staff.priceOnPlans\": \"See the plans for what each agent includes.\",\n \"chat.staff.seePlans\": \"See plans\",\n \"chat.staff.notHired\": \"Not hired\",\n \"chat.staff.handoffFrom\": \"{{from}} passed this to {{to}}\",\n \"chat.staff.handoffTo\": \"{{to}} took over\",\n \"chat.opener.capabilities\": \"What can you do in here?\",\n \"chat.opener.today\": \"How is the business doing today?\",\n \"chat.opener.findRecord\": \"Find a record for me\",\n \"chat.history.title\": \"Conversations\",\n \"chat.recording.pending\": \"Nothing has been captured yet.\",\n \"chat.recording.running\": \"Recording. You can move around the app — it keeps going.\",\n \"chat.recording.paused\": \"Recording paused.\",\n \"chat.recording.finished\": \"Recording finished.\",\n \"chat.status.ready\": \"Ready\",\n \"chat.status.working\": \"Working on it...\",\n \"chat.status.offline\": \"Not connected\",\n \"chat.jumpToLatest\": \"Latest\",\n \"chat.confirmAction.title\": \"Confirm this action?\",\n \"chat.confirmAction.confirm\": \"Confirm\",\n \"chat.confirmAction.cancel\": \"Cancel\",\n \"chat.confirmAction.always\": \"Always allow\",\n \"chat.confirmAction.alwaysSession\": \"Allow this session\",\n \"chat.confirmAction.alwaysHint\": \"Stop asking before \\\"{{label}}\\\"\",\n \"chat.confirmAction.autoApproved\": \"auto\",\n \"chat.confirmAction.autoApprovedHint\": \"Ran without asking — you allowed this action\",\n \"chat.confirmAction.blocked\": \"Respond to the confirmation above first\",\n \"chat.confirmAction.fillRequired\": \"Fill in to continue: {{fields}}\",\n \"chat.confirmAction.showAll\": \"Add more fields ({{count}})\",\n \"chat.confirmAction.showLess\": \"Show fewer fields\",\n \"chat.tool.createAppointment\": \"Book an appointment\",\n \"chat.tool.createRecord\": \"Create record\",\n \"chat.tool.updateRecord\": \"Update record\",\n \"chat.tool.deleteRecord\": \"Delete record\",\n \"chat.tool.createOrder\": \"Create order\",\n \"chat.tool.createInvoice\": \"Create invoice\",\n \"chat.tool.markPaymentReceived\": \"Mark payment as received\",\n \"chat.tool.createCampaign\": \"Create campaign\",\n \"chat.tool.sendMessage\": \"Send message\",\n \"chat.tool.seatGuests\": \"Seat guests\",\n \"chat.tool.toggleMenuItemAvailability\": \"Change item availability\",\n \"chat.tool.createShopOrder\": \"Place shop order\",\n \"chat.tool.chargeShopOrder\": \"Charge the order\",\n \"chat.tool.setShopOrderAddress\": \"Set delivery address\",\n \"chat.autoApprovals.title\": \"Auto-approved actions\",\n \"chat.autoApprovals.revoke\": \"Ask me again\",\n \"chat.autoApprovals.revokeAll\": \"Ask for everything\",\n \"chat.suggestions.show\": \"Show suggestions\",\n \"chat.suggestions.hide\": \"Hide suggestions\",\n \"chat.voice.start\": \"Speak\",\n \"chat.voice.stop\": \"Stop recording\",\n \"chat.voice.listening\": \"Listening — speak now\",\n \"chat.voice.transcribing\": \"Transcribing...\",\n \"chat.voice.denied\": \"Microphone blocked. Allow access in your browser settings.\",\n \"chat.voice.network\": \"Could not reach the transcription service.\",\n \"chat.voice.failed\": \"Could not hear that — try again.\",\n \"chat.voice.speakOn\": \"Speak replies out loud\",\n \"chat.voice.speakOff\": \"Mute spoken replies\",\n \"chat.signingIn\": \"One moment — still confirming your session.\",\n \"chat.history\": \"Previous conversations\",\n \"chat.history.search\": \"Search conversations\",\n \"chat.history.empty\": \"No conversations found.\",\n \"chat.history.today\": \"Today\",\n \"chat.history.yesterday\": \"Yesterday\",\n \"chat.history.week\": \"Last 7 days\",\n \"chat.history.older\": \"Earlier\",\n \"chat.newConversation\": \"New conversation\",\n \"chat.untitledConversation\": \"Untitled conversation\",\n \"chat.recentConversations\": \"Recent\",\n \"chat.backToConversations\": \"Back to conversations\",\n \"chat.renameConversation\": \"Rename\",\n \"chat.saveTitle\": \"Save title\",\n \"chat.toolsAvailable\": \"{{count}} tools available\",\n \"chat.suggestion.dashboard.kpi-summary.0\": \"How is my business doing today?\",\n \"chat.suggestion.dashboard.kpi-summary.1\": \"What's my revenue today?\",\n \"chat.suggestion.dashboard.kpi-summary.2\": \"Give me a summary of today\",\n \"chat.suggestion.agenda.list-appointments.0\": \"What's on the agenda today?\",\n \"chat.suggestion.agenda.list-appointments.1\": \"Show me tomorrow's appointments\",\n \"chat.suggestion.agenda.list-appointments.2\": \"Who has the most bookings this week?\",\n \"chat.suggestion.agenda.create-appointment.0\": \"Book a haircut for Sarah tomorrow at 10am\",\n \"chat.suggestion.agenda.check-availability.0\": \"When is Ana available tomorrow?\",\n \"chat.suggestion.agenda.check-availability.1\": \"Find a 90-minute slot for Carlos this week\",\n \"chat.suggestion.financial.get-revenue.0\": \"How much did we make today?\",\n \"chat.suggestion.financial.get-revenue.1\": \"What's this month's revenue?\",\n \"chat.suggestion.financial.get-revenue.2\": \"Compare this week's revenue to last week\",\n \"chat.suggestion.financial.create-invoice.0\": \"Create an invoice for a new client\",\n \"chat.suggestion.financial.list-payables.0\": \"Show me overdue bills\",\n \"chat.suggestion.financial.list-payables.1\": \"What bills are due this week?\",\n \"chat.suggestion.inventory.low-stock.0\": \"Which products are running low?\",\n \"chat.suggestion.inventory.low-stock.1\": \"Show me a stock summary\",\n \"chat.suggestion.inventory.low-stock.2\": \"What are my most used products?\",\n \"chat.suggestion.crm.count-customers.0\": \"How many customers do we have?\",\n \"chat.suggestion.crm.count-customers.1\": \"Who are my top customers?\",\n \"chat.suggestion.crm.list-leads.0\": \"Show new leads from this week\",\n \"chat.suggestion.crm.list-leads.1\": \"Which leads need follow-up?\",\n \"chat.suggestion.crm.list-leads.2\": \"What's our conversion rate?\",\n \"chat.suggestion.custom_forms.list-templates.0\": \"What forms do we have?\",\n \"chat.suggestion.custom_forms.list-templates.1\": \"Show me anamnesis templates\",\n \"chat.suggestion.custom_forms.list-documents.0\": \"Show this client's documents\",\n \"common.create\": \"Create\",\n \"common.feature\": \"Feature\",\n \"common.message\": \"Message...\",\n \"common.more\": \"More\",\n \"common.noContent\": \"No content yet\",\n \"crud.form.createDescription\": \"Create a new {{entity}}.\",\n \"crud.form.editDescription\": \"Update {{entity}} details.\",\n \"crud.form.failedToSave\": \"Failed to save {{entity}}\",\n \"crud.form.saveChanges\": \"Save Changes\",\n \"crud.form.showAllFields\": \"Fill in more fields\",\n \"crud.form.showEssentialFields\": \"Show only the essentials\",\n \"crud.form.select\": \"Select {{field}}...\",\n \"crud.list.records\": \"records\",\n \"crud.list.addEntity\": \"Add {{entity}}\",\n \"crud.list.aiHint\": \"Describe it and I create it for you.\",\n \"crud.list.aiPlaceholder\": \"Describe what to create…\",\n \"crud.list.newHint\": \"Fill in one record by hand\",\n \"crud.list.searchGeneric\": \"Search...\",\n \"crud.list.search\": \"Search {{entities}}...\",\n \"layout.bottomNav.chat\": \"Chat\",\n \"layout.commandPalette.commandCount\": \"{{count}} command{{plural}}\",\n \"layout.commandPalette.description\": \"Search for pages, actions, people, products and services\",\n \"layout.commandPalette.resultCount\": \"{{count}} result{{plural}}\",\n \"layout.commandPalette.title\": \"Command palette\",\n \"layout.mobileDrawer.description\": \"Application navigation links\",\n \"layout.mobileDrawer.title\": \"Navigation menu\",\n \"layout.topbar.search\": \"Search...\",\n \"notifications.noUpdates\": \"No updates yet\",\n \"organization.createOrg\": \"New workspace\",\n \"organization.createOrgDescription\": \"Create a new workspace for your team.\",\n \"organization.createOrgTitle\": \"Create Organization\",\n \"organization.creating\": \"Creating...\",\n \"organization.invite.addAnother\": \"Add another\",\n \"organization.invite.description\": \"Send invites to join your organization.\",\n \"organization.invite.emailLabel\": \"Email addresses\",\n \"organization.invite.roleLabel\": \"Role\",\n \"organization.invite.rolePlaceholder\": \"Select a role\",\n \"organization.invite.sendInvites\": \"Send Invites\",\n \"organization.invite.sending\": \"Sending...\",\n \"organization.invite.sent\": \"Invitations sent\",\n \"organization.invite.sentDescription\": \"Your team members will receive an email with instructions to join.\",\n \"organization.invite.title\": \"Invite Team Members\",\n \"organization.onboarding.oneMoment\": \"This will only take a moment...\",\n \"organization.onboarding.preferences\": \"Regional preferences\",\n \"organization.onboarding.settingUp\": \"Setting up your workspace\",\n \"organization.onboarding.setupWorkspace\": \"Set up your workspace\",\n \"organization.onboarding.whatName\": \"What should we call your workspace?\",\n \"organization.orgNamePlaceholder\": \"Organization name\",\n \"organization.permissions.createCustom\": \"Create Custom Profile\",\n \"organization.permissions.newWithAIHint\": \"Describe who the profile is for and I build the matrix.\",\n \"organization.permissions.newByHand\": \"Create by hand\",\n \"organization.permissions.newByHandHint\": \"Tick the permissions one by one.\",\n \"organization.permissions.askPlaceholder\": \"Describe the profile…\",\n \"organization.permissions.askPersona\": \"Access administrator\",\n \"organization.permissions.askPitch\": \"Tell me who the profile is for and what they do.\",\n \"organization.permissions.askDescription\": \"I know every area of this app. Describe the role — what they need to see, what they need to record, and what they must not reach — and I build the matrix. You confirm before anything is saved.\",\n \"organization.permissions.askSuggestion.0\": \"Front desk: sees the calendar and clients, not the finances\",\n \"organization.permissions.askSuggestion.1\": \"Practitioner: only their own calendar and their own sessions\",\n \"organization.permissions.askSuggestion.2\": \"Manager: everything except permissions and billing\",\n \"organization.permissions.createProfile\": \"Create Profile\",\n \"organization.permissions.duplicate\": \"Duplicate\",\n \"organization.permissions.copyName\": \"{{name}} (copy)\",\n \"organization.permissions.description\": \"Description\",\n \"organization.permissions.descriptionPlaceholder\": \"Optional description\",\n \"organization.permissions.editProfile\": \"Edit: {{name}}\",\n \"organization.permissions.manageBilling\": \"Manage Billing\",\n \"organization.permissions.managePermissions\": \"Manage Permissions\",\n \"organization.permissions.manageSettings\": \"Manage Settings\",\n \"organization.permissions.manageTeam\": \"Manage Team\",\n \"organization.permissions.memberCount\": \"{{count}} member{{plural}}\",\n \"organization.permissions.previewAs\": \"Preview as\",\n \"organization.permissions.previewingAs\": \"Previewing as\",\n \"organization.permissions.exitPreview\": \"Exit Preview\",\n \"organization.permissions.searchFeatures\": \"Search features...\",\n \"organization.permissions.profile\": \"Profile\",\n \"organization.permissions.profileName\": \"Profile Name\",\n \"organization.permissions.profileNamePlaceholder\": \"e.g. Custom Role\",\n \"organization.permissions.subtitle\": \"Manage roles and their permissions.\",\n \"organization.permissions.system\": \"System\",\n \"organization.permissions.systemPermissions\": \"System Permissions\",\n \"organization.permissions.title\": \"Permission Profiles\",\n \"organization.permissions.updateProfile\": \"Update Profile\",\n \"organization.team.invite\": \"Invite\",\n \"organization.team.joined\": \"Joined\",\n \"organization.team.member\": \"Member\",\n \"organization.team.memberCount\": \"{{count}} member{{plural}} in this organization.\",\n \"organization.team.pendingInvites\": \"Pending Invites\",\n \"organization.team.removeMember\": \"Remove member\",\n \"organization.team.unitAccess\": \"Access by unit\",\n \"organization.team.resend\": \"Resend\",\n \"organization.team.revoke\": \"Revoke\",\n \"organization.team.inviteResent\": \"Invite resent\",\n \"organization.team.inviteRevoked\": \"Invite revoked\",\n \"organization.team.inviteActionFailed\": \"Couldn't complete that\",\n \"organization.team.role\": \"Role\",\n \"organization.team.sent\": \"Sent {{date}}\",\n \"organization.team.title\": \"Members\",\n \"organization.team.you\": \"(you)\",\n \"settings.branding.accentColor\": \"Accent Color\",\n \"settings.branding.chooseFile\": \"Choose File\",\n \"settings.branding.favicon\": \"Favicon\",\n \"settings.branding.faviconHint\": \"Recommended: 32x32px, PNG or ICO\",\n \"settings.branding.logo\": \"Logo\",\n \"settings.branding.logoHint\": \"Recommended: 200x50px, PNG or SVG\",\n \"settings.branding.preview\": \"Preview\",\n \"settings.branding.primaryColor\": \"Primary Color\",\n \"settings.branding.saveBranding\": \"Save Branding\",\n \"settings.branding.subtitle\": \"Customize the look and feel of your workspace.\",\n \"settings.branding.title\": \"Branding\",\n \"settings.company.currency\": \"Currency\",\n \"settings.company.currencyPlaceholder\": \"Select currency\",\n \"settings.company.locale\": \"Locale\",\n \"settings.company.localePlaceholder\": \"Select locale\",\n \"settings.company.name\": \"Company Name\",\n \"settings.company.subtitle\": \"Update your organization details and regional preferences.\",\n \"settings.company.timezone\": \"Timezone\",\n \"settings.company.timezonePlaceholder\": \"Select timezone\",\n \"settings.company.title\": \"Company Information\",\n \"settings.holidays.addHoliday\": \"Add Holiday\",\n \"settings.holidays.annual\": \"Annual\",\n \"settings.holidays.descriptionPlaceholder\": \"Description (optional)\",\n \"settings.holidays.empty\": \"No holidays configured yet.\",\n \"settings.holidays.namePlaceholder\": \"Holiday name *\",\n \"settings.holidays.newHoliday\": \"New Holiday\",\n \"settings.holidays.recurringAnnually\": \"Recurring annually\",\n \"settings.holidays.subtitle\": \"Non-working days and recurring holidays.\",\n \"settings.holidays.title\": \"Holidays\",\n \"settings.fieldRules\": \"Field Rules\",\n \"settings.fieldRules.subtitle\": \"Configure which fields are required or visible for each register type.\",\n \"settings.fieldRules.required\": \"Required\",\n \"settings.fieldRules.inForm\": \"Form\",\n \"settings.fieldRules.inTable\": \"Table\",\n \"settings.fieldRules.inDetail\": \"Detail\",\n \"settings.fieldRules.field\": \"Field\",\n \"settings.fieldRules.resetDefaults\": \"Reset to Defaults\",\n \"settings.fieldRules.resetConfirm\": \"Reset all field rules for {{entity}} to their defaults?\",\n \"settings.fieldRules.saved\": \"Field rules saved\",\n \"settings.fieldRules.saveFailed\": \"Failed to save field rules\",\n \"settings.fieldRules.modified\": \"{{count}} modified\",\n \"settings.fieldRules.searchPlaceholder\": \"Search register types...\",\n \"settings.fieldRules.noEntities\": \"No register types available.\",\n \"settings.fieldRules.coreRegisters\": \"Register Types\",\n \"settings.fieldRules.otherRegisters\": \"Other\",\n \"settings.fieldRules.showMore\": \"{{count}} more register types...\",\n \"settings.fieldRules.showLess\": \"Show less\",\n \"settings.locations.addFirst\": \"Add your first location\",\n \"settings.locations.addLocation\": \"Add Location\",\n \"settings.locations.adding\": \"Adding...\",\n \"settings.locations.addressPlaceholder\": \"Address\",\n \"settings.locations.cityPlaceholder\": \"City\",\n \"settings.locations.countDescription\": \"{{count}} location{{plural}} registered.\",\n \"settings.locations.countryPlaceholder\": \"Country\",\n \"settings.locations.empty\": \"No locations have been added to this organization yet.\",\n \"settings.locations.headquarters\": \"Headquarters\",\n \"settings.locations.namePlaceholder\": \"Location name *\",\n \"settings.locations.newLocation\": \"New Location\",\n \"settings.locations.noLocations\": \"No locations configured yet.\",\n \"settings.locations.phonePlaceholder\": \"Phone\",\n \"settings.locations.statePlaceholder\": \"State\",\n \"settings.locations.title\": \"Locations\",\n \"settings.profile.email\": \"Email\",\n \"settings.profile.emailHelp\": \"Email cannot be changed directly. Contact support for assistance.\",\n \"settings.profile.fullName\": \"Full Name\",\n \"settings.profile.saveProfile\": \"Save Profile\",\n \"settings.profile.subtitle\": \"Manage your personal information and account settings.\",\n \"settings.profile.title\": \"Profile\",\n \"settings.security.inviteOnly\": \"Invite-Only Access\",\n \"settings.security.inviteOnlyDescription\": \"New users can only join this organization via invite.\",\n \"settings.security.linkSent\": \"Link Sent\",\n \"settings.security.orgSecuritySubtitle\": \"Security policies applied to all members of this organization.\",\n \"settings.security.orgSecurityTitle\": \"Organization Security\",\n \"settings.security.passwordSubtitle\": \"Manage your account password. A reset link will be sent to your email.\",\n \"settings.security.passwordTitle\": \"Password\",\n \"settings.security.require2FA\": \"Require Two-Factor Authentication\",\n \"settings.security.require2FADescription\": \"All members must enable 2FA to access this organization.\",\n \"settings.security.resetLinkDescription\": \"Send a password reset link to your email address.\",\n \"settings.security.resetLinkSent\": \"Reset link sent — check your inbox.\",\n \"settings.security.resetPassword\": \"Reset Password\",\n \"settings.security.sessionTimeout\": \"Session Timeout\",\n \"settings.security.sessionTimeoutDescription\": \"Automatically sign out inactive users after this period.\",\n \"settings.plugin.agenda\": \"Agenda\",\n \"settings.plugin.financial\": \"Financial\",\n \"settings.plugin.inventory\": \"Inventory\",\n \"settings.plugin.crm\": \"Sales & CRM\",\n \"crud.archetype.comingSoon\": \"Coming Soon\",\n \"crud.archetype.access.title\": \"Access & Permissions\",\n \"crud.archetype.access.description\": \"Manage login credentials, assign permission roles, and control what this person can access in the system.\",\n \"crud.access.accountStatus\": \"Account Status\",\n \"crud.access.statusLinked\": \"Active\",\n \"crud.access.statusPending\": \"Invite pending\",\n \"crud.access.statusAccepted\": \"Accepted\",\n \"crud.access.statusExpired\": \"Invite expired\",\n \"crud.access.statusRevoked\": \"Revoked\",\n \"crud.access.acceptedAt\": \"Accepted {{date}}\",\n \"crud.access.revokedDesc\": \"Access was revoked. You can send a new invite.\",\n \"crud.access.grantAccess\": \"Grant Access\",\n \"crud.access.account\": \"Account\",\n \"crud.access.accountDesc\": \"Login credentials and account status for this person.\",\n \"crud.access.resetPassword\": \"Reset Password\",\n \"crud.access.passwordResetSent\": \"Password reset email sent.\",\n \"crud.access.profileUpdated\": \"Permission profile updated.\",\n \"crud.access.inviteResent\": \"Invite resent.\",\n \"crud.access.inviteRevoked\": \"Invite revoked.\",\n \"crud.access.accessRemoved\": \"Access removed.\",\n \"crud.access.dangerZone\": \"Danger Zone\",\n \"crud.access.dangerZoneDesc\": \"Irreversible actions that affect this person's access to the system.\",\n \"crud.access.removeAccess\": \"Remove Access\",\n \"crud.access.revokeInvite\": \"Revoke Invite\",\n \"crud.access.confirmRemoveTitle\": \"Are you sure?\",\n \"crud.access.confirmRemoveDesc\": \"This person will lose all system access immediately. This action cannot be undone.\",\n \"crud.access.accountLinked\": \"Account linked\",\n \"crud.access.noAccount\": \"No account linked\",\n \"crud.access.noAccountDesc\": \"This person does not have a login account and cannot access the system.\",\n \"crud.access.setupDesc\": \"Set up system access for this person by entering their email and choosing a permission profile.\",\n \"crud.access.emailPlaceholder\": \"person@example.com\",\n \"crud.access.sendInvite\": \"Send Invite\",\n \"crud.access.invitePending\": \"Invite pending\",\n \"crud.access.inviteSent\": \"Invite sent {{date}}\",\n \"crud.access.permissionProfile\": \"Permission Profile\",\n \"crud.access.profileDesc\": \"Define what this person can access and do in the system.\",\n \"crud.access.systemAccess\": \"System Access\",\n \"crud.access.effectivePermissions\": \"Effective Permissions\",\n \"crud.access.effectiveDesc\": \"What this person can do based on their assigned profile.\",\n \"crud.access.feature\": \"Feature\",\n \"crud.access.joined\": \"Joined {{date}}\",\n \"crud.access.noEmail\": \"No email address\",\n \"crud.access.noEmailDesc\": \"Add an email address to this person to link them to a system account.\",\n \"crud.access.manageTeam\": \"Manage Team\",\n \"crud.access.manageBilling\": \"Manage Billing\",\n \"crud.access.manageSettings\": \"Manage Settings\",\n \"crud.access.managePermissions\": \"Manage Permissions\",\n \"crud.archetype.activity.title\": \"Activity Timeline\",\n \"crud.archetype.activity.description\": \"View a chronological log of all actions, changes, and events related to this person.\",\n \"crud.archetype.documents.title\": \"Documents\",\n \"crud.archetype.documents.description\": \"Attach and manage files, contracts, certifications, and other documents for this person.\",\n \"crud.archetype.addresses.title\": \"Addresses\",\n \"crud.archetype.addresses.add\": \"Add address\",\n \"crud.archetype.addresses.addTitle\": \"New address\",\n \"crud.archetype.addresses.editTitle\": \"Edit address\",\n \"crud.archetype.addresses.formDescription\": \"Postal code, street and city are required; everything else is optional.\",\n \"crud.archetype.addresses.emptyTitle\": \"No address on file\",\n \"crud.archetype.addresses.emptyDescription\": \"Add where this person is delivered to, collected from, or billed at.\",\n \"crud.archetype.addresses.fallbackLabel\": \"Address\",\n \"crud.archetype.addresses.labelPlaceholder\": \"Home, Work…\",\n \"crud.archetype.addresses.default\": \"Default\",\n \"crud.archetype.addresses.setDefault\": \"Use as the default address\",\n \"crud.archetype.addresses.kind.both\": \"Shipping and billing\",\n \"crud.archetype.addresses.kind.shipping\": \"Shipping\",\n \"crud.archetype.addresses.kind.billing\": \"Billing\",\n \"crud.archetype.addresses.field.label\": \"Label\",\n \"crud.archetype.addresses.field.kind\": \"Use\",\n \"crud.archetype.addresses.cepNotFound\": \"Postal code not found. Fill the address in by hand.\",\n \"crud.archetype.addresses.cepFailed\": \"Could not check the postal code right now. Fill it in by hand or try again.\",\n \"crud.archetype.addresses.field.postalCode\": \"Postal code\",\n \"crud.archetype.addresses.field.street\": \"Street\",\n \"crud.archetype.addresses.field.number\": \"Number\",\n \"crud.archetype.addresses.field.complement\": \"Complement\",\n \"crud.archetype.addresses.field.district\": \"District\",\n \"crud.archetype.addresses.field.city\": \"City\",\n \"crud.archetype.addresses.field.state\": \"State\",\n \"crud.archetype.addresses.field.recipient\": \"Recipient\",\n \"crud.archetype.addresses.field.phone\": \"Phone\",\n \"crud.archetype.addresses.created\": \"Address added\",\n \"crud.archetype.addresses.updated\": \"Address updated\",\n \"crud.archetype.addresses.deleted\": \"Address removed\",\n \"crud.archetype.addresses.deleteTitle\": \"Remove this address?\",\n \"crud.archetype.addresses.loadFailed\": \"Could not load the addresses.\",\n \"crud.archetype.addresses.saveFailed\": \"Could not save the address.\",\n \"crud.archetype.addresses.deleteFailed\": \"Could not remove the address.\",\n \"crud.archetype.addresses.noTenant\": \"No active organization — reload the page and try again.\",\n \"crud.archetype.schedule.title\": \"Schedule\",\n \"crud.archetype.schedule.description\": \"View and manage appointments, shifts, and availability for this person.\",\n \"crud.archetype.inventory.title\": \"Inventory & Stock\",\n \"crud.archetype.inventory.description\": \"Track stock levels, view movement history, set reorder alerts, and manage inventory across locations.\",\n \"crud.archetype.suppliers.title\": \"Suppliers\",\n \"crud.archetype.suppliers.description\": \"View and manage which suppliers provide this product, compare costs, and track purchase orders.\",\n \"crud.archetype.pricing.title\": \"Pricing History\",\n \"crud.archetype.pricing.description\": \"View price changes over time, manage promotional pricing, and set location-specific prices.\",\n \"crud.archetype.productActivity.title\": \"Activity\",\n \"crud.archetype.productActivity.description\": \"View a log of all changes, stock adjustments, and events related to this product.\",\n \"crud.archetype.availability.title\": \"Availability\",\n \"crud.archetype.availability.description\": \"Configure when this service can be booked, set duration rules, and manage capacity limits.\",\n \"crud.archetype.servicePricing.title\": \"Pricing Tiers\",\n \"crud.archetype.servicePricing.description\": \"Manage pricing tiers, member discounts, and location-specific pricing for this service.\",\n \"crud.archetype.serviceActivity.title\": \"Activity\",\n \"crud.archetype.serviceActivity.description\": \"View a log of all bookings, changes, and events related to this service.\",\n \"crud.archetype.members.title\": \"Team Members\",\n \"crud.archetype.members.description\": \"View and manage staff assigned to this location, their roles and schedules.\",\n \"crud.archetype.locationSchedule.title\": \"Operating Hours\",\n \"crud.archetype.locationSchedule.description\": \"Set business hours, holidays, and special schedules for this location.\",\n \"crud.archetype.locationStats.title\": \"Statistics\",\n \"crud.archetype.locationStats.description\": \"View performance metrics, revenue, and activity for this location.\",\n \"crud.archetype.locationActivity.title\": \"Activity\",\n \"crud.archetype.locationActivity.description\": \"View a log of all events, changes, and operations at this location.\",\n \"crud.archetype.owner.noOwner\": \"No owner assigned\",\n \"crud.archetype.owner.assignHint\": \"Edit this record to assign an owner.\",\n \"crud.archetype.owner.name\": \"Name\",\n \"crud.archetype.owner.phone\": \"Phone\",\n \"crud.archetype.owner.email\": \"Email\",\n \"crud.archetype.owner.document\": \"Document\",\n \"crud.archetype.owner.address\": \"Address\",\n \"crud.archetype.owner.active\": \"Active\",\n \"crud.archetype.owner.inactive\": \"Inactive\",\n \"crud.archetype.history.title\": \"History\",\n \"crud.archetype.history.description\": \"View visit history, past reports, treatments, and timeline of events.\",\n \"crud.archetype.subjectDocuments.title\": \"Documents\",\n \"crud.archetype.subjectDocuments.description\": \"Attach and manage files, lab results, images, and certificates.\",\n \"schedule.days.sun\": \"Sun\",\n \"schedule.days.mon\": \"Mon\",\n \"schedule.days.tue\": \"Tue\",\n \"schedule.days.wed\": \"Wed\",\n \"schedule.days.thu\": \"Thu\",\n \"schedule.days.fri\": \"Fri\",\n \"schedule.days.sat\": \"Sat\",\n \"schedule.editor.weeklyTitle\": \"Weekly Working Hours\",\n \"schedule.editor.weeklyDescription\": \"Set when this professional is regularly available\",\n \"schedule.editor.unavailable\": \"Unavailable\",\n \"schedule.editor.newInterval\": \"New interval for {{day}}\",\n \"schedule.editor.addHoursFor\": \"Add hours for {{day}}\",\n \"schedule.editor.removeInterval\": \"Remove interval\",\n \"schedule.editor.copyToAll\": \"Copy to all days\",\n \"schedule.editor.bufferTooltip\": \"Buffer time between appointments\",\n \"schedule.editor.min\": \"min\",\n \"schedule.editor.exceptionsTitle\": \"Date Exceptions\",\n \"schedule.editor.exceptionsDescription\": \"Override working hours for specific dates\",\n \"schedule.editor.addException\": \"Add Exception\",\n \"schedule.editor.noExceptions\": \"No date exceptions configured\",\n \"schedule.editor.startDate\": \"Start date\",\n \"schedule.editor.endDate\": \"End date\",\n \"schedule.editor.type\": \"Type\",\n \"schedule.editor.customHours\": \"Custom hours\",\n \"schedule.editor.workingHours\": \"Working hours\",\n \"schedule.editor.to\": \"to\",\n \"schedule.editor.addTimeBlock\": \"Add time block\",\n \"schedule.editor.notes\": \"Notes\",\n \"schedule.editor.notesPlaceholder\": \"e.g. Vacation, Holiday, Training...\",\n \"schedule.editor.saveException\": \"Save Exception\",\n \"schedule.editor.removeException\": \"Remove exception\",\n \"schedule.editor.failedToLoad\": \"Failed to load schedule\",\n \"schedule.editor.saved\": \"Working hours saved\",\n \"schedule.editor.failedToSave\": \"Failed to save\",\n \"schedule.editor.selectStartDate\": \"Please select a start date\",\n \"schedule.editor.endDateAfterStart\": \"End date must be after start date\",\n \"schedule.editor.exceptionAdded\": \"Exception added\",\n \"schedule.editor.failedToSaveException\": \"Failed to save exception\",\n \"schedule.editor.exceptionRemoved\": \"Exception removed\",\n \"schedule.editor.failedToDelete\": \"Failed to delete\",\n \"schedule.blockSettings.title\": \"Block Settings\",\n \"schedule.blockSettings.location\": \"Location\",\n \"schedule.blockSettings.noLocation\": \"No location\",\n \"schedule.blockSettings.maxConcurrent\": \"Max concurrent\",\n \"schedule.blockSettings.minAdvance\": \"Min advance\",\n \"schedule.blockSettings.maxAdvance\": \"Max advance\",\n \"schedule.blockSettings.hrs\": \"hrs\",\n \"schedule.blockSettings.days\": \"days\",\n \"schedule.blockSettings.label\": \"Label\",\n \"schedule.blockSettings.labelPlaceholder\": \"e.g. Morning - Cuts only\",\n \"schedule.blockSettings.allowedServices\": \"Allowed services\",\n \"schedule.blockSettings.allServices\": \"All services\",\n \"schedule.blockSettings.oneService\": \"1 service\",\n \"schedule.blockSettings.nServices\": \"{{count}} services\",\n \"registry.suppliers\": \"Supplier\",\n \"registry.suppliers.description\": \"Manage your product and material suppliers\",\n \"registry.product-categories\": \"Product Category\",\n \"registry.product-categories.description\": \"Product categories for organization\",\n \"registry.stock-locations\": \"Stock Location\",\n \"registry.stock-locations.description\": \"Physical storage locations for inventory\",\n \"registry.measurement-units\": \"Measurement Unit\",\n \"registry.measurement-units.description\": \"Standard units of measure\",\n \"registry.payment-methods\": \"Payment Method\",\n \"registry.chart-of-accounts\": \"Chart of Accounts\",\n \"registry.cost-centers\": \"Cost Center\",\n \"registry.bank-accounts\": \"Bank Account\",\n \"registry.commission-rules\": \"Commission Rule\",\n \"registry.price-tables\": \"Price Table\",\n \"registry.price-variations\": \"Price Variation\",\n \"registry.payment-method-types\": \"Payment Type\",\n \"registry.card-brands\": \"Card Brand\",\n \"registry.lead-sources\": \"Lead Source\",\n \"registry.tags\": \"Tag\",\n \"registry.activity-types\": \"Activity Type\",\n \"org.connectionError.title\": \"Connection failed\",\n \"org.connectionError.description\": \"Unable to connect to the server. Please check your internet connection and try again.\",\n \"org.connectionError.retry\": \"Try again\",\n \"app.mockMode.banner\": \"You are in offline mode. Data shown may not be up to date.\",\n\n // Analytics control bar — the range/compare/filter row every analytics\n // surface shares. Lives in the shell dictionary and not in a plugin's,\n // because the bar itself ships in @fayz-ai/ui and is mounted by whichever\n // surface needs it.\n \"analytics.range.today\": \"Today\",\n \"analytics.range.yesterday\": \"Yesterday\",\n \"analytics.range.last_7_days\": \"Last 7 days\",\n \"analytics.range.last_30_days\": \"Last 30 days\",\n \"analytics.range.last_90_days\": \"Last 90 days\",\n \"analytics.range.this_month\": \"This month\",\n \"analytics.range.last_month\": \"Last month\",\n \"analytics.range.this_quarter\": \"This quarter\",\n \"analytics.range.this_year\": \"This year\",\n \"analytics.range.custom\": \"Custom range\",\n \"analytics.range.label\": \"Period\",\n \"analytics.range.from\": \"From\",\n \"analytics.range.to\": \"To\",\n \"analytics.compare.previous_period\": \"Previous period\",\n \"analytics.compare.previous_year\": \"Previous year\",\n \"analytics.compare.none\": \"No comparison\",\n \"analytics.compare.label\": \"Compare\",\n \"analytics.filters\": \"Filters\",\n \"analytics.filters.search\": \"Search filters\",\n \"analytics.filters.none\": \"No filters match\",\n \"analytics.filters.noOptions\": \"No options available\",\n \"analytics.filters.apply\": \"Apply\",\n \"analytics.filters.clear\": \"Clear\",\n \"analytics.filters.general\": \"General\",\n \"analytics.filters.selected\": \"{{count}} selected\",\n \"analytics.filters.remove\": \"Remove filter\",\n \"analytics.refresh\": \"Refresh\",\n \"assistant.askAI\": \"Create with AI\",\n // Tasks moved from plugin-tasks into the shell with 047, so the strings had\n // to come with it — an app without the plugin would otherwise show raw keys.\n // The plugin still registers its own copy; last one in wins and they match.\n \"tasks.drawer.title\": \"Tasks\",\n \"tasks.drawer.subtitle\": \"Manage your team tasks\",\n \"tasks.quickAdd.placeholder\": \"Add a task...\",\n \"tasks.filter.all\": \"All\",\n \"tasks.filter.todo\": \"To Do\",\n \"tasks.filter.inProgress\": \"In Progress\",\n \"tasks.filter.done\": \"Done\",\n \"tasks.filter.mine\": \"Mine\",\n \"tasks.group.onboarding\": \"Getting started\",\n // The same words as the group header — the tag is that header travelling\n // with the row into the filtered views, where there is no header.\n \"tasks.source.onboarding\": \"Getting started\",\n \"tasks.source.agent\": \"Assistant\",\n \"tasks.status.todo\": \"To Do\",\n \"tasks.status.in_progress\": \"In Progress\",\n \"tasks.status.done\": \"Done\",\n \"tasks.status.cancelled\": \"Cancelled\",\n \"tasks.priority.low\": \"Low\",\n \"tasks.priority.medium\": \"Medium\",\n \"tasks.priority.high\": \"High\",\n \"tasks.priority.urgent\": \"Urgent\",\n \"tasks.detail.descriptionPlaceholder\": \"Add a description...\",\n \"tasks.detail.dueDate\": \"Due Date\",\n \"tasks.detail.subtasks\": \"Subtasks\",\n \"tasks.detail.delete\": \"Delete Task\",\n \"tasks.detail.deleteConfirm\": \"Are you sure you want to delete this task?\",\n \"tasks.detail.created\": \"Created\",\n \"tasks.detail.updated\": \"Updated\",\n \"tasks.detail.chatWithAi\": \"Chat with AI\",\n \"tasks.detail.chatWithAi.prompt\": \"Take over this task and help me resolve it now, using your tools when needed:\",\n \"tasks.detail.addSubtask\": \"Add subtask...\",\n \"tasks.detail.back\": \"Back to list\",\n \"tasks.detail.title\": \"Task\",\n \"tasks.summary.overdue\": \"overdue\",\n \"tasks.summary.dueToday\": \"due today\",\n \"tasks.empty\": \"No tasks yet\",\n \"tasks.empty.description\": \"Add your first task using the input above\",\n \"analytics.moveBar\": \"Move the bar (drag, or arrow keys; double-click to reset)\",\n}\n","import * as React from 'react'\nimport { shellTranslationsEn } from './shell-translations.en'\n\nexport interface I18nConfig {\n defaultLocale: string\n supported: string[]\n translations: Record<string, Record<string, string>>\n}\n\nconst I18nContext = React.createContext<I18nConfig>({\n defaultLocale: 'en',\n supported: ['en'],\n translations: {},\n})\n\nexport const I18nProvider = I18nContext.Provider\n\nexport function useI18nConfig(): I18nConfig {\n return React.useContext(I18nContext)\n}\n\nexport function useTranslation(): (key: string, params?: Record<string, string | number>) => string {\n const config = React.useContext(I18nContext)\n const localeStore = useLocaleStore()\n const locale = localeStore.locale\n\n return React.useCallback(\n (key: string, params?: Record<string, string | number>): string => {\n const localizedTranslations = config.translations[locale] ?? {}\n const fallback = config.translations[config.defaultLocale] ?? {}\n // Global fallback lets plugins register their locales independently of any\n // I18nProvider — needed when a de-bridged plugin runs under a host shell\n // that doesn't mount @fayz-ai/core's I18nProvider (incremental de-bridge), and\n // for manifest apps where plugins self-register translations.\n const gLocale = _globalTranslations[locale] ?? {}\n const gFallback = _globalTranslations[config.defaultLocale] ?? {}\n // 'en' last, always. Only the English shell dict ships eagerly (the others\n // are lazy chunks), so an app whose defaultLocale is NOT 'en' had no\n // safety net: every key living only in the lazy chunk rendered as its own\n // key until the chunk landed — which is why the settings rail read\n // \"settings.general\" next to a translated \"Segurança\".\n const gEnglish = _globalTranslations.en ?? {}\n let raw =\n localizedTranslations[key] ?? gLocale[key] ??\n fallback[key] ?? gFallback[key] ??\n gEnglish[key] ?? key\n\n if (params) {\n for (const [k, v] of Object.entries(params)) {\n raw = raw.replace(new RegExp(`\\\\{\\\\{${k}\\\\}\\\\}`, 'g'), String(v))\n }\n }\n return raw\n },\n [config, locale],\n )\n}\n\n// Minimal locale store (avoids circular dep with stores package)\ninterface LocaleStore {\n locale: string\n setLocale: (locale: string) => void\n}\n\nlet _localeStore: LocaleStore = {\n locale: 'en',\n setLocale: (l) => { _localeStore.locale = l },\n}\nconst _localeListeners = new Set<() => void>()\n\nexport function setLocaleStore(store: LocaleStore): void {\n _localeStore = store\n}\n\n// Bumped when lazily-loaded translations register so subscribed components\n// re-render even though the locale string itself did not change.\nlet _i18nVersion = 0\nfunction getI18nSnapshot(): string {\n return `${_localeStore.locale} ${_i18nVersion}`\n}\n\nfunction useLocaleStore(): LocaleStore {\n const snapshot = React.useSyncExternalStore(\n (listener) => {\n _localeListeners.add(listener)\n return () => _localeListeners.delete(listener)\n },\n getI18nSnapshot,\n getI18nSnapshot,\n )\n return React.useMemo(() => {\n const locale = snapshot.slice(0, snapshot.indexOf(' '))\n return { locale, setLocale: setCurrentLocale }\n }, [snapshot])\n}\n\nexport function getCurrentLocale(): string {\n return _localeStore.locale\n}\n\n// Same key the saas locale store persists to; read directly to avoid the dep.\nconst LOCALE_STORAGE_KEY = 'saas-core:locale'\n\n/**\n * Pick a bilingual literal at CONFIG time — outside React, before any provider\n * mounts. App config modules evaluate at import time, when `getCurrentLocale()`\n * is still the 'en' default (ES imports hoist above `setCurrentLocale`), so this\n * reads the persisted locale directly and treats pt-BR as the default for a\n * first visit. Inside components use `useTranslation()` instead.\n *\n * name: tl('Appointments', 'Agenda')\n */\nexport function tl(en: string, ptBR: string): string {\n try {\n const locale = globalThis.localStorage?.getItem(LOCALE_STORAGE_KEY) ?? 'pt-BR'\n return locale.startsWith('pt') ? ptBR : en\n } catch {\n return ptBR\n }\n}\n\nexport function setCurrentLocale(locale: string): void {\n // The load is attempted even when the locale did not CHANGE. It used to sit\n // below the early return, so an app whose persisted locale already equalled\n // its default never loaded that locale's chunk at all: pt-BR was the store's\n // initial value, `setCurrentLocale('pt-BR')` returned immediately, and every\n // key living only in the lazy pt-BR dictionary rendered as its own key —\n // \"settings.general\" in the settings rail. preloadLocale is idempotent.\n void preloadLocale(locale)\n if (_localeStore.locale === locale) return\n _localeStore.setLocale(locale)\n _localeListeners.forEach((listener) => listener())\n}\n\n// Core built-in translations\nexport const coreTranslations: Record<string, Record<string, string>> = {\n en: {\n 'common.save': 'Save',\n 'common.saveChanges': 'Save Changes',\n 'common.saving': 'Saving...',\n 'common.cancel': 'Cancel',\n 'common.delete': 'Delete',\n 'common.edit': 'Edit',\n 'common.close': 'Close',\n 'common.confirm': 'Confirm',\n 'common.discard': 'Discard',\n 'common.back': 'Back',\n 'common.formIncomplete': 'Fill in the required fields before saving.',\n 'connectors.title': 'Connectors',\n 'connectors.subtitle': 'Connect external providers to this module.',\n 'connectors.connected': 'Connected',\n 'connectors.notConnected': 'Not connected',\n 'connectors.connect': 'Connect',\n 'connectors.disconnect': 'Disconnect',\n 'connectors.test': 'Test',\n 'connectors.save': 'Save connection',\n 'connectors.testing': 'Testing…',\n 'connectors.saving': 'Saving…',\n 'connectors.empty': 'No integrations available for this module yet.',\n 'connectors.configure': 'Configure',\n 'connectors.hubSubtitle': 'Apps, assistants and providers connected to this organization.',\n 'connectors.add': 'Add connector',\n 'connectors.addSubtitle': 'What this app can connect today — and what would come with another module.',\n 'connectors.addSubtitleScoped': 'What this app can connect for this section.',\n 'connectors.addEmptyTitle': 'Nothing to connect here yet',\n // No \"install the module\": the person reading this cannot. Modules are\n // chosen when the app is built, so the honest next step is the assistant.\n 'connectors.addEmptyBody': 'Integrations arrive with the modules this app was built with. Tell the assistant which provider you need.',\n 'connectors.sectionInstalled': 'Installed',\n 'connectors.sectionOtherModule': 'Available with another module',\n 'connectors.otherModuleBody':\n 'Fayz has these, but this app was not built with the module that hosts them. Modules arrive with a new version of the app.',\n 'connectors.requiresModule': 'Needs the {{module}} module',\n 'connectors.sectionSoon': 'Coming soon',\n // The module is here; the integration is not. Saying which is missing is\n // the whole reason this is a section and not a chip on the list below.\n 'connectors.soonBody':\n 'Part of the modules this app already has. Not ready to connect yet — you will see it here when it is.',\n 'connectors.soonNote': 'Being built',\n 'connectors.soonChip': 'coming soon',\n // The assistant's card. \"Connect\" is the same verb the journey uses, so the\n // button promises the screen it opens — never that anything was connected.\n 'connectors.cardConnect': 'Connect',\n 'connectors.cardConfigure': 'Finish setting up',\n 'connectors.cardOpen': 'See connection',\n 'connectors.askMore': 'Didn’t find what you need?',\n 'connectors.askMoreCta': 'Ask the assistant',\n 'connectors.askMoreDraft': 'I need to integrate this app with ',\n 'connectors.search': 'Search integration…',\n 'connectors.noneFoundTitle': 'Nothing found',\n 'connectors.noneFound': 'No integration found for “{{query}}”.',\n 'connectors.viewAll': 'See every connector',\n 'connectors.viewCategory': 'See other {{category}} connectors',\n 'connectors.viewSimilar': 'See other connectors like these',\n 'connectors.groupMine': 'In this organization',\n 'connectors.docs': 'Provider documentation',\n 'connectors.builtIn': 'native',\n 'connectors.partOfApp': 'part of the app',\n 'connectors.plane.agentic': 'Assistant',\n 'connectors.plane.agentic.desc': 'The assistant uses the provider’s own tools on demand. Nothing is copied.',\n 'connectors.plane.sync': 'Sync',\n 'connectors.plane.sync.desc': 'A pipeline keeps a copy of the data inside the app.',\n 'connectors.plane.request': 'On demand',\n 'connectors.plane.request.desc': 'The provider is asked at the moment of use. The answer is not stored.',\n 'connectors.plane.recommended': 'recommended',\n 'connectors.plane.undecided': 'How this one is resolved is decided by Fayz when the integration ships.',\n 'connectors.plane.switched': 'Mode changed',\n 'connectors.plane.lockedHint': 'This connection cannot change mode after the fact — disconnect and connect again.',\n 'connectors.direction.inbound': 'inbound',\n 'connectors.direction.outbound': 'outbound',\n // Badge labels: short enough to sit beside a name, and identical in the\n // list and on the connection's own header.\n 'connectors.state.connected': 'Connected',\n 'connectors.state.needs_setup': 'Needs setup',\n 'connectors.state.ready': 'Not connected',\n 'connectors.needsSetup': 'Connected — still needs setting up',\n 'connectors.trigger.on-write': 'on save',\n 'connectors.trigger.scheduled': 'scheduled',\n 'connectors.trigger.manual': 'manual',\n 'connectors.trigger.webhook': 'provider notice',\n 'connectors.authorize.oauthOnly':\n 'Nothing to fill in: you authorize on the provider’s own screen and come back.',\n 'connectors.authorize.nothingToFill':\n 'Nothing to fill in: this provider’s key is registered in Fayz. How it behaves is set up right after connecting.',\n // Not every partner hands a code back on a redirect. AppMax issues the keys\n // when you INSTALL the app inside its own panel, so the honest instruction\n // is the two-step gesture, not a Connect button that could never finish.\n // Deliberately provider-agnostic: not every provider has a \"Fayz app\" to\n // install. AbacatePay's merchant CREATES their own key, and the old wording\n // sent them hunting for an app that does not exist.\n 'connectors.authorize.installFirst':\n 'Get the key from your {{name}} panel and paste it here.',\n 'connectors.authorize.installAt': 'Open the {{name}} panel',\n 'connectors.settings.title': 'How it works',\n 'connectors.settings.subtitle': 'Change any of this whenever you like — it does not touch the connection.',\n 'connectors.settings.save': 'Save settings',\n 'connectors.settings.saved': 'Settings saved',\n 'connectors.settings.required': 'Needed for this integration to work.',\n 'connectors.settings.missingHint': 'Fill this in for the integration to start working.',\n 'connectors.moments.title': 'When it acts',\n 'connectors.moments.calls': 'Calls',\n 'connectors.moments.callsHint': 'The app calls the connector at this moment.',\n 'connectors.moments.eventsHint':\n 'Each of these is delivered by the integration itself today — there is no general dispatch yet.',\n 'connectors.moments.touches': 'Reaches',\n 'connectors.permissions.title': 'Permissions',\n 'connectors.permissions.data': 'Records',\n 'connectors.permissions.events': 'Events',\n 'connectors.permissions.action.read': 'read',\n 'connectors.permissions.action.write': 'change',\n 'connectors.permissions.action.listen': 'listen',\n 'connectors.permissions.action.emit': 'publish',\n 'connectors.permissions.sensitive': 'sensitive',\n 'connectors.permissions.noteLabel': 'How to read this',\n // The sentence the whole screen stands on. Nothing enforces a permission\n // today (FAY-1348 §D7 is unbuilt), so this states what the list IS and\n // refuses to imply the platform polices it. See ConnectorPermissions.tsx.\n 'connectors.permissions.notEnforced':\n 'Declared by the connector and shown before you authorize. Fayz does not yet use it to block access.',\n 'connectors.permissions.undeclared': 'This connector has not stated what it needs access to yet.',\n 'connectors.journey.what': 'What it does',\n 'connectors.journey.how': 'How it gets resolved',\n 'connectors.journey.authorize': 'Authorize',\n 'connectors.journey.connectAccount': 'Connect the account',\n 'connectors.journey.access': 'Access',\n 'connectors.journey.after': 'Once connected',\n 'connectors.missingNamed': 'Still to choose: {{list}}',\n 'connectors.tab.overview': 'Overview',\n 'connectors.tab.runs': 'Syncs',\n 'connectors.tab.settings': 'Settings',\n // An empty history is the state a healthy new connection is IN, and it stays\n // meaningful once the scheduler lands (FAY-1405): it will then mean the\n // clock has not come round yet, never that something broke.\n 'connectors.runs.empty':\n 'Nothing has run yet. Empty is not a failure — no sync has been executed since you connected. The first one happens the next time one of this connector’s moments occurs.',\n 'connectors.runs.emptyFirstLoad':\n 'The first run brings a sample of {{count}} records in seconds; the rest arrives in the background.',\n 'connectors.runs.backfilling': 'A full load is running in the background — large catalogues can take a few minutes.',\n 'connectors.runs.status.success': 'Done',\n 'connectors.runs.status.partial': 'Partly done',\n 'connectors.runs.status.error': 'Failed',\n 'connectors.runs.status.running': 'Running',\n 'connectors.runs.from': 'from {{name}}',\n 'connectors.runs.to': 'to {{name}}',\n 'connectors.runs.counts': '{{written}} saved of {{fetched}} read',\n 'connectors.runs.nothingToDo': 'Nothing to bring across',\n // The \"should I do something?\" answer, said once and only under the newest\n // failure. Cursors survive a failed run, so this is a fact, not comfort.\n 'connectors.runs.failedHint': 'Nothing was lost: the next run picks up where this one stopped.',\n // The failure folds: the reason stays readable, the call behind it is one\n // click away for whoever is going to fix it.\n 'connectors.runs.seeDetails': 'See the call detail',\n 'connectors.runs.detail.stream': 'Resource',\n 'connectors.runs.detail.started': 'Started',\n 'connectors.runs.detail.finished': 'Finished',\n 'connectors.runs.detail.duration': 'Took',\n 'connectors.runs.detail.seconds': '{{count}}s',\n 'connectors.runs.detail.minutes': '{{count}} min',\n 'connectors.runs.detail.attempt': 'Attempt',\n 'connectors.runs.detail.runId': 'Run',\n 'connectors.runs.detail.raw': 'What the connector recorded',\n 'connectors.when.now': 'just now',\n 'connectors.when.minutes': '{{count}} min ago',\n 'connectors.when.hours': '{{count}} h ago',\n 'connectors.when.days': '{{count}} d ago',\n 'connectors.overview.resolves': 'How it resolves',\n 'connectors.overview.whenItSyncs': 'When it syncs',\n 'connectors.overview.reaches': 'Data it reaches',\n 'connectors.overview.provider': 'From {{name}}',\n 'connectors.entity.booking': 'Appointments',\n 'connectors.entity.order': 'Orders',\n 'connectors.entity.payment': 'Payments',\n 'connectors.entity.shipment': 'Shipments',\n 'connectors.entity.shop_customer': 'Store customers',\n 'connectors.entity.shop_order': 'Store orders',\n 'connectors.entity.shop_product': 'Products',\n 'connectors.authorize.elsewhere': 'This connection is authorized outside the app.',\n 'connectors.after.agentic': 'These tools are available to the assistant right now.',\n 'connectors.after.willAgentic': 'The assistant gains this provider’s tools; no copy of the data is made.',\n 'connectors.after.willSync': 'A pipeline starts keeping this data in agreement, with mapping and history.',\n 'connectors.after.settingsLater': 'How it behaves is set up afterwards, on the connection’s Settings tab.',\n 'connectors.oauth.returned': 'Account connected',\n 'connectors.oauth.failed': 'The provider did not complete the authorization.',\n // A consent flow that failed comes back naming a slug from a closed set, not\n // prose. The slug is a word for engineers — `token_exchange_failed` on a\n // shop owner's screen is noise — so each one is given a sentence that says\n // what happened and whether they can do anything about it. An unrecognised\n // slug falls back to `connectors.oauth.failed` and is never rendered raw.\n 'connectors.oauth.error.config_missing':\n 'This integration is not set up in Fayz yet, so the authorization could not start. There is nothing to fix on your side — talk to support.',\n 'connectors.oauth.error.invalid_state':\n 'This connection link does not check out. Go back and press Connect again.',\n 'connectors.oauth.error.expired_state':\n 'The connection link expired while you were away. Press Connect again.',\n 'connectors.oauth.error.not_a_member':\n 'Your account does not belong to this organization, so the connection was not saved.',\n 'connectors.oauth.error.provider_denied':\n 'Access was refused on the provider’s screen. To connect, the access has to be allowed.',\n 'connectors.oauth.error.missing_code':\n 'The provider sent you back without the authorization. Try connecting again.',\n 'connectors.oauth.error.token_exchange_failed':\n 'The provider refused the authorization at the last step. Check that you used the right account and try again.',\n 'connectors.oauth.error.token_incomplete':\n 'The provider authorized, but did not return everything needed to keep the connection alive. Try connecting again.',\n 'connectors.oauth.error.store_failed':\n 'The authorization worked, but the connection could not be saved. Try again in a moment.',\n 'connectors.oauth.error.unexpected': 'Something went wrong finishing the connection. Try again in a moment.',\n 'connectors.oauth.noStarter':\n 'This app is not linked to a Fayz project that can authorize connections, so there is nowhere to send you. Link the app to Fayz to finish.',\n 'connectors.tools': 'Assistant tools',\n 'connectors.entitiesCount': 'reaches {{count}} record types',\n 'connectors.entitiesList': 'Records: {{list}}',\n 'connectors.capabilitiesUnknown': 'This connector has not published what it reaches yet.',\n 'connectors.readOnly': 'read only',\n 'connectors.readWrite': 'read and write',\n 'connectors.listensTo': 'Listens to',\n 'connectors.listensToHint': 'While it is connected, these facts are handed to the integration. Disconnecting stops all of them.',\n 'connectors.connectedOn': 'Connected on {{date}}',\n 'connectors.lastUsed': 'used {{when}}',\n 'connectors.neverUsed': 'not used yet',\n 'connectors.grantedByOther': 'authorized by someone else on the team',\n 'connectors.revokeConfirm': 'Disconnect {{name}}? It loses access immediately.',\n 'connectors.filter.all': 'All',\n 'connectors.filter.connected': 'Connected',\n 'connectors.filter.agentic': 'Assistant',\n 'connectors.filter.sync': 'Sync',\n 'connectors.emptyTitle': 'No connectors',\n 'connectors.emptyBody': 'Connect a provider, or authorize an external assistant, and it shows up here.',\n 'connectors.noProject': 'Connectors unavailable',\n 'connectors.noProjectBody': 'This app is not linked to a Fayz project.',\n 'connectors.noOrg': 'No organization',\n 'connectors.noOrgBody': 'Pick an organization to see its connections.',\n 'connectors.credentials.held': 'The key goes to Fayz, encrypted. It is never stored in this app’s database.',\n // Where a credential is CHANGED, not only first entered.\n 'connectors.credentials.section': 'Credentials',\n // Saving REPLACES the whole credential, so a field left blank is a field\n // erased. Said before the save and not after, because after is a store that\n // stopped charging and nobody knowing why.\n 'connectors.credentials.replaces': 'Saving replaces every credential at once. Fill in ALL the fields — whatever you leave blank is erased.',\n 'connectors.credentials.noSink':\n 'This app is not connected to a Fayz project that can hold credentials, so there is nowhere safe to keep this key. Connect the app to Fayz to finish.',\n // A module named to someone who does not have it. The plugin id is not a\n // label anywhere else because an installed module carries its own (usually\n // built from the app's config); a module the app lacks has nothing to ask.\n // Every id in connector-map.generated.ts must appear here — asserted in\n // packages/admin/test/connect/available.test.ts.\n // Every module a connector row can name. The id is the manifest's, so it is\n // `custom_forms` and not `forms` — the admin suite asserts each one has a\n // label here, because a missing one prints the raw id to a business owner.\n 'modules.agenda': 'Scheduling',\n 'modules.blog': 'Blog',\n 'modules.conversations': 'Conversations',\n 'modules.courses': 'Courses',\n 'modules.crm': 'CRM',\n 'modules.custom_forms': 'Forms',\n 'modules.financial': 'Financial',\n 'modules.marketing': 'Marketing',\n 'modules.orders': 'Orders',\n 'modules.reports': 'Analytics',\n 'modules.reputation': 'Reputation',\n 'modules.shop': 'Shop',\n 'saveBar.unsaved': 'Unsaved changes',\n 'common.add': 'Add',\n 'common.loading': 'Loading...',\n 'common.error': 'Something went wrong',\n 'common.noResults': 'No results found.',\n 'common.search': 'Search',\n 'common.actions': 'Actions',\n 'common.continue': 'Continue',\n 'common.done': 'Done',\n 'common.yes': 'Yes',\n 'common.no': 'No',\n 'common.active': 'Active',\n 'common.inactive': 'Inactive',\n 'common.overview': 'Overview',\n 'common.settings': 'Settings',\n 'common.plugins': 'Plugins',\n 'common.new': 'New',\n 'common.filter': 'Filter',\n 'common.export': 'Export',\n 'common.import': 'Import',\n 'common.preview': 'Preview',\n 'common.total': 'Total',\n 'crud.newItem': 'New {{name}}',\n 'crud.editItem': 'Edit {{name}}',\n 'crud.deleteConfirm': 'Delete {{name}}?',\n 'crud.deleteMessage': 'This action cannot be undone.',\n 'crud.created': '{{name}} created',\n 'crud.updated': '{{name}} updated',\n 'crud.deleted': '{{name}} deleted',\n 'crud.noItems': 'No {{namePlural}} yet.',\n 'auth.login.title': 'Sign in',\n 'auth.login.subtitle': 'Enter your credentials to access your account',\n 'auth.login.emailLabel': 'Email',\n 'auth.login.passwordLabel': 'Password',\n 'auth.login.submit': 'Sign in',\n 'auth.login.forgotPassword': 'Forgot password?',\n 'auth.login.noAccount': \"Don't have an account?\",\n 'auth.login.signUpLink': 'Sign up',\n 'auth.signup.title': 'Create account',\n 'auth.signup.submit': 'Create account',\n 'auth.signup.hasAccount': 'Already have an account?',\n 'auth.signup.signInLink': 'Sign in',\n 'auth.setPassword.recoveryTitle': 'Choose a new password',\n 'auth.setPassword.recoverySubtitle': 'Set a new password to get back into your account.',\n 'auth.setPassword.welcomeTitle': 'Welcome to {{appName}}',\n 'auth.setPassword.welcomeSubtitle': 'Choose a password to finish setting up your access.',\n 'auth.setPassword.newPassword': 'New password',\n 'auth.setPassword.confirmPassword': 'Confirm password',\n 'auth.setPassword.submit': 'Save password',\n 'auth.setPassword.saving': 'Saving...',\n 'auth.setPassword.tooShort': 'Password must be at least 8 characters.',\n 'auth.setPassword.mismatch': 'Passwords do not match.',\n 'auth.setPassword.checking': 'Checking your link...',\n 'auth.setPassword.expiredTitle': 'This link has expired',\n 'auth.setPassword.expiredSubtitle': 'Reset links can only be used once. Enter your e-mail and we will send a new one.',\n 'auth.setPassword.email': 'E-mail',\n 'auth.setPassword.sendNewLink': 'Send new link',\n 'auth.setPassword.sending': 'Sending...',\n 'auth.setPassword.sent': 'Check your inbox — a new link is on the way.',\n 'auth.setPassword.backToLogin': 'Back to sign in',\n 'settings.title': 'Settings',\n 'settings.company': 'Company',\n 'settings.branding': 'Branding',\n 'settings.security': 'Security',\n 'settings.sites': 'Sites',\n 'settings.team': 'Team',\n 'settings.billing': 'Billing',\n 'settings.locations': 'Locations',\n 'billing.title': 'Plans & Billing',\n 'billing.currentPlan': 'Current Plan',\n 'billing.upgrade': 'Upgrade',\n 'billing.manage': 'Manage Subscription',\n },\n 'pt-BR': {\n 'common.save': 'Salvar',\n 'common.saveChanges': 'Salvar Alterações',\n 'common.saving': 'Salvando...',\n 'common.cancel': 'Cancelar',\n 'common.delete': 'Excluir',\n 'common.edit': 'Editar',\n 'common.close': 'Fechar',\n 'common.confirm': 'Confirmar',\n 'common.discard': 'Descartar',\n 'common.back': 'Voltar',\n 'common.formIncomplete': 'Preencha os campos obrigatórios antes de salvar.',\n 'connectors.title': 'Conectores',\n 'connectors.subtitle': 'Conecte provedores externos a este módulo.',\n 'connectors.connected': 'Conectado',\n 'connectors.notConnected': 'Não conectado',\n 'connectors.connect': 'Conectar',\n 'connectors.disconnect': 'Desconectar',\n 'connectors.test': 'Testar',\n 'connectors.save': 'Salvar conexão',\n 'connectors.testing': 'Testando…',\n 'connectors.saving': 'Salvando…',\n 'connectors.empty': 'Nenhuma integração disponível para este módulo ainda.',\n 'connectors.configure': 'Configurar',\n 'connectors.hubSubtitle': 'Aplicativos, assistentes e provedores ligados a esta organização.',\n 'connectors.add': 'Adicionar conector',\n 'connectors.addSubtitle': 'O que este app já pode conectar — e o que viria com outro módulo.',\n 'connectors.addSubtitleScoped': 'O que este app pode conectar para esta seção.',\n 'connectors.addEmptyTitle': 'Ainda não há o que conectar aqui',\n 'connectors.addEmptyBody': 'As integrações vêm com os módulos com que este app foi montado. Diga ao assistente de qual provedor você precisa.',\n 'connectors.sectionInstalled': 'Instalados',\n 'connectors.sectionOtherModule': 'Disponíveis com outro módulo',\n 'connectors.otherModuleBody':\n 'O Fayz tem estes, mas este app não foi montado com o módulo que os hospeda. Módulos entram numa nova versão do app.',\n 'connectors.requiresModule': 'Requer o módulo {{module}}',\n 'connectors.sectionSoon': 'Em breve',\n 'connectors.soonBody':\n 'Fazem parte dos módulos que este app já tem. Ainda não dá para conectar — quando der, aparece aqui.',\n 'connectors.soonNote': 'Em construção',\n 'connectors.soonChip': 'em breve',\n 'connectors.cardConnect': 'Conectar',\n 'connectors.cardConfigure': 'Terminar de configurar',\n 'connectors.cardOpen': 'Ver conexão',\n 'connectors.askMore': 'Não encontrou o que precisa?',\n 'connectors.askMoreCta': 'Peça ao assistente',\n 'connectors.askMoreDraft': 'Preciso integrar este app com ',\n 'connectors.search': 'Buscar integração…',\n 'connectors.noneFoundTitle': 'Nada encontrado',\n 'connectors.noneFound': 'Nenhuma integração encontrada para “{{query}}”.',\n 'connectors.viewAll': 'Ver todos os conectores',\n 'connectors.viewCategory': 'Ver outros conectores de {{category}}',\n 'connectors.viewSimilar': 'Ver outros conectores parecidos',\n 'connectors.groupMine': 'Nesta organização',\n 'connectors.docs': 'Documentação do provedor',\n 'connectors.builtIn': 'nativo',\n 'connectors.partOfApp': 'faz parte do app',\n 'connectors.plane.agentic': 'Assistente',\n 'connectors.plane.agentic.desc': 'O assistente usa as ferramentas do provedor na hora. Nada é copiado.',\n 'connectors.plane.sync': 'Sincronização',\n 'connectors.plane.sync.desc': 'Uma esteira mantém uma cópia dos dados dentro do app.',\n 'connectors.plane.request': 'Sob demanda',\n 'connectors.plane.request.desc': 'O provedor é consultado na hora do uso. A resposta não é guardada.',\n 'connectors.plane.recommended': 'recomendado',\n 'connectors.plane.undecided': 'O modo desta integração é definido pelo Fayz quando ela for ligada.',\n 'connectors.plane.switched': 'Modo alterado',\n 'connectors.plane.lockedHint': 'Esta conexão não troca de modo depois de feita — desconecte e conecte de novo.',\n 'connectors.direction.inbound': 'entrada',\n 'connectors.direction.outbound': 'saída',\n 'connectors.state.connected': 'Conectado',\n 'connectors.state.needs_setup': 'Falta configurar',\n 'connectors.state.ready': 'Não conectado',\n 'connectors.needsSetup': 'Conectado — falta configurar',\n 'connectors.trigger.on-write': 'ao salvar',\n 'connectors.trigger.scheduled': 'agendado',\n 'connectors.trigger.manual': 'manual',\n 'connectors.trigger.webhook': 'aviso do provedor',\n 'connectors.authorize.oauthOnly':\n 'Nada para preencher: você autoriza na tela do próprio provedor e volta para cá.',\n 'connectors.authorize.nothingToFill':\n 'Nada para preencher: a chave deste provedor fica registrada no Fayz. Como ele funciona você ajusta logo depois de conectar.',\n // Genérica de propósito: nem todo provedor tem \"app da Fayz para instalar\".\n // Na AbacatePay o lojista CRIA a própria chave no painel dele, e a frase\n // antiga mandava procurar um app que não existe.\n 'connectors.authorize.installFirst':\n 'Pegue a chave no seu painel {{name}} e cole aqui.',\n 'connectors.authorize.installAt': 'Abrir o painel da {{name}}',\n 'connectors.settings.title': 'Como funciona',\n 'connectors.settings.subtitle': 'Você pode mudar isso quando quiser — não mexe na conexão.',\n 'connectors.settings.save': 'Salvar configurações',\n 'connectors.settings.saved': 'Configurações salvas',\n 'connectors.settings.required': 'Necessário para essa integração funcionar.',\n 'connectors.settings.missingHint': 'Preencha para a integração começar a funcionar.',\n 'connectors.moments.title': 'Quando ele age',\n 'connectors.moments.calls': 'Chamadas',\n 'connectors.moments.callsHint': 'O app aciona o conector nesse momento.',\n 'connectors.moments.eventsHint':\n 'Hoje cada um é entregue pela própria integração — ainda não existe uma entrega geral.',\n 'connectors.moments.touches': 'Alcança',\n 'connectors.permissions.title': 'Permissões',\n 'connectors.permissions.data': 'Registros',\n 'connectors.permissions.events': 'Eventos',\n 'connectors.permissions.action.read': 'ler',\n 'connectors.permissions.action.write': 'alterar',\n 'connectors.permissions.action.listen': 'ouvir',\n 'connectors.permissions.action.emit': 'publicar',\n 'connectors.permissions.sensitive': 'sensível',\n 'connectors.permissions.noteLabel': 'Como ler isto',\n // A frase em que a tela inteira se apoia. Hoje nada barra uma permissão (o\n // D7 da FAY-1348 não existe), então isto diz o que a lista É e se recusa a\n // sugerir que a plataforma fiscaliza. Ver ConnectorPermissions.tsx.\n 'connectors.permissions.notEnforced':\n 'Declarado pelo próprio conector e mostrado antes de você autorizar. O Fayz ainda não usa isso para barrar acesso.',\n 'connectors.permissions.undeclared': 'Este conector ainda não declarou o que precisa acessar.',\n 'connectors.journey.what': 'O que ele faz',\n 'connectors.journey.how': 'Como ele resolve',\n 'connectors.journey.authorize': 'Autorizar',\n 'connectors.journey.connectAccount': 'Conectar a conta',\n 'connectors.journey.access': 'Acesso',\n 'connectors.journey.after': 'Depois de conectado',\n 'connectors.missingNamed': 'Falta escolher: {{list}}',\n 'connectors.tab.overview': 'Visão geral',\n 'connectors.tab.runs': 'Sincronizações',\n 'connectors.tab.settings': 'Configurações',\n // Vazio é o estado de uma conexão nova e saudável, e continua significando\n // isso quando o agendador chegar (FAY-1405): que a hora ainda não passou, e\n // nunca que alguma coisa quebrou.\n 'connectors.runs.empty':\n 'Nada rodou ainda. Vazio não é falha — nenhuma sincronização foi executada desde que você conectou. A primeira acontece no próximo dos momentos deste conector.',\n 'connectors.runs.emptyFirstLoad':\n 'A primeira traz uma amostra de {{count}} registros em segundos; o resto entra em segundo plano.',\n 'connectors.runs.backfilling': 'Uma carga completa está rodando em segundo plano — em catálogos grandes leva alguns minutos.',\n 'connectors.runs.status.success': 'Concluída',\n 'connectors.runs.status.partial': 'Parcial',\n 'connectors.runs.status.error': 'Falhou',\n 'connectors.runs.status.running': 'Em andamento',\n 'connectors.runs.from': 'de {{name}}',\n 'connectors.runs.to': 'para {{name}}',\n 'connectors.runs.counts': '{{written}} gravados de {{fetched}} lidos',\n 'connectors.runs.nothingToDo': 'Nada para trazer',\n // A resposta ao \"preciso fazer alguma coisa?\", dita uma vez e só embaixo da\n // falha mais recente. O cursor sobrevive à falha — isto é fato, não consolo.\n 'connectors.runs.failedHint': 'Nada foi perdido: a próxima sincronização continua de onde esta parou.',\n // A falha dobra: o motivo continua legível, e a chamada por trás dele fica a\n // um clique de quem vai resolver.\n 'connectors.runs.seeDetails': 'Ver detalhes da chamada',\n 'connectors.runs.detail.stream': 'Recurso',\n 'connectors.runs.detail.started': 'Começou',\n 'connectors.runs.detail.finished': 'Terminou',\n 'connectors.runs.detail.duration': 'Levou',\n 'connectors.runs.detail.seconds': '{{count}}s',\n 'connectors.runs.detail.minutes': '{{count}} min',\n 'connectors.runs.detail.attempt': 'Tentativa',\n 'connectors.runs.detail.runId': 'Execução',\n 'connectors.runs.detail.raw': 'O que o conector registrou',\n 'connectors.when.now': 'agora',\n 'connectors.when.minutes': 'há {{count}} min',\n 'connectors.when.hours': 'há {{count}} h',\n 'connectors.when.days': 'há {{count}} d',\n 'connectors.overview.resolves': 'Como ele resolve',\n 'connectors.overview.whenItSyncs': 'Quando ele sincroniza',\n 'connectors.overview.reaches': 'Dados que ele alcança',\n 'connectors.overview.provider': 'Da {{name}}',\n 'connectors.entity.booking': 'Agendamentos',\n 'connectors.entity.order': 'Pedidos',\n 'connectors.entity.payment': 'Pagamentos',\n 'connectors.entity.shipment': 'Envios',\n 'connectors.entity.shop_customer': 'Clientes da loja',\n 'connectors.entity.shop_order': 'Pedidos da loja',\n 'connectors.entity.shop_product': 'Produtos',\n 'connectors.authorize.elsewhere': 'Esta conexão é autorizada fora do app.',\n 'connectors.after.agentic': 'Essas ferramentas já estão à mão do assistente.',\n 'connectors.after.willAgentic': 'O assistente ganha as ferramentas do provedor; nenhuma cópia dos dados é feita.',\n 'connectors.after.willSync': 'Uma esteira passa a manter esses dados em acordo, com de-para e histórico.',\n 'connectors.after.settingsLater': 'O jeito de trabalhar é ajustado depois, na aba Configurações da conexão.',\n 'connectors.oauth.returned': 'Conta conectada',\n 'connectors.oauth.failed': 'O provedor não concluiu a autorização.',\n 'connectors.oauth.error.config_missing':\n 'Esta integração ainda não está configurada no Fayz, então a autorização não pôde começar. Não é nada que você resolva por aí — fale com o suporte.',\n 'connectors.oauth.error.invalid_state':\n 'Este link de conexão não confere. Volte e clique em Conectar de novo.',\n 'connectors.oauth.error.expired_state':\n 'O link de conexão expirou enquanto você estava fora. Clique em Conectar de novo.',\n 'connectors.oauth.error.not_a_member':\n 'Sua conta não faz parte desta organização, então a conexão não foi salva.',\n 'connectors.oauth.error.provider_denied':\n 'O acesso foi recusado na tela do provedor. Para conectar, é preciso permitir o acesso.',\n 'connectors.oauth.error.missing_code':\n 'O provedor devolveu você sem a autorização. Tente conectar de novo.',\n 'connectors.oauth.error.token_exchange_failed':\n 'O provedor recusou a autorização na última etapa. Confira se a conta usada é a certa e tente de novo.',\n 'connectors.oauth.error.token_incomplete':\n 'O provedor autorizou, mas não devolveu tudo que é preciso para manter a conexão viva. Tente conectar de novo.',\n 'connectors.oauth.error.store_failed':\n 'A autorização deu certo, mas não foi possível guardar a conexão. Tente de novo em instantes.',\n 'connectors.oauth.error.unexpected': 'Algo deu errado ao concluir a conexão. Tente de novo em instantes.',\n 'connectors.oauth.noStarter':\n 'Este app não está ligado a um projeto Fayz que possa autorizar conexões, então não há para onde te mandar. Ligue o app ao Fayz para concluir.',\n 'connectors.tools': 'Ferramentas do assistente',\n 'connectors.entitiesCount': 'alcança {{count}} tipos de registro',\n 'connectors.entitiesList': 'Registros: {{list}}',\n 'connectors.capabilitiesUnknown': 'Este conector ainda não publicou o que ele alcança.',\n 'connectors.readOnly': 'somente leitura',\n 'connectors.readWrite': 'leitura e escrita',\n 'connectors.listensTo': 'Ouve',\n 'connectors.listensToHint': 'Enquanto estiver conectada, esses fatos são entregues à integração. Desconectar interrompe todos.',\n 'connectors.connectedOn': 'Conectado em {{date}}',\n 'connectors.lastUsed': 'usado {{when}}',\n 'connectors.neverUsed': 'ainda não usado',\n 'connectors.grantedByOther': 'autorizado por outra pessoa da equipe',\n 'connectors.revokeConfirm': 'Desconectar {{name}}? Ele perde o acesso imediatamente.',\n 'connectors.filter.all': 'Tudo',\n 'connectors.filter.connected': 'Conectados',\n 'connectors.filter.agentic': 'Assistente',\n 'connectors.filter.sync': 'Sincronização',\n 'connectors.emptyTitle': 'Nenhum conector',\n 'connectors.emptyBody': 'Conecte um provedor, ou autorize um assistente externo, e ele aparece aqui.',\n 'connectors.noProject': 'Conectores indisponíveis',\n 'connectors.noProjectBody': 'Este app não está ligado a um projeto Fayz.',\n 'connectors.noOrg': 'Sem organização',\n 'connectors.noOrgBody': 'Escolha uma organização para ver as conexões dela.',\n 'connectors.credentials.held': 'A chave vai criptografada para o Fayz. Ela nunca fica no banco de dados deste app.',\n 'connectors.credentials.section': 'Credenciais',\n 'connectors.credentials.replaces': 'Salvar substitui todas as credenciais de uma vez. Preencha TODOS os campos — o que ficar em branco é apagado.',\n 'connectors.credentials.noSink':\n 'Este app não está ligado a um projeto Fayz que possa guardar credenciais, então não há onde essa chave fique em segurança. Ligue o app ao Fayz para concluir.',\n 'modules.agenda': 'Agenda',\n 'modules.blog': 'Blog',\n 'modules.conversations': 'Conversas',\n 'modules.courses': 'Cursos',\n 'modules.crm': 'CRM',\n 'modules.custom_forms': 'Formulários',\n 'modules.financial': 'Financeiro',\n 'modules.marketing': 'Marketing',\n 'modules.orders': 'Pedidos',\n 'modules.reports': 'Relatórios',\n 'modules.reputation': 'Reputação',\n 'modules.shop': 'Loja',\n 'saveBar.unsaved': 'Alterações não salvas',\n 'common.add': 'Adicionar',\n 'common.loading': 'Carregando...',\n 'common.error': 'Algo deu errado',\n 'common.noResults': 'Nenhum resultado encontrado.',\n 'common.search': 'Buscar',\n 'common.actions': 'Ações',\n 'common.continue': 'Continuar',\n 'common.done': 'Concluído',\n 'common.yes': 'Sim',\n 'common.no': 'Não',\n 'common.active': 'Ativo',\n 'common.inactive': 'Inativo',\n 'common.overview': 'Visão Geral',\n 'common.settings': 'Configurações',\n 'common.plugins': 'Plugins',\n 'common.new': 'Novo',\n 'common.filter': 'Filtrar',\n 'common.export': 'Exportar',\n 'common.import': 'Importar',\n 'common.preview': 'Pré-visualizar',\n 'common.total': 'Total',\n 'crud.newItem': 'Novo {{name}}',\n 'crud.editItem': 'Editar {{name}}',\n 'crud.deleteConfirm': 'Excluir {{name}}?',\n 'crud.deleteMessage': 'Esta ação não pode ser desfeita.',\n 'crud.created': '{{name}} criado',\n 'crud.updated': '{{name}} atualizado',\n 'crud.deleted': '{{name}} excluído',\n 'crud.noItems': 'Nenhum {{namePlural}} ainda.',\n 'auth.login.title': 'Entrar',\n 'auth.login.subtitle': 'Digite suas credenciais para acessar sua conta',\n 'auth.login.emailLabel': 'E-mail',\n 'auth.login.passwordLabel': 'Senha',\n 'auth.login.submit': 'Entrar',\n 'auth.login.forgotPassword': 'Esqueceu a senha?',\n 'auth.login.noAccount': 'Não tem uma conta?',\n 'auth.login.signUpLink': 'Cadastrar',\n 'auth.signup.title': 'Criar conta',\n 'auth.signup.submit': 'Criar conta',\n 'auth.signup.hasAccount': 'Já tem uma conta?',\n 'auth.signup.signInLink': 'Entrar',\n 'auth.setPassword.recoveryTitle': 'Escolha uma nova senha',\n 'auth.setPassword.recoverySubtitle': 'Defina uma nova senha para voltar a acessar sua conta.',\n 'auth.setPassword.welcomeTitle': 'Bem-vindo ao {{appName}}',\n 'auth.setPassword.welcomeSubtitle': 'Escolha uma senha para terminar de configurar seu acesso.',\n 'auth.setPassword.newPassword': 'Nova senha',\n 'auth.setPassword.confirmPassword': 'Confirmar senha',\n 'auth.setPassword.submit': 'Salvar senha',\n 'auth.setPassword.saving': 'Salvando...',\n 'auth.setPassword.tooShort': 'A senha precisa ter no mínimo 8 caracteres.',\n 'auth.setPassword.mismatch': 'As senhas não conferem.',\n 'auth.setPassword.checking': 'Verificando seu link...',\n 'auth.setPassword.expiredTitle': 'Este link expirou',\n 'auth.setPassword.expiredSubtitle': 'Links de acesso só funcionam uma vez. Informe seu e-mail e enviamos um novo.',\n 'auth.setPassword.email': 'E-mail',\n 'auth.setPassword.sendNewLink': 'Enviar novo link',\n 'auth.setPassword.sending': 'Enviando...',\n 'auth.setPassword.sent': 'Confira sua caixa de entrada — o novo link está a caminho.',\n 'auth.setPassword.backToLogin': 'Voltar para o login',\n 'settings.title': 'Configurações',\n 'settings.company': 'Empresa',\n 'settings.branding': 'Identidade Visual',\n 'settings.security': 'Segurança',\n 'settings.sites': 'Sites',\n 'settings.team': 'Equipe',\n 'settings.billing': 'Faturamento',\n 'settings.locations': 'Localizações',\n 'billing.title': 'Planos e Faturamento',\n 'billing.currentPlan': 'Plano Atual',\n 'billing.upgrade': 'Fazer Upgrade',\n 'billing.manage': 'Gerenciar Assinatura',\n },\n}\n\n// Global translation registry — plugins merge their locales here so keys resolve\n// regardless of which shell mounts the I18nProvider.\nlet _globalTranslations: Record<string, Record<string, string>> = {}\n\nexport function registerTranslations(translations?: Record<string, Record<string, string>>): void {\n if (!translations) return\n _globalTranslations = mergeTranslations(_globalTranslations, translations)\n}\n\nexport function mergeTranslations(\n base: Record<string, Record<string, string>>,\n ...overrides: Array<Record<string, Record<string, string>> | undefined>\n): Record<string, Record<string, string>> {\n const result = { ...base }\n for (const override of overrides) {\n if (!override) continue\n for (const [locale, translations] of Object.entries(override)) {\n result[locale] = { ...(result[locale] ?? {}), ...translations }\n }\n }\n return result\n}\n\n// Seed the global fallback with core's own translations + the shared shell /\n// CRUD / framework translations (extracted from saas-core's central i18n), so\n// the native CRUD engine, framework UI and de-bridged plugins resolve their\n// keys even under a host shell that does not mount @fayz-ai/core's I18nProvider.\nregisterTranslations(coreTranslations)\nregisterTranslations({ en: shellTranslationsEn })\n\n// ---------------------------------------------------------------------------\n// Lazy shell locales. Only 'en' (the fallback) ships eagerly; other locales\n// load on demand when the app switches to them (setCurrentLocale) or when the\n// app awaits preloadLocale before rendering. Keys resolve through the 'en'\n// fallback until the locale chunk arrives, then listeners re-render.\n// ---------------------------------------------------------------------------\n\nconst _lazyShellLocales: Record<string, () => Promise<Record<string, string>>> = {\n 'pt-BR': () => import('./shell-translations.pt-br').then((m) => m.shellTranslationsPtBr),\n}\nconst _loadedShellLocales = new Set<string>(['en'])\nconst _pendingShellLocales = new Map<string, Promise<void>>()\n\n/**\n * Ensure a lazily-split shell locale is loaded and registered. Resolves\n * immediately for unknown/already-loaded locales. setCurrentLocale calls this\n * fire-and-forget; apps that must avoid an English flash on first paint can\n * `await preloadLocale('pt-BR')` before rendering.\n */\nexport function preloadLocale(locale: string): Promise<void> {\n if (_loadedShellLocales.has(locale)) return Promise.resolve()\n const loader = _lazyShellLocales[locale]\n if (!loader) return Promise.resolve()\n let pending = _pendingShellLocales.get(locale)\n if (!pending) {\n pending = loader().then((translations) => {\n _loadedShellLocales.add(locale)\n _pendingShellLocales.delete(locale)\n registerTranslations({ [locale]: translations })\n _i18nVersion++\n _localeListeners.forEach((listener) => listener())\n })\n _pendingShellLocales.set(locale, pending)\n }\n return pending\n}\n"]}
@@ -1005,6 +1005,7 @@ function createEmptyRuntime(context = EMPTY_CONTEXT) {
1005
1005
  widgets: [],
1006
1006
  dashboardWidgets: [],
1007
1007
  analyticsCards: [],
1008
+ onboardingPrograms: [],
1008
1009
  events: [],
1009
1010
  capabilities: [],
1010
1011
  aiTools: [],
@@ -1130,6 +1131,7 @@ function resolvePluginRuntime({
1130
1131
  const connectorsByHost = /* @__PURE__ */ new Map();
1131
1132
  const pluginFeatures = [];
1132
1133
  const pluginLimits = [];
1134
+ const onboardingPrograms = [];
1133
1135
  for (const plugin of activePlugins) {
1134
1136
  routes.push(...plugin.routes.map((r) => ({ ...r, plugin })));
1135
1137
  navigation.push(...plugin.navigation.map((entry, i) => ({
@@ -1158,6 +1160,16 @@ function resolvePluginRuntime({
1158
1160
  }
1159
1161
  if (plugin.declaredFeatures) pluginFeatures.push(...plugin.declaredFeatures);
1160
1162
  if (plugin.declaredLimits) pluginLimits.push(...plugin.declaredLimits);
1163
+ if (plugin.onboarding?.program) {
1164
+ const program = plugin.onboarding.program;
1165
+ onboardingPrograms.push({
1166
+ ...program,
1167
+ role: program.role ?? plugin.defaultAgentRole,
1168
+ order: program.order ?? 100,
1169
+ pluginId: plugin.id,
1170
+ pluginName: plugin.name
1171
+ });
1172
+ }
1161
1173
  widgets.push(...plugin.widgets.map((w, i) => ({
1162
1174
  ...w,
1163
1175
  order: w.order ?? i,
@@ -1199,9 +1211,10 @@ function resolvePluginRuntime({
1199
1211
  });
1200
1212
  }
1201
1213
  widgets.sort((a, b) => a.zone !== b.zone ? a.zone.localeCompare(b.zone) : a.order - b.order);
1214
+ onboardingPrograms.sort((a, b) => a.order - b.order);
1202
1215
  dashboardWidgets.sort((a, b) => a.order - b.order);
1203
1216
  analyticsCards.sort((a, b) => a.order - b.order);
1204
- return { context, plugins: resolvedPlugins, activePlugins, routes, navigation, settingsTabs, widgets, dashboardWidgets, analyticsCards, capabilities, events, aiTools, issues, registries, connectorsByHost, pluginFeatures, pluginLimits };
1217
+ return { context, plugins: resolvedPlugins, activePlugins, routes, navigation, settingsTabs, widgets, dashboardWidgets, analyticsCards, capabilities, events, aiTools, issues, registries, connectorsByHost, pluginFeatures, pluginLimits, onboardingPrograms };
1205
1218
  }
1206
1219
  function getWidgetsForZone(runtime, zone, contextOverrides) {
1207
1220
  const ctx = { ...runtime.context, ...contextOverrides };
@@ -1247,5 +1260,5 @@ function useConnectorsForPlugin(hostPluginId) {
1247
1260
  }
1248
1261
 
1249
1262
  export { BLOCK_SETTING_TYPES, PLUGIN_API_VERSION, PluginRuntimeProvider, auditBlocks, blockRegistry, buildEntityDomainEvents, checkAgainstSchema, checkBlockConstraints, checkBlockContext, checkNodePlacement, clearExtensionPoints, clearHandles, clearLoaders, componentRegistry, dataNeedKey, defaultPropsFromSettings, defineBlock, defineExtensionPoint, defineLoader, definePlugin, describeBlock, describeBlocks, describeExtensionPoints, describeLoaders, entityEventKey, extensionAfterHooks, extensionPointRegistry, formatSchemaIssues, getAnalyticsCards, getBlock, getBlockMeta, getComponent, getDashboardWidgets, getHandle, getMetric, getPage, getPlugin, getPluginFactory, getScaffold, getWidgetsForZone, handleNameFor, handleRegistry, hasExtensionPoint, hasHandle, hasLoader, isBlockEnabledOn, isLoaderParamRef, isLoaderPropRef, listBlocks, listExtensionHandlers, listExtensionPoints, listHandles, listLoaders, listMetrics, listPluginFactories, listPlugins, loaderRegistry, metricRegistry, pageRegistry, pluginFactoryRegistry, pluginRegistry, registerBlock, registerComponent, registerExtensionHandler, registerHandle, registerMetric, registerPage, registerPlugin, registerPluginFactory, registerScaffold, repairBlockTree, resolveHandle, resolveLoader, resolvePluginComponent, resolvePluginRuntime, runEscapeValve, runExtensionPoint, scaffoldRegistry, settingsToJsonSchema, summarizeBlockAudit, unregisterExtensionHandler, useConnectorsForPlugin, usePluginRuntime, usePluginRuntimeOptional };
1250
- //# sourceMappingURL=chunk-UMIZDILP.js.map
1251
- //# sourceMappingURL=chunk-UMIZDILP.js.map
1263
+ //# sourceMappingURL=chunk-AOIYRUTF.js.map
1264
+ //# sourceMappingURL=chunk-AOIYRUTF.js.map