The merchant team page was read-only. Now merchant owners can invite, edit roles, and remove team members across all their stores from a single hub view. Architecture: No new models — delegates to existing store_team_service. Members are deduplicated across stores with per-store role badges. New: - 5 API endpoints: GET team (member-centric), GET store roles, POST invite (multi-store), PUT update role, DELETE remove member - merchant-team.js Alpine component with invite/edit/remove modals - Full CRUD template with stats cards, store filter, member table - 7 Pydantic schemas for merchant team request/response - 2 service methods: validate_store_ownership, get_merchant_team_members - 25 new i18n keys across 4 tenancy locales + 1 core common key Tests: 434 tenancy tests passing, arch-check green. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
235 lines
7.0 KiB
JSON
235 lines
7.0 KiB
JSON
{
|
|
"common": {
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"create": "Create",
|
|
"update": "Update",
|
|
"add": "Add",
|
|
"remove": "Remove",
|
|
"close": "Close",
|
|
"back": "Back",
|
|
"next": "Next",
|
|
"previous": "Previous",
|
|
"submit": "Submit",
|
|
"confirm": "Confirm",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"ok": "OK",
|
|
"done": "Done",
|
|
"loading": "Loading...",
|
|
"saving": "Saving...",
|
|
"processing": "Processing...",
|
|
"searching": "Searching...",
|
|
"sending": "Sending",
|
|
"refresh": "Refresh",
|
|
"retry": "Retry",
|
|
"view": "View",
|
|
"view_details": "View Details",
|
|
"view_all": "View All",
|
|
"show_more": "Show More",
|
|
"show_less": "Show Less",
|
|
"search": "Search",
|
|
"filter": "Filter",
|
|
"sort": "Sort",
|
|
"export": "Export",
|
|
"import": "Import",
|
|
"download": "Download",
|
|
"upload": "Upload",
|
|
"select": "Select",
|
|
"select_all": "Select All",
|
|
"deselect_all": "Deselect All",
|
|
"actions": "Actions",
|
|
"status": "Status",
|
|
"date": "Date",
|
|
"time": "Time",
|
|
"name": "Name",
|
|
"email": "Email",
|
|
"phone": "Phone",
|
|
"address": "Address",
|
|
"description": "Description",
|
|
"notes": "Notes",
|
|
"total": "Total",
|
|
"amount": "Amount",
|
|
"quantity": "Quantity",
|
|
"price": "Price",
|
|
"items": "Items",
|
|
"id": "ID",
|
|
"type": "Type",
|
|
"category": "Category",
|
|
"tags": "Tags",
|
|
"active": "Active",
|
|
"inactive": "Inactive",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"pending": "Pending",
|
|
"completed": "Completed",
|
|
"failed": "Failed",
|
|
"success": "Success",
|
|
"error": "Error",
|
|
"warning": "Warning",
|
|
"info": "Info",
|
|
"all": "All",
|
|
"none": "None",
|
|
"other": "Other",
|
|
"unknown": "Unknown",
|
|
"not_available": "N/A",
|
|
"required": "Required",
|
|
"optional": "Optional",
|
|
"language": "Language",
|
|
"settings": "Settings",
|
|
"help": "Help",
|
|
"support": "Support",
|
|
"contact": "Contact",
|
|
"about": "About",
|
|
"privacy": "Privacy",
|
|
"terms": "Terms",
|
|
"copyright": "Copyright"
|
|
},
|
|
"auth": {
|
|
"sign_in": "Sign In",
|
|
"sign_out": "Sign Out",
|
|
"sign_up": "Sign Up",
|
|
"login": "Login",
|
|
"logout": "Logout",
|
|
"register": "Register",
|
|
"forgot_password": "Forgot Password?",
|
|
"reset_password": "Reset Password",
|
|
"change_password": "Change Password",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"confirm_password": "Confirm Password",
|
|
"current_password": "Current Password",
|
|
"new_password": "New Password",
|
|
"remember_me": "Remember Me",
|
|
"email_placeholder": "Enter your email",
|
|
"username_placeholder": "Enter your username",
|
|
"password_placeholder": "Enter your password",
|
|
"login_success": "Login successful",
|
|
"login_failed": "Login failed",
|
|
"logout_success": "You have been logged out",
|
|
"invalid_credentials": "Invalid username or password",
|
|
"session_expired": "Your session has expired. Please login again.",
|
|
"account_locked": "Your account has been locked",
|
|
"account_inactive": "Your account is inactive",
|
|
"signing_in": "Signing in...",
|
|
"sending": "Sending...",
|
|
"send_reset_link": "Send Reset Link",
|
|
"reset_password_desc": "Enter your email address and we'll send you a link to reset your password.",
|
|
"back_to_login": "Back to Login",
|
|
"back_to_platform": "Back to Platform",
|
|
"no_account": "Don't have an account?",
|
|
"visit_platform": "Visit our platform",
|
|
"already_have_account": "Already have an account?",
|
|
"create_account": "Create an account",
|
|
"continue_shopping": "Continue shopping",
|
|
"admin_login": "Admin Login",
|
|
"merchant_login": "Merchant Login",
|
|
"store_login": "Store Portal Login",
|
|
"customer_login": "Customer Login",
|
|
"create_account_title": "Create Account",
|
|
"creating_account": "Creating account...",
|
|
"sign_in_instead": "Sign in instead",
|
|
"first_name": "First Name",
|
|
"last_name": "Last Name",
|
|
"phone_number": "Phone Number",
|
|
"marketing_consent": "I'd like to receive news and special offers",
|
|
"password_requirements": "Must contain at least 8 characters, one letter, and one number",
|
|
"check_email": "Check Your Email",
|
|
"reset_link_sent": "We've sent a password reset link to your email. Please check your inbox and click the link to reset your password.",
|
|
"didnt_receive_email": "Didn't receive the email? Check your spam folder or",
|
|
"try_again": "try again",
|
|
"remember_password": "Remember your password?"
|
|
},
|
|
"nav": {
|
|
"dashboard": "Dashboard",
|
|
"products": "Products",
|
|
"orders": "Orders",
|
|
"customers": "Customers",
|
|
"inventory": "Inventory",
|
|
"analytics": "Analytics",
|
|
"reports": "Reports",
|
|
"settings": "Settings",
|
|
"profile": "Profile",
|
|
"team": "Team",
|
|
"marketplace": "Marketplace",
|
|
"integrations": "Integrations",
|
|
"notifications": "Notifications",
|
|
"help": "Help",
|
|
"home": "Home",
|
|
"shop": "Shop",
|
|
"cart": "Cart",
|
|
"checkout": "Checkout",
|
|
"account": "Account",
|
|
"wishlist": "Wishlist"
|
|
},
|
|
"errors": {
|
|
"generic": "An error occurred",
|
|
"not_found": "Not Found",
|
|
"unauthorized": "Unauthorized",
|
|
"forbidden": "Forbidden",
|
|
"bad_request": "Bad Request",
|
|
"server_error": "Server Error",
|
|
"network_error": "Network Error",
|
|
"timeout": "Request Timeout",
|
|
"validation_error": "Validation Error",
|
|
"field_required": "This field is required",
|
|
"invalid_email": "Invalid email address",
|
|
"invalid_phone": "Invalid phone number",
|
|
"password_mismatch": "Passwords do not match",
|
|
"password_too_short": "Password is too short",
|
|
"try_again": "Please try again",
|
|
"contact_support": "Please contact support if the problem persists"
|
|
},
|
|
"confirmations": {
|
|
"delete_title": "Confirm Delete",
|
|
"delete_message": "Are you sure you want to delete this item?",
|
|
"delete_warning": "This action cannot be undone.",
|
|
"cancel_title": "Confirm Cancel",
|
|
"cancel_message": "Are you sure you want to cancel?",
|
|
"unsaved_changes": "You have unsaved changes. Are you sure you want to leave?",
|
|
"logout_title": "Confirm Logout",
|
|
"logout_message": "Are you sure you want to log out?"
|
|
},
|
|
"footer": {
|
|
"all_rights_reserved": "All rights reserved",
|
|
"powered_by": "Powered by"
|
|
},
|
|
"time": {
|
|
"now": "Now",
|
|
"today": "Today",
|
|
"yesterday": "Yesterday",
|
|
"tomorrow": "Tomorrow",
|
|
"this_week": "This Week",
|
|
"last_week": "Last Week",
|
|
"this_month": "This Month",
|
|
"last_month": "Last Month",
|
|
"this_year": "This Year",
|
|
"ago": "ago",
|
|
"seconds": "seconds",
|
|
"minutes": "minutes",
|
|
"hours": "hours",
|
|
"days": "days",
|
|
"weeks": "weeks",
|
|
"months": "months",
|
|
"years": "years"
|
|
},
|
|
"formats": {
|
|
"date": "MM/DD/YYYY",
|
|
"time": "HH:mm",
|
|
"datetime": "MM/DD/YYYY HH:mm",
|
|
"currency": "{symbol}{amount}"
|
|
},
|
|
"clipboard": {
|
|
"copied": "Copied to clipboard",
|
|
"failed": "Failed to copy"
|
|
},
|
|
"onboarding": {
|
|
"banner": {
|
|
"title": "Get Started",
|
|
"dismiss": "Dismiss"
|
|
}
|
|
}
|
|
}
|