Files
shihaam 2f5659f3ff
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 8s
document the ui
2026-08-02 18:44:46 +05:00

14 KiB

UI Copy Inventory

Every hardcoded user-facing string in app/ and components/ (excludes components/ui/ primitives). Interpolated parts marked {like_this}. Includes messages that originate in actions/, queries/, lib/schemas.ts where they surface in the UI. This feeds i18n and the framework port.

1. Auth & onboarding

login-formEnter phone number (placeholder), Login (button).

verify-otp-formLogin OTP Sent to {phone_number}, Enter the OTP (sr-only), Enter OTP (placeholder), Login, Change / phone number (link), toasts: The token you entered isn't valid., Unable to log in. Please try again or contact support.

verify-registration-otp-formAccount verification OTP sent to [{phone_number}], Enter the OTP, Enter OTP, Request verification, Go to / login.

signup-formSAR Link by OmegaTech Solutions, Register your account, Pay for your devices and track your bills.; labels/placeholders: Full Name, ID Card, Atoll/Select atoll/Atolls, Island/Select island/Islands, Address, Date of Birth/Date of birth, Account Number/Account no, Phone Number/Phone number; i accept + terms and conditions, i undertand (sic) + the privacy policy; Submit; Already have an account? / login.

auth-actions (surfaced via forms/toasts) — Please enter a phone number, Your account is on pending verification. Please wait for a response from admin or contact shihaam. (hardcoded name), Invalid form data, You must be at least 18 years old to register., ID card already exists., Phone number already exists., User created successfully.

queries/authenticationOTP is required., Your account has been successfully verified! You may login now., Your account could not be verified. Please wait for you verification to be processed. (sic).

2. Devices

devices pageMy Devices; Device Filter / Filter devices by name, MAC address, or vendor.; Device Name/Enter device name, MAC Address/Enter MAC address, Vendor/Enter vendor name; table: Device Name, Mac Address, Vendor, #.

device detailDevice active until {expiry_date}, ACTIVE.

user-devices pageUser Devices; filter Device User/User name or id card; loading.....

device-cardActive until {expiry_date}, Device Inactive, Payment Pending, Blocked by admin + {reason}.

device-cartPay {count} device / Pay {count} devices, Cancel.

devices-tableNo active devices / No devices.; Total {count} device(s)..

devices-to-payDevices to pay / Devices Paid, Please send the following amount to the payment address, bank Baraveli Dev / 90101400028321000, Payment Verified, Processing payment..., Pay with wallet, I have paid; rows: Payment created, Total Devices, Duration, {count} Months, Total Due.

devices-for-paymentSet No of Months, Go to payment.

block-device-dialogUnblock/Unblocking, Block/Blocking/Blocking..., Block 🚫 (title), Please provide a reason for blocking this device, Reason for blocking.

how-to-get-macHow do I find my MAC Address? + description; per-device steps (iPhone/Redmi/Samsung/Windows/Other); support phone 9198026.

device-filterFilter, Device Filters, Select your desired filters here; placeholders Device name ..., Device Mac address ..., Device vendor ...; Apply Filters, Clear Filters, Cancel; chips Device Name: {v} etc., Remove.

admin-devices-tableNo devices.; headers Device Name,User,MAC Address,Vendor,#; Comment (block reason); Total {count} device(s)..

add-device-dialogAdd Device, New Device, To add a new device, enter the device name and mac address below. Click save when you are done., Device Name/eg: iPhone X, Mac Address/Mac address of your device, Save.

queries/devicesDevice name is required and must be at least 2 characters., Validation failed., Authentication required., Device successfully added!, An unexpected error occurred., Reason for blocking is required and must be at least 5 characters., Reason is required and must be at least 5 characters., Device blocked successfully! / Device unblocked successfully!.

3. Payments / billing

payments pageMy Subscriptions; Payment (All/Paid/Unpaid), Payment Method (All/Transfer/Wallet), Number of months; headers Details,Duration,Status,Amount.

payment detailPayment; Payment Pending / Payment Expired / Payment Cancelled.

user-payments pageUser Payments; filters User/Enter user name, MIB Reference/Enter MIB Reference, Amount Range, Duration Range, Payment Status, Payment Method; loading.....

payments-tableNo Payments.; View Details, Devices, Months, Expired, MVR; Total {n} payment(s)..

account-informationAccount Information, Account Name, Account No, Account number copied!, Copy Account Number.

cancel-payment-buttonPayment cancelled successfully!, Your payment of {amount} MVR has been cancelled., Cancel Payment.

cancel-topup-buttonTopup cancelled successfully!, Your topup of {amount} MVR has been cancelled., Cancel Topup.

expiry-time-countdownTime left: {t}, {label} has expired..

user-payments-tableNo user payments yet.; headers Devices paid,User,Amount,Duration,Payment Status,Payment Method,MIB Reference,Paid At,Action; MVR, Months, Details; Total {n} payment(s)..

actions/paymentPayment ID is required, Payment method is required, Payment completed successfully using wallet!, Payment verification successful!, Unable to verify payment. Please try again or contact support., Topup ID is required, Topup payment verified successfully, An error occurred..

4. Wallet / topups

wallet pageTransaction History; Type (All/Debit/Credit), Topup Amount; headers Description,Amount,Transaction Type,View Details.

top-ups pageMy Topups; Status (All/Pending/Cancelled/Paid), Topup Expiry (Expired/Not Expired), Topup Amount; headers Details,Status,Amount.

topup detailTopup; Payment Pending / Topup Expired / Topup Cancelled.

user-topups pageUser Topups; Filter user topups by status, topup expiry, or amount.; loading.....

walletWallet, Your wallet balance is {balance}, Set amount to top up, Go to payment, Cancel, Something went wrong..

wallet-transactions-tableNo transactions yet., Total Debit, Total Credit; headers Description,Amount,Transaction Type,View Details,Created at; Total {n} transaction(s)..

topups-tableNo topups.; headers Details,Status,Amount; View Details; Total {n} topup(s)..

topup-to-payTopup successful!, Your topup payment has been verified successfully using {sourceBank} bank transfer on {trxDate}., Topup Payment Verification Failed, Please send the following amount to the payment address, bank Baraveli Dev / 90101400028321000, Topup Payment Verified, I have paid, Processing payment...; rows Topup created, Payment received, MIB Reference, Total Due.

admin-topup-formAdd cash topup, New Manual Topup, To add a new manual topup, enter the amount below. Click save when you are done., Topup Amount, Topup Description, Save.

admin-topup-tableNo topups yet.; headers User,Status,Amount,Action; View Details; Total {n} topup(s)..

5. Admin / user management

users pageUsers; User Filter / Filter users by id card, name, or house name and more.; filters User First Name, User Last Name, ID Card, House Name, Phone Number, User Status (All/Verified/Unverified); loading.....

user detailsUser Information; Update User, Update Agreement, View Agreement, Verified; sections Database Information, National Information; fields ID Card,Name,House Name,Island,Atoll,DOB,Phone Number; id photo (alt).

user update pageVerify user.

user agreement pageUpload user user agreement (sic).

user-tableNo Users yet.; headers Name,ID Card,Atoll,Island,House Name,Status,Dob,Phone Number,Action; Verified/Unverified, Details; Total {n} user(s)..

user-update-formGo Back, Update User Information; labels ID Card,First Name,Last Name,House Name,DOB,Phone Number; Update User; toasts Success / User updated successfully, Error in {field}: {error}.

user-agreement-formGo Back, Upload User agreement, Agreement Document, Update Agreement; toasts Success / User agreement updated successfully, Error in {field}: {error}.

user-verify-dialogVerify / Verified, Verify User, Are you sure you want to verify the following user?, dynamic Name/ID Card/Address/DOB/Phone Number, Verifying..., User Verified!, The following fields do not match.

user-reject-dialogReject, Are you sure?, dynamic user lines, Rejection details, User rejected successfully!.

actions/user-actionsUser verification failed, An unexpected error occurred., An error occurred while updating the user., User updated successfully, An error occurred while updating the user agreement., User agreement updated successfully, Amount is required, An error occurred while topping up the user., User topped up successfully.

6. Profile

profile pageProfile, Profile Status; fields Full Name,ID Card,Island,Date of Birth,Address,Phone Number,Account Number; status Verified/Not Verified/Unknown.

7. Layout / navigation / shared

root metadataSAR Link Portal (title), Sarlink Portal (description).

dashboard errorSomething went wrong!, Try again.

account-popover{first} {last}, Logout, View Profile.

welcome-bannerWelcome, {firstName} {lastName}.

theme-toggleToggle theme, Light, Dark, System.

generic-filterFilters, Select your desired filters here, Filter, Applying..., Apply Filters, Clear Filters, Cancel, Remove.

searchSearch.... pagination....

client-error-messageYou do not have permission to perform this action., Please contact the administrator to give you permissions., support phone 919-8026.

Generic fallbacks: An unexpected error occurred., An error occurred., Something went wrong! / ., Please try again or contact support., loading.....

8. Price calculator

Price Calculator; labels Initial Price,Number of Devices,Number of Days,Discount Percentage,Total; Price for {n} device(s) over {d} day(s): MVR {price}, Result.

9. Agreements

agreements pageAgreements, An error occurred while fetching agreements: {error}, No agreement found., Print.

agreement-cardSarlink User Agreement, User agreement for Sarlink services., View Agreement.

10. Parental control

Parental Control; Device Filter + name/MAC/vendor filters; table Device Name,Mac Address,Vendor,#.

11. Validation messages

lib/schemas.ts (signUpFormSchema) — Name is required., ID Card is required, Please enter a valid ID Card number. (^[A][0-9]{6}$), Atoll is required., Island is required., address is required. (sic), Date of birth is required., Phone number is required., Please enter a valid phone number (^[79][0-9]{2}[0-9]{4}$), You must accept the terms and conditions, You must accept the privacy policy, Account number is required., Please enter a valid account number (^(7\d{12}|9\d{16})$).

auth-actionsPlease enter a valid phone number (^[7|9][0-9]{2}-[0-9]{4}$ — hyphenated variant), You must be at least 18 years old to register.

verify-otp-formYour one-time password must be 6 characters.

12. Hardcoded contacts / brand / bank

String Type Location
SAR Link Portal / Sarlink Portal brand app/layout.tsx
SAR Link by OmegaTech Solutions company signup-form
SAR Link brand how-to-get-mac
Sarlink User Agreement brand agreement-card
Baraveli Dev bank account name devices-to-pay, topup-to-pay
90101400028321000 bank account number devices-to-pay, topup-to-pay
9198026 support phone how-to-get-mac
919-8026 support phone client-error-message
shihaam personal name (in pending-verification message) auth-actions
MVR currency payments/topups/calculator

Cross-cutting notes (for i18n / port)

  • Pluralization is inline count === 1 ? "X." : "Xs." everywhere — use ICU plurals.
  • Interpolation via bare template literals — extract as named placeholders.
  • Two phone regexes: ^[79][0-9]{2}[0-9]{4}$ (schemas) vs hyphenated ^[7|9][0-9]{2}-[0-9]{4}$ (auth-actions) — reconcile.
  • Duplicated label sets (Full Name/Name/First Name, DOB/Date of Birth/Dob, House Name/Address) — inconsistent wording/casing for the same concept; unify into shared keys.
  • Source-text defects to fix during extraction: i undertand, Upload user user agreement, for you verification, lowercase address is required., and the hardcoded name shihaam in a user-facing message.
  • Server-owned copy: many messages come from actions/* / queries/* or pass through backend message/detail — the i18n layer must cover both, and backend-originated strings can't be translated on the frontend.