learning_ai_common_plat/packages/ui/src/components
Devin 953730ff51
Some checks failed
CI — Common Platform / Build, Test & Typecheck (push) Has been cancelled
CI — Common Platform / Publish @bytelyst/* to Gitea npm registry (push) Has been cancelled
feat(ui): add <CardButton> primitive (UI audit Pattern A fix)
The Button primitive applies `whitespace-nowrap` + a fixed `h-{size}`
because it's tuned for single-line CTAs. Consumers using Button as a
card-shaped picker — title above description, icon next to multi-line
label — hit collapsed/clipped content because of those constraints.

CardButton is the right primitive for that use case:

  - block layout, full-width, left-aligned by default
  - whitespace: normal so multi-line content wraps
  - height: auto so any number of stacked rows works
  - focus-visible ring tied to --bl-focus-ring/--bl-accent (matches Button)
  - disabled opacity + pointer-events
  - selected? prop with subtle inset accent ring (override-able)
  - asChild support via Radix Slot for <Link>/<a> handoff

Bumps @bytelyst/ui to 0.1.6 and re-exports CardButton + CardButtonProps
from the package entry point.

Initial consumers: 5 sites in learning_ai_invt_trdg (StrategyWizard
risk + hours pickers, SimpleView buy + sell plan cards, MyStrategiesTab
diagnostic toggle). See docs/ui/UI_AUDIT.md Pattern A in that repo.

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 09:31:29 +00:00
..
ActionMenu.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
AlertBanner.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
AppShell.tsx fix(ui): make app shell server compatible 2026-05-06 18:09:54 -07:00
Badge.stories.tsx test(ui): add primitive story coverage 2026-05-06 11:30:51 -07:00
Badge.tsx feat(ui): add product-safe primitive variants 2026-05-06 11:20:33 -07:00
Button.stories.tsx test(ui): add primitive story coverage 2026-05-06 11:30:51 -07:00
Button.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
Card.stories.tsx test(ui): add primitive story coverage 2026-05-06 11:30:51 -07:00
Card.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
CardButton.tsx feat(ui): add <CardButton> primitive (UI audit Pattern A fix) 2026-05-10 09:31:29 +00:00
Checkbox.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
ConfirmDialog.tsx fix(ui): use tokenized status colors 2026-05-06 11:15:29 -07:00
Controls.stories.tsx test(ui): add primitive story coverage 2026-05-06 11:30:51 -07:00
DataList.tsx feat(ui): add data display primitives 2026-05-06 11:27:51 -07:00
DataTable.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
DiffCard.tsx feat(ui): add operational core primitives 2026-05-06 11:10:08 -07:00
Drawer.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
DropdownMenu.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
EmptyState.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
EntityCard.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
Field.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
FieldGrid.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
FilterBar.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
FormSection.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
IconButton.tsx feat(ui): add operational core primitives 2026-05-06 11:10:08 -07:00
Input.stories.tsx feat(ui): add Storybook for @bytelyst/ui component library 2026-03-28 00:59:25 -07:00
Input.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
Label.tsx feat(ui): add Input, Textarea, Card, Label, Select, Separator components to @bytelyst/ui 2026-03-28 00:33:38 -07:00
ListItemButton.tsx feat(ui): add operational core primitives 2026-05-06 11:10:08 -07:00
LoadingSpinner.tsx feat(ui): add Sidebar, StatCard, LoadingSpinner components + README docs — Level 3 component coverage 2026-03-29 00:19:45 -07:00
MetricCard.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
Modal.tsx feat(ui): create @bytelyst/ui with Button, Toast, Modal, ConfirmDialog, Badge, EmptyState 2026-03-27 16:29:37 -07:00
OperationalPreview.stories.tsx docs(ui): add launch state matrix story 2026-05-09 02:16:57 -07:00
OperationalPrimitives.stories.tsx test(ui): add primitive story coverage 2026-05-06 11:30:51 -07:00
PageHeader.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
Panel.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
RadioGroup.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
Section.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
SegmentedControl.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
Select.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
Separator.tsx feat(ui): add Input, Textarea, Card, Label, Select, Separator components to @bytelyst/ui 2026-03-28 00:33:38 -07:00
Sidebar.tsx feat(ui): add Sidebar, StatCard, LoadingSpinner components + README docs — Level 3 component coverage 2026-03-29 00:19:45 -07:00
Skeleton.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
StatCard.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
StatusBadge.tsx feat(ui): add operational core primitives 2026-05-06 11:10:08 -07:00
Surface.tsx feat(ui): add surface layout primitives 2026-05-06 11:21:50 -07:00
Switch.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
Tabs.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00
Textarea.tsx Improve shared UI primitives 2026-05-08 20:56:05 -07:00
Timeline.tsx feat(ui): add operational core primitives 2026-05-06 11:10:08 -07:00
Toast.tsx fix(ui): use tokenized status colors 2026-05-06 11:15:29 -07:00
Toolbar.tsx feat(ui): add operational workflow primitives 2026-05-08 21:16:48 -07:00
Tooltip.tsx feat(ui): add accessible control primitives 2026-05-06 11:25:26 -07:00