learning_ai_common_plat/packages/ui/package.json
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

231 lines
6.8 KiB
JSON

{
"name": "@bytelyst/ui",
"version": "0.1.6",
"type": "module",
"scripts": {
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"build": "tsc"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./button": {
"types": "./dist/components/Button.d.ts",
"import": "./dist/components/Button.js"
},
"./page-header": {
"types": "./dist/components/PageHeader.d.ts",
"import": "./dist/components/PageHeader.js"
},
"./section": {
"types": "./dist/components/Section.d.ts",
"import": "./dist/components/Section.js"
},
"./toolbar": {
"types": "./dist/components/Toolbar.d.ts",
"import": "./dist/components/Toolbar.js"
},
"./filter-bar": {
"types": "./dist/components/FilterBar.d.ts",
"import": "./dist/components/FilterBar.js"
},
"./form-section": {
"types": "./dist/components/FormSection.d.ts",
"import": "./dist/components/FormSection.js"
},
"./field-grid": {
"types": "./dist/components/FieldGrid.d.ts",
"import": "./dist/components/FieldGrid.js"
},
"./alert-banner": {
"types": "./dist/components/AlertBanner.d.ts",
"import": "./dist/components/AlertBanner.js"
},
"./skeleton": {
"types": "./dist/components/Skeleton.d.ts",
"import": "./dist/components/Skeleton.js"
},
"./entity-card": {
"types": "./dist/components/EntityCard.d.ts",
"import": "./dist/components/EntityCard.js"
},
"./metric-card": {
"types": "./dist/components/MetricCard.d.ts",
"import": "./dist/components/MetricCard.js"
},
"./action-menu": {
"types": "./dist/components/ActionMenu.d.ts",
"import": "./dist/components/ActionMenu.js"
},
"./drawer": {
"types": "./dist/components/Drawer.d.ts",
"import": "./dist/components/Drawer.js"
},
"./app-shell": {
"types": "./dist/components/AppShell.d.ts",
"import": "./dist/components/AppShell.js"
},
"./icon-button": {
"types": "./dist/components/IconButton.d.ts",
"import": "./dist/components/IconButton.js"
},
"./toast": {
"types": "./dist/components/Toast.d.ts",
"import": "./dist/components/Toast.js"
},
"./modal": {
"types": "./dist/components/Modal.d.ts",
"import": "./dist/components/Modal.js"
},
"./confirm-dialog": {
"types": "./dist/components/ConfirmDialog.d.ts",
"import": "./dist/components/ConfirmDialog.js"
},
"./badge": {
"types": "./dist/components/Badge.d.ts",
"import": "./dist/components/Badge.js"
},
"./status-badge": {
"types": "./dist/components/StatusBadge.d.ts",
"import": "./dist/components/StatusBadge.js"
},
"./empty-state": {
"types": "./dist/components/EmptyState.d.ts",
"import": "./dist/components/EmptyState.js"
},
"./input": {
"types": "./dist/components/Input.d.ts",
"import": "./dist/components/Input.js"
},
"./field": {
"types": "./dist/components/Field.d.ts",
"import": "./dist/components/Field.js"
},
"./textarea": {
"types": "./dist/components/Textarea.d.ts",
"import": "./dist/components/Textarea.js"
},
"./card": {
"types": "./dist/components/Card.d.ts",
"import": "./dist/components/Card.js"
},
"./panel": {
"types": "./dist/components/Panel.d.ts",
"import": "./dist/components/Panel.js"
},
"./surface": {
"types": "./dist/components/Surface.d.ts",
"import": "./dist/components/Surface.js"
},
"./list-item-button": {
"types": "./dist/components/ListItemButton.d.ts",
"import": "./dist/components/ListItemButton.js"
},
"./timeline": {
"types": "./dist/components/Timeline.d.ts",
"import": "./dist/components/Timeline.js"
},
"./diff-card": {
"types": "./dist/components/DiffCard.d.ts",
"import": "./dist/components/DiffCard.js"
},
"./label": {
"types": "./dist/components/Label.d.ts",
"import": "./dist/components/Label.js"
},
"./select": {
"types": "./dist/components/Select.d.ts",
"import": "./dist/components/Select.js"
},
"./tabs": {
"types": "./dist/components/Tabs.d.ts",
"import": "./dist/components/Tabs.js"
},
"./segmented-control": {
"types": "./dist/components/SegmentedControl.d.ts",
"import": "./dist/components/SegmentedControl.js"
},
"./tooltip": {
"types": "./dist/components/Tooltip.d.ts",
"import": "./dist/components/Tooltip.js"
},
"./dropdown-menu": {
"types": "./dist/components/DropdownMenu.d.ts",
"import": "./dist/components/DropdownMenu.js"
},
"./checkbox": {
"types": "./dist/components/Checkbox.d.ts",
"import": "./dist/components/Checkbox.js"
},
"./radio-group": {
"types": "./dist/components/RadioGroup.d.ts",
"import": "./dist/components/RadioGroup.js"
},
"./switch": {
"types": "./dist/components/Switch.d.ts",
"import": "./dist/components/Switch.js"
},
"./data-list": {
"types": "./dist/components/DataList.d.ts",
"import": "./dist/components/DataList.js"
},
"./data-table": {
"types": "./dist/components/DataTable.d.ts",
"import": "./dist/components/DataTable.js"
},
"./separator": {
"types": "./dist/components/Separator.d.ts",
"import": "./dist/components/Separator.js"
},
"./sidebar": {
"types": "./dist/components/Sidebar.d.ts",
"import": "./dist/components/Sidebar.js"
},
"./stat-card": {
"types": "./dist/components/StatCard.d.ts",
"import": "./dist/components/StatCard.js"
},
"./loading-spinner": {
"types": "./dist/components/LoadingSpinner.d.ts",
"import": "./dist/components/LoadingSpinner.js"
}
},
"peerDependencies": {
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0"
},
"dependencies": {
"@radix-ui/react-alert-dialog": "^1.1.0",
"@radix-ui/react-checkbox": "^1.3.0",
"@radix-ui/react-dialog": "^1.1.0",
"@radix-ui/react-dropdown-menu": "^2.1.0",
"@radix-ui/react-radio-group": "^1.3.0",
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-switch": "^1.2.0",
"@radix-ui/react-tabs": "^1.1.0",
"@radix-ui/react-tooltip": "^1.2.0",
"clsx": "^2.1.0",
"lucide-react": "^0.460.0"
},
"devDependencies": {
"@storybook/addon-a11y": "^8.5.0",
"@storybook/addon-essentials": "^8.5.0",
"@storybook/react": "^8.5.0",
"@storybook/react-vite": "^8.5.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"storybook": "^8.5.0",
"typescript": "^5.7.0",
"vite": "^6.0.0"
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"files": [
"dist",
"README.md"
]
}