74 lines
3.7 KiB
TypeScript
74 lines
3.7 KiB
TypeScript
// 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);
|