learning_ai_invt_trdg/web/src
root 343ffb48af fix(web): AI Trading Copilot modal — quick action cards layout
The Quick Actions in the AI Trading Copilot floating modal were broken:
- Always 2 columns regardless of viewport (cards overflowed at narrow widths).
- Used <Button> from primitives which is inline-flex internally; the two
  inline-block <span> children for title and prompt overlapped.
- Prompt was truncated client-side with .slice(0, 55)+'...' instead of
  proper CSS line-clamp, causing inconsistent display.
- No min-width: 0 on grid/card/text so content could push the card past
  the modal width (460px).

Refactored:
- Replaced <Button> with native <button> (cleaner default styling base).
- New CSS classes copilot-quick-action-card, -title, -prompt with explicit
  flex-direction: column so title and description stack reliably.
- Responsive grid: single column below 480px, 2 columns above. The modal
  is 460px wide on desktop and shrinks to viewport-32 on smaller screens,
  so this prevents card overflow on narrow phones.
- Title: single-line truncate with ellipsis, full text exposed via title
  attribute on the button (tooltip + a11y).
- Prompt: -webkit-line-clamp: 2 (no JS slice). Wraps cleanly on long
  prompts. word-break + overflow-wrap as guards.
- Card: min-height 64px so they align in a row without text-length
  jumping. Hover, active, and focus-visible states for keyboard a11y.
- Body container gets bottom padding so the last card is reachable above
  the composer input.

Container changes:
- .copilot-body class added to messages scroll container; bottom padding
  ensures composer doesn't crowd content.
- The modal shell (existing) already uses display:flex; flex-direction:
  column; overflow:hidden so header stays top, body scrolls, composer
  stays bottom — preserved unchanged.

No breaking changes to chat behavior, sendMessage flow, or quick action
prompts.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 08:15:46 +00:00
..
assets feat: scaffold trading monorepo foundation 2026-04-04 11:18:21 -07:00
backtest refactor(ui): normalize backtest replay controls 2026-05-09 01:46:14 -07:00
components fix(web): AI Trading Copilot modal — quick action cards layout 2026-05-10 08:15:46 +00:00
context feat: full web dashboard redesign + 6 new API proxy endpoints 2026-05-03 23:50:01 -07:00
hooks feat(simple): add setup activity history 2026-05-06 17:23:45 +00:00
lib refactor(ui): close residual theme audit debt 2026-05-07 06:21:32 +00:00
stories fix(docker): use shared docker-prep.sh, add UI components, remove pnpmfile 2026-05-10 01:50:55 +00:00
tabs feat(devops): admin-only info, public version, dep checks, role hardening 2026-05-10 05:52:48 +00:00
test feat: scaffold trading monorepo foundation 2026-04-04 11:18:21 -07:00
views feat(devops): admin-only info, public version, dep checks, role hardening 2026-05-10 05:52:48 +00:00
App.css refactor(ui): modernize market opportunity cards 2026-05-09 00:59:27 -07:00
App.dom.test.tsx feat: live data wiring (Alpaca/FMP) + strategy builder + screener 2026-05-04 06:16:46 -07:00
App.tsx fix(web): alert banner overflow + sidebar logo clipping 2026-05-10 08:06:37 +00:00
index.css feat: migrate web to Gitea registry, add /api/devops/info, fix role drift 2026-05-10 04:57:09 +00:00
layout-fixes.css fix(web): AI Trading Copilot modal — quick action cards layout 2026-05-10 08:15:46 +00:00
main.tsx fix(web): global layout fixes for overlap, clipping, responsive reflow 2026-05-10 07:14:50 +00:00
reducedMotionCss.test.ts fix(D9): respect reduced motion preference 2026-05-04 17:59:07 -07:00
shellResponsiveCss.test.ts test(ui): lock responsive shell breakpoints 2026-05-09 02:06:52 -07:00