// Curated user-facing strings (P6 plain English; ADR-0007 Primary-Rule compliant). // The Primary-Rule lint test (src/__tests__/primary-rule-lint.test.ts) scans these and the // panel/page/client source for imperative trade verbs (a stoplist of directives). Approved // noun phrases such as the buy-zone estimate are allowed. export const UI_STRINGS = { appTitle: "Investor Flow", appSubtitle: "Educational investment research terminal", symbolPlaceholder: "Enter a symbol (e.g. NVDA)", loadingSnapshot: "Loading cached snapshot…", noData: "No cached data yet — the backend is fetching this in the background.", priceLabel: "Last price", dayChangeLabel: "Day change", sectorLabel: "Sector", industryLabel: "Industry", tickerKindLabel: "Type", sparklineCaption: "Recent daily close — context for where price has been, not a signal to act on.", cryptoNotice: "Crypto — limited research module (SEC-derived ownership and filings do not apply).", staleBadge: "cached — refreshing", primaryRuleFooter: "Educational analysis, not investment advice. Verify the underlying data; you are responsible for your own decisions.", authEmailLabel: "Email", authPasswordLabel: "Password", signupButton: "Create account", loginButton: "Sign in", logoutButton: "Sign out", signupPrompt: "Create an account to track symbols and keep your research in one place.", enable2faButton: "Enable two-factor", twoFactorSecretLabel: "Two-factor secret (base32)", twoFactorQrLabel: "Scan this in an authenticator app, or enter the secret manually.", backupCodesLabel: "Backup codes — store these somewhere safe.", confirm2faButton: "Confirm with a code", twoFactorCodePlaceholder: "6-digit code", twoFactorEnabled: "Two-factor is now enabled. Login will ask for a code.", oauthGithub: "Continue with GitHub", oauthGoogle: "Continue with Google", onboardingTitle: "Welcome — set up your research defaults.", complexityLabel: "Experience level", complexityBeginner: "Beginner", complexityIntermediate: "Intermediate", complexityAdvanced: "Advanced", starterWatchlistLabel: "Your starter watchlist", drawdownNote: "A default max-drawdown tolerance is set from your experience level (you can change it later).", completeOnboardingButton: "Finish setup", onboardingDone: "Setup complete — your starter watchlist is tracking.", onboardingDone: "Setup complete — your starter watchlist is tracking.", // Chart Lab (Slice 5c) chartLabTitle: "Chart Lab — price, volume, and indicator overlays", priceChartCaption: "Daily price range (bar) with closing-price line — visual context, not a signal.", volumeLabel: "Volume", volumeCaption: "Number of shares traded per day — relative size, not a directional cue.", rsiLabel: "Relative Strength Index (RSI)", rsiCaption: "Momentum oscillator comparing gain and loss magnitude over a rolling window.", rsiTooltip: "RSI reads the speed and change of price movements; values near extremes can mark overextended stretches, but do not imply a direction.", emaTooltip: "Average price over the last N days — a smoothing filter that tracks the prevailing trend direction.", ema9Label: "EMA 9", ema21Label: "EMA 21", ema50Label: "EMA 50", ema200Label: "EMA 200", relvolLabel: "Relative Volume", relvolCaption: "Today's volume compared to the rolling average — above typical or below typical.", relvolTooltip: "Relative volume shows whether trading activity is above or below the recent average; it does not predict direction.", noCandleData: "No candle data available for this symbol/timeframe.", } as const; export const UI_STRING_LIST: string[] = Object.values(UI_STRINGS);