OmniMint UI System
Reusable tokens, product language, component patterns, and review checks for OmniMint UI work.
Visual Principles
- One clear decision per screen, with secondary actions visually quieter than the primary path.
- Trust before excitement: show evidence, risk, source quality, and safety boundaries near money-adjacent claims.
- Useful without overload: prefer a few strong cards and clear navigation over dense dashboards.
- Every responsive breakpoint should feel intentionally designed, not merely squeezed.
- Broker, payment, and trading authority must remain visually and structurally separate from research discovery.
Copy Voice Rules
- Use calm, direct language; avoid hype words like guaranteed, risk-free, can't lose, or sure thing.
- Say research, review, preview, connect read-only, paper review, and live permission instead of vague action labels.
- Never imply a strategy is suitable for a specific person; describe fit as preference-based research guidance.
- Warnings should explain both the risk and the boundary, not just say be careful.
- Empty states should tell users what can be done next without making them feel at fault.
Color Tokens
Typography Tokens
Spacing Tokens
Component Patterns
Consistent page width, background atmosphere, navigation, and content spacing.
One strong page promise, one primary action row, and a trust cue.
Reusable surfaces for strategy cards, metric cards, forms, and detail sections.
Primary, secondary, muted, and disabled actions with consistent touch targets.
Money-adjacent safety notices with a consistent visual treatment.
Reusable polite announcements for route changes, saved states, and recoverable errors.
Calm loading placeholders that do not imply market urgency or force motion.
Responsive Breakpoints
Show full context, two-column comparison layouts, and the richest chart/table treatment.
Collapse dense grids to two columns and keep the primary action visible without horizontal scroll.
Use one-column cards, bottom navigation for primary app areas, and 44px minimum touch targets.
Tablet Layout Contracts
Hero content stacks before preview cards; account CTAs remain above the fold and readable at 834px.
/welcomeFilter drawer drops above results, summary cards use two columns, and comparison tray stays readable without horizontal scroll.
/strategies/searchCategory sections stay scannable, refinement controls wrap cleanly, and article/event cards keep one primary link.
/news-eventsCreator bio, action states, strategy shelf, and trust notes stack in a clear reading order.
/creators/{creator_id}Portfolio preview, broker state, and research-only guardrails keep metric cards legible without exposing broker actions.
/portfolioAccessibility App Shell Checklist
- Every app-shell page includes a skip link target at main content.
- Primary, overflow, and mobile navigation have explicit accessible labels.
- Current routes expose aria-current on desktop and mobile navigation links.
- Interactive controls meet a 44px minimum touch target on mobile.
- Keyboard focus is visible and does not disappear behind sticky or fixed navigation.
- Polite status regions announce route context, saved states, and recoverable errors.
- Reduced-motion users receive instant state changes without animated loaders.
- Status messages explain the result and what did not change.
- Screens do not rely on color alone to communicate risk, gain/loss, disabled state, or urgency.
Empty Loading Error Success States
Say what is missing, why it matters, and offer one safe next action.
Markup: Use a heading, one explanatory sentence, and one safe next-action link or disabled action. Safe Copy: No records yet. Start with research setup; no broker or order action occurred. Recovery: Link to the nearest research-only creation, browse, or reset path.Use role=status, short copy, and static skeleton placeholders that do not imply market urgency.
Markup: Use role=status with aria-live=polite and a non-urgent loading label. Safe Copy: Loading research context. Trading, broker, and payment state are unchanged. Recovery: Show existing cached/previous content when available instead of blanking the page.Use aria-live=polite, name the failure, keep broker/trading state unchanged, and provide a retry or safer path.
Markup: Use aria-live=polite, a precise failure message, and a retry/back-to-safe-page action. Safe Copy: We could not load this research view. No broker connection, order, or subscription changed. Recovery: Offer retry, clear filters, or return to a stable app-shell route.Confirm the saved UI/app change and state that no broker/order action occurred when relevant.
Markup: Use a status region or inline confirmation near the action that changed state. Safe Copy: Saved to your research workspace. This did not deploy or trade. Recovery: Offer undo, view detail, or continue browsing depending on the workflow.State Audit Surfaces
Clear filters action plus calm explanation.
Empty | /strategies/search?q=no-match-examplePreview copy says it does not subscribe, alert, connect brokers, or route orders.
Success/preview | /strategies/search?market=etfsReusable role=status and skeleton pattern available for future async screens.
Loading | /ui-systemRedirect or unauthorized copy routes to login without changing account or broker state.
Error/recoverable | /homeDemo Fixture Contracts
Seed data should cover multiple market shelves, creators, risk bands, and blocked evidence states.
demo_semiconductor_rsi_scout, demo_macro_event_balancer, demo_commodity_macro_rotationHeadlines and calendar events should span financial markets, politics/policy, U.S. economy, and other context.
demo_news_semis_export, demo_news_energy_policy, demo_event_fomc_decisionDemo users should show signed-out, empty, partial, and personalized dashboard states without sensitive data.
demo_customer_new, demo_customer_partial, demo_customer_onboardedAlert fixtures are in-app only and must not enable provider delivery, broker permissions, or trading actions.
NVDA, macro category, SOXL strategy, first watchlistAccount-state examples are masked, mock-only, and usable for disconnected/stale/healthy preview copy.
healthy_read_only, requires_reauthorization, revoked_disconnectedResponsive Screenshot Matrix
Home, marketplace categories, strategy detail, portfolio, onboarding, and error/empty states.
/welcome, /home, /portfolio, /strategies/search, /public/strategies/{id}Dashboard, strategy search filters, news/events, creator profile, and comparison-heavy pages.
/strategies/search, /news-events, /creators/{id}, /marketplace/categoriesAll primary app-shell routes plus any page touched by the ticket.
/, /discover, /strategies/search, /creators, /news-events, /ui-systemVisual Regression Route Checks
Landing promise, create-account CTA, and public preview card are visible without crowding.
/welcomeSearch command center, filter drawer, and results stack in the expected tablet order.
/strategies/search?market=etfsNews categories, event filters, and related-strategy context remain sectioned and calm.
/news-events?symbol=NVDACreator action states, verification notes, and strategy shelf are visible with no broker/payment controls.
/creators/omnimint-labDesign contracts, state patterns, QA matrix, and safety guardrail render as the canonical review page.
/ui-systemCross Browser Smoke Tests
Sticky navigation, backdrop blur fallback, forms, and iOS-style touch targets.
Routes: /welcome, /strategies/search, /portfolio Pass: No horizontal scroll, bottom-nav safe area honored, and form controls remain tappable.Desktop layout density, keyboard navigation, and responsive screenshot baselines.
Routes: /discover, /strategies/search, /ui-system Pass: Skip link, active nav state, filters, and screenshot matrix render without console errors.Details/summary overflow menu behavior, focus rings, and form control rendering.
Routes: /creators, /news-events, /marketplace/categories Pass: More menu opens by keyboard, visible focus remains high contrast, and selects preserve labels.Customer Journey QA Script
- Public browsing: A signed-out user can read the landing page, open news/events, browse strategies, and find login/register. /welcome -> /news-events -> /strategies/search -> /register User can browse useful content before authentication and sees gentle account prompts.
- Account start: A user can reach account creation, understand that broker connection is not required, and resume onboarding. /register -> /onboarding/workspace No broker credential, payment, or trading field appears in account creation or onboarding.
- Personalized home: An onboarded user sees portfolio preview, news preferences, strategy suggestions, and creator follow paths. /home -> /dashboard/preferences -> /portfolio Dashboard modules match preferences and portfolio stays research-only.
- Discovery loop: A user can move between dashboard, search, strategy detail, creator profile, watchlist, and recommendations. /discover -> /strategies/search -> /strategies/{id} -> /creators/{id} Every page has a clear next step and a path back to the app shell.
- Safety boundary: Money-adjacent screens continue to show research-only, broker-permission, and no-order-routing guardrails. /broker-connections -> /broker-connections/consent -> /public/strategies/{id} Risk copy explains what did not happen: no connection, no credential collection, no orders.
QA Execution Order
- #189 Tablet breakpoint layouts: Core tablet contracts are documented, rendered, and covered by tests.
- #184 Visual regression screenshot matrix: Route and viewport assertions are present for mobile, tablet, and desktop.
- #183 Cross-browser responsive smoke checklist: Safari, Chrome, and Firefox checks include routes and pass signals.
- #181 End-to-end customer journey QA script: Public, account, personalized, discovery, and safety journeys include pass signals.
- #114 Standard empty/loading/error/success states: State contracts define markup, safe copy, and recovery action requirements.
Batch 2 Ticket Coverage
- #131 Global app shell and navigation framework.
- #113 Responsive mobile navigation and layout pass.
- #190 Mobile bottom navigation and touch target pass.
- #189 Tablet breakpoint layout expectations.
- #188 Keyboard navigation pass for core workflows.
- #187 Screen reader landmarks, labels, and announcements.
- #186 Color contrast and readable state guidance.
- #185 Reduced motion and calm loading states.
- #184 Visual regression screenshot matrix.
- #183 Cross-browser responsive smoke checklist.
- #181 End-to-end customer journey QA script.
- #114 Standard empty, loading, error, and success states.
Batch 3 Ticket Coverage
- #182 Realistic, clearly fake demo seed data for customer review surfaces.
Batch 4 Ticket Coverage
- #180 Broker connection education screen before any permission request.
- #179 Broker permission review matrix and elevated confirmation copy.
- #177 Research, paper, and live trading mode selector states.
- #178 Paper/live deployment readiness checklist with blocked states.
- #176 Reusable risk confirmation modal patterns for sensitive actions.
Batch 5 Ticket Coverage
- #175 Notification center visual shell for market, creator, billing, and broker-health previews.
- #173 Community feed composer, reaction states, creator suggestions, and moderation boundaries.
- #172 Account billing, subscription, notification, privacy, and support settings shell.
- #171 Help center and safe support entry points that tell users what never to share.
- #161 Subscription pricing and locked-content preview states for premium research.
Batch 6 Ticket Coverage
- #147 Polished login/register split-screen account start with clear public preview paths.
- #146 Account creation success and verification-state screen without provider email or identity checks.
- #145 Onboarding progress tracker and stepper across account, questionnaire, watchlist, subscription, connection, and paper-review steps.
- #144 Onboarding review summary before completion with blockers, optional states, and safety boundaries.
- #143 First-run welcome and next-action page that orients users into setup, browsing, and watchlists.
Batch 7 Ticket Coverage
- #149 Public trust center and landing trust cues before account creation.
- #148 Public education links for pricing, help, creator verification, and broker safety.
- #141 Friendly recovery pages for signed-out, expired-session, forbidden, and missing-route states.
- #151 Search no-results recovery with clear filters, market shelves, creator paths, and calm copy.
- #142 Account preference settings review surface with save, cancel, reset, and validation-state contracts.
Design Review Checklist
- Does the page have one obvious primary action and a clear way back to the main app shell?
- Are desktop, tablet, and mobile layouts usable without hidden primary actions?
- Can keyboard users see focus and complete the core flow?
- Do form fields have labels, helper text, success/error states, and safe validation copy?
- Are empty, loading, error, and success states useful and calm?
- Are risk, broker, payment, and trading boundaries explicit before money-adjacent actions?
- Are colors readable and not the only signal for gain/loss, warning, disabled, or risk states?
- Is screenshot evidence attached for at least one desktop and one mobile viewport?
Reusable QA Checklist Links
Copy-ready checklist for GitLab issues, merge requests, and customer-facing UI reviews.
docs/ui_accessibility_usability_checklist.mdCanonical visual direction, state patterns, responsive contracts, and design language.
docs/omnimint_ui_system.md