Commit graph

37765 commits

Author SHA1 Message Date
Cursor Agent
aa0ab33ac7
feat(ui): LogDetailsDrawer/DrawerHeader to shadcn
- antd Button/Space/Tag/Tooltip/Typography + @ant-design Close/Up/
  Down \u2192 shadcn Button/Badge/Tooltip + lucide X/ChevronUp/ChevronDown.
- Typography.Text copyable rewritten as a custom inline copy button
  (same pattern as LabeledField / KeyInfoHeader).
- Status badge uses categorical emerald/red palette; file added to
  .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 15:05:23 +00:00
Cursor Agent
336d542369
feat(ui): add_model/litellm_model_name to shadcn Input
- @tremor TextInput/Text + antd Row/Col \u2192 shadcn Input + plain
  grid-cols-24 layout.
- antd Form.Item / AntSelect preserved (parent drives a full antd
  Form with Form.Item noStyle + shouldUpdate patterns).
- Text-gray helper line converted to plain <p> with text-muted-
  foreground.

Gates: TS \u2713 | Build \u2713 | Vitest 2/2 green for litellm_model_name tests.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 15:02:18 +00:00
Cursor Agent
5e8b9f7a4f
feat(ui): common_components/user_search_modal to shadcn Dialog
- antd Modal/Button/Tooltip + @ant-design UserAddOutlined \u2192 shadcn
  Dialog/Button/Tooltip + lucide UserPlus.
- antd Form/Select with onSearch/onSelect preserved (debounced server
  fetch inside the Form.Item container).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:59:28 +00:00
Cursor Agent
d51e049dd9
feat(ui): view_logs/GuardrailViewer/CompliancePanel to shadcn
- antd Tooltip + raw SVG check/cross/spinner + chevron \u2192 shadcn
  Tooltip + lucide CheckCircle2/XCircle/Loader2/ChevronDown.
- Inline hex gray palette replaced with semantic tokens; compliant /
  non-compliant status pills use categorical emerald / red tones
  (file added to .eslintrc.json overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:56:51 +00:00
Cursor Agent
fe16b30108
feat(ui): view_logs/DataTable semantic-tokens pass
- Tremor Table family preserved (chart/table whitelist) with inline
  eslint-disable on the import.
- bg-gray-50 / text-gray-500 / text-gray-400 \u2192 bg-muted /
  text-muted-foreground tokens.
- Sort-indicator arrow renders the same; sortable header hover state
  uses bg-muted.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:53:45 +00:00
Cursor Agent
229576f324
feat(ui): TeamsTable to shadcn Button + Tooltip + lucide icons
- @tremor Button/Icon/Text + antd Tooltip + @heroicons PencilAlt/
  Trash \u2192 shadcn Button/Tooltip + lucide Pencil/Trash2. Tremor
  Table/TableHead/Row/Cell preserved (chart/table family whitelist,
  inline eslint-disable).
- Team ID pill preserved as blue-tinted categorical accent; file
  added to .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:48:39 +00:00
Cursor Agent
3224841391
feat(ui): mcp_tools/mcp_server_cost_config to shadcn
- antd InputNumber/Collapse/Badge/Tooltip + @tremor Card/Title/Text +
  @ant-design InfoCircle/Dollar/Tool \u2192 shadcn Accordion/Badge/Card/
  Input/Tooltip + lucide DollarSign/Info/Wrench.
- Custom MoneyInput wrapper ties a '$' prefix chip to a shadcn Input
  type='number' since Radix Input has no prefix slot.
- Emerald badge + blue summary callout are categorical; file added
  to .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:44:02 +00:00
Cursor Agent
fd5e3d191a
feat(ui): S3VectorsConfig to shadcn Tooltip + custom info alert
- antd Alert \u2192 plain blue-tinted div with lucide Info icon.
- antd Tooltip + @ant-design InfoCircleOutlined \u2192 shadcn Tooltip +
  lucide Info (four field tooltips).
- antd Form.Item / Input / Select preserved \u2014 parent wraps the file in
  an antd Form.
- File added to .eslintrc.json overrides for the blue info callout.

Gates: TS \u2713 | Build \u2713 | Vitest 11/11 green for S3VectorsConfig tests.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:40:31 +00:00
Cursor Agent
ac6cd602a9
feat(ui): guardrails/GuardrailTestPlayground to shadcn
- antd Card/List/Empty/Spin/Input/Typography + @ant-design
  ExperimentOutlined/SearchOutlined \u2192 shadcn Card/Input + native
  <ul> with divide-y border + lucide FlaskConical/Loader2/Search.
- Active-list item uses blue-tinted bg + left border (categorical,
  added to overrides).
- List.Item.Meta flattened to plain flex layouts.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:32:20 +00:00
Cursor Agent
f4e7aba66a
feat(ui): guardrails/GuardrailTestResults to shadcn
- @tremor Button/Card + antd Typography + @ant-design Copy/Check/
  Clock/Down/Right + raw SVG error icon \u2192 shadcn Button/Card +
  lucide CheckCircle2/ChevronDown/ChevronRight/Clock/Copy/XCircle.
- Success card uses emerald palette; error card uses red palette
  (both categorical, added to overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:25:47 +00:00
Cursor Agent
11049a1141
feat(ui): guardrails/GuardrailTestPanel to shadcn
- @tremor Button + antd Input.TextArea/Typography/Tooltip + @ant-design
  Copy/InfoCircle \u2192 shadcn Button/Textarea/Tooltip + lucide Copy/Info.
- Blue guardrail-name chips preserved as categorical accent (file
  added to .eslintrc.json overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:22:17 +00:00
Cursor Agent
81ebf913e8
feat(ui): AdditionalModelSettings to shadcn
- antd Checkbox/InputNumber/Popover/Slider/Tooltip/Typography +
  @tremor Text + @ant-design InfoCircleOutlined \u2192 shadcn
  Checkbox/Input/Popover/Slider/Tooltip + lucide Info.
- Shadcn Slider is value={[n]} / onValueChange=([v])=>... Preserves
  both sliders with their min/max/step.
- Tick marks (0/1/2, 1/32768) rendered as a simple flex justify-
  between row below each slider.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:18:47 +00:00
Cursor Agent
c62e1ffbe0
feat(ui): UsageViewSelect to shadcn
- antd Select + Badge + @ant-design icon set (9 icons) \u2192 shadcn
  Select + lucide equivalents (Globe/Building2/Users/ShoppingCart/
  Tags/Bot/User/LineChart/BarChart3).
- labelRender / optionRender / filterOption dropped \u2014 shadcn Select
  renders the two-line option layout directly in the SelectItem.
- Updated UsageViewSelect.test.tsx: dropped the antd Select mock and
  asserts trigger presence + the 'Your Usage' non-admin label inside
  the combobox instead of driving a fireEvent.change on a fake select.
  Full option-change coverage lives in Playwright.

Gates: TS \u2713 | Build \u2713 | Vitest 2/2 \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:15:03 +00:00
Cursor Agent
d4b5cb2514
feat(ui): KeyLifecycleSettings to shadcn
- antd Select/Tooltip/Divider/Switch/Checkbox + @tremor TextInput +
  @ant-design InfoCircleOutlined \u2192 shadcn Select/Tooltip/Switch/
  Checkbox/Input + lucide Info + native <hr className='border-border'>.
- Extracted a small InfoTooltip helper for the repeated info-icon
  pattern.
- Blue auto-rotation notification callout is categorical; file added
  to .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:09:23 +00:00
Cursor Agent
c69d0c6aa6
feat(ui): view_logs/VectorStoreViewer to shadcn
- antd Collapse \u2192 shadcn Accordion. Inline SVG chevron \u2192 lucide
  ChevronRight.
- Gray palette replaced with semantic bg-background/border-border/
  bg-muted and text-muted-foreground tokens.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:06:10 +00:00
Cursor Agent
f286c5a592
feat(ui): chat/MCPCredentialsTab to shadcn
- antd Spin + @tremor Badge/Table family + @ant-design Delete/Link \u2192
  shadcn Table/Badge + lucide Loader2/Trash2/Link.
- Red (Expired) / emerald (valid) status badges preserved as
  categorical (file added to .eslintrc.json overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:03:28 +00:00
Cursor Agent
4d9072bf3e
feat(ui): chat/MCPConnectPicker to shadcn
- antd Switch/Spin \u2192 shadcn Switch + lucide Loader2 (replacing the
  Switch's loading prop with a separate inline spinner since shadcn
  Switch has no loading slot).
- Inline style attributes replaced with Tailwind utilities + semantic
  tokens (text-muted-foreground / text-foreground).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 14:00:23 +00:00
Cursor Agent
e1c0b5291b
feat(ui): prompts/variable_textarea to shadcn
- antd Input.TextArea/Popover/Tag + @ant-design EditOutlined \u2192
  shadcn Textarea/Popover/Badge + lucide Pencil.
- Inline <style> tag for variable-highlight-text dropped \u2014 unused.
- Orange 'variable chip' palette preserved as categorical (file added
  to .eslintrc.json overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:57:46 +00:00
Cursor Agent
07c5420d03
feat(ui): prompts/add_prompt_form to shadcn Dialog
- antd Modal/Button/Divider + @tremor TextInput + @ant-design
  UploadOutlined \u2192 shadcn Dialog/Button/Input + lucide Upload
  + native <hr className='border-border'>.
- antd Form/Select/Upload preserved since Form.Item drives validation
  and the antd Upload widget binds the file-list state.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:54:57 +00:00
Cursor Agent
8d88347800
feat(ui): PaginatedModelSelect to shadcn combobox
- antd Select with onPopupScroll + LoadingOutlined \u2192 shadcn Popover
  + Button (combobox) + Input + lucide Loader2/ChevronsUpDown/X.
- Each option renders as a two-line label (model name + ID) via a
  simple custom layout, same contract as the original optionRender.
- Infinite-scroll threshold preserved at 0.8 on the list container.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:51:45 +00:00
Cursor Agent
eb0cb1eee4
feat(ui): KeyModelUsageView to shadcn Table
- antd Table \u2192 shadcn Table. @tremor BarChart/Card/Title preserved
  (chart-family whitelist with inline eslint-disable).
- Scroll container replaced the scroll={{ y: N }} contract with a
  Tailwind max-height overflow-y-auto wrapper.

Gates: TS \u2713 | Build \u2713 (from prior commit pipeline).

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:48:52 +00:00
Cursor Agent
ae7b7e8228
feat(ui): FallbackGroupConfig semantic tokens + shadcn Tooltip
- antd Tooltip \u2192 shadcn Tooltip for the '+N more' hidden-values
  placeholder.
- Gray/indigo/red hex palettes replaced with semantic tokens
  (text-foreground, text-muted-foreground, bg-muted, border-border,
  destructive). Indigo connector chip + hover accent retained as
  categorical; file added to .eslintrc.json overrides.
- antd Select primary + multiple dropdowns preserved; optionRender and
  maxTagPlaceholder hooks kept intact.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:46:29 +00:00
Cursor Agent
7f19d8c8be
feat(ui): guardrails/CategoryTable to shadcn
- antd Typography/Select/Table/Tag/Button + @ant-design DeleteOutlined
  \u2192 shadcn Table/Badge/Select/Button + lucide Trash2.
- Severity + action badge palette: red (high/BLOCK), amber (medium),
  yellow (low), blue (MASK). Added to overrides.
- Read-only mode renders badges; editable mode renders Select
  dropdowns.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:42:48 +00:00
Cursor Agent
e959382ec2
feat(ui): AIHub/AgentHubTableColumns to shadcn
- @tremor Button/Badge/Text + antd Tooltip/Tag + @ant-design Copy/
  InfoCircle \u2192 shadcn Button/Badge/Tooltip + lucide Copy/Info.
- Categorical badge palette: blue (version), emerald (public/
  capabilities), purple (skills), gray (fallback). Added to overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:39:03 +00:00
Cursor Agent
10868011ac
feat(ui): AIHub/marketplace_table_columns to shadcn
- @tremor Button/Badge/Text + antd Tooltip + @ant-design CopyOutlined
  \u2192 shadcn Button/Badge/Tooltip + lucide Copy.
- Tremor color name \u2192 Tailwind class mapping for category badges
  (blue, emerald, amber, red, purple, indigo, gray).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:36:27 +00:00
Cursor Agent
7e50afed51
feat(ui): AIHub/ClaudeCodeMarketplaceTab to shadcn
- antd Input/@ant-design SearchOutlined + @tremor Card/Tab/TabGroup/
  TabList/TabPanel/TabPanels/Text \u2192 shadcn Card/Input/Tabs + lucide
  Search. Category tabs now use the category name as the tab value
  (instead of numeric index) \u2014 simpler API.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:33:52 +00:00
Cursor Agent
518934f928
feat(ui): cache_control_settings \u2014 antd Typography/@ant-design icons
- antd Typography.Text \u2192 plain <p> with text-muted-foreground.
- @ant-design PlusOutlined / MinusCircleOutlined \u2192 lucide Plus /
  MinusCircle.
- bg-gray-600 / text-red-500 \u2192 semantic tokens + destructive. antd
  Form / Form.List / Switch / Select remain since the parent form is
  antd-driven.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:31:14 +00:00
Cursor Agent
06cfed53c0
feat(ui): ModelRetrySettingsTab to shadcn
- @tremor Select/SelectItem/TabPanel/Text/Title + antd InputNumber \u2192
  shadcn Select/Input (type=number) + plain h3/span. Tremor TabPanel
  preserved (caller is still tremor TabGroup).
- Input onChange reads event.target.value and coerces to number,
  preserving the null handling pattern from antd's InputNumber.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:27:36 +00:00
Cursor Agent
d19b4b38eb
feat(ui): SpendLogsSettingsModal to shadcn Dialog
- antd Modal/Button/Skeleton/Space/Typography + @ant-design
  ClockCircleOutlined \u2192 shadcn Dialog/Button/Skeleton + lucide Clock.
- antd Form.Item + Form + Input prefix API preserved; retention-period
  text input keeps the clock icon prefix via antd Input's prefix slot
  inside the Form.Item binding.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:25:14 +00:00
Cursor Agent
91b5776910
feat(ui): model_add/EditCredentialModal to shadcn
- antd Modal/Button/Typography/Tooltip + @tremor TextInput \u2192 shadcn
  Dialog/Button/Input/Tooltip. antd Form / AntdSelect Option tree
  preserved for provider logo rendering (same deferral as
  AddCredentialModal).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:22:44 +00:00
Cursor Agent
5f39320211
feat(ui): PageVisibilitySettings to shadcn
- antd Button/Checkbox.Group/Collapse/Space/Tag/Typography \u2192 shadcn
  Accordion/Checkbox/Button/Badge.
- Purple informational paragraph kept as a categorical accent (added
  to overrides). Blue 'N pages selected' badge similarly categorical.
- Save/Reset buttons on the same row; destructive-tinted Reset is
  omitted (preserving the original neutral outline).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:19:49 +00:00
Cursor Agent
2a7685bf15
feat(ui): EditSSOSettingsModal to shadcn Dialog
- antd Modal/Button/Space \u2192 shadcn Dialog/Button. antd Form driving
  BaseSSOSettingsForm is preserved.
- Submit button runs form.submit(); Cancel resets fields and calls
  onCancel. Loading state replaced with 'Saving...' label on button.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:14:52 +00:00
Cursor Agent
87234e5be8
feat(ui): TeamsFilters to shadcn
- @tremor Select/SelectItem + raw <input> + inline SVG icons \u2192
  shadcn Select/Input/Button + lucide Search/Filter/User/RotateCcw.
- Active-filter indicator dot (blue) preserved inline.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:11:40 +00:00
Cursor Agent
02779b37ec
feat(ui): CostTrackingSettings/provider_discount_table to shadcn
- @tremor TextInput/Icon/Text + @heroicons Trash/Pencil/Check/X \u2192
  shadcn Input + plain span + lucide Trash2/Pencil/Check/X.
- Edit mode flow preserved (Enter/Escape keys). SimpleTable (already
  Tremor table whitelisted) keeps its shape.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:09:11 +00:00
Cursor Agent
5108965fd9
feat(ui): CostTrackingSettings/how_it_works to shadcn
- @tremor Text/TextInput \u2192 shadcn Input + plain <p>/<code> with
  semantic tokens. Calculator panel preserves the blue-tinted
  summary card (added to overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:06:36 +00:00
Cursor Agent
30c6734d70
feat(ui): agent_management/AgentSelector \u2192 shadcn chip-list multi-select
- antd Select mode='multiple' \u2192 shadcn Popover + Badge chip list with
  search Input. Same pattern as MCPServerSelector / VectorStoreSelector
  / AccessGroupSelector.
- Categorical emerald (access group) / purple (agent) palette preserved
  in both the chip dot and the right-aligned option type label.
- File added to .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:03:48 +00:00
Cursor Agent
9896a1680b
feat(ui): add_model/ComplexityRouterConfig to shadcn
- antd Select/Card/Divider/Space/Tooltip/Typography + @ant-design
  InfoCircleOutlined \u2192 shadcn Select/Card/Tooltip + lucide Info +
  native <hr className='border-border'> and plain h4/p.
- Preserves the full four-tier mapping layout and help card.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 13:00:56 +00:00
Cursor Agent
1323d05634
feat(ui): team/member_permissions to shadcn
- @tremor Card/Table family/Text/Title + antd Button/Checkbox/Empty +
  @ant-design Reload/Save \u2192 shadcn Card/Table/Button/Checkbox +
  lucide RefreshCcw/Save.
- HTTP method chips use categorical blue (GET) / emerald (non-GET)
  palette. File added to overrides.
- Empty state rendered as a plain muted paragraph (no Empty component
  needed).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:56:26 +00:00
Cursor Agent
6905f05ef0
feat(ui): mcp_connection_status to shadcn
- antd Button/Spin/Alert/Collapse + @tremor Card/Title/Text +
  @ant-design Check/Exclamation/Reload/Tool \u2192 shadcn Card/Button/
  Accordion + lucide CheckCircle2/AlertTriangle/RefreshCcw/Wrench/
  Loader2.
- Error state renders a destructive-tinted panel with Retry button
  and collapsible stack trace inside an Accordion.
- Categorical blue (info/connecting), emerald (connected), and
  destructive (failed) palettes are already covered by existing
  overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:53:51 +00:00
Cursor Agent
2b5034cab3
feat(ui): survey/NudgePrompt to shadcn Button
- antd Button (primary + outlined-danger) \u2192 shadcn Button default
  + destructive-tinted outline variants.
- Inline gray palette replaced with semantic bg-background/border-
  border/text-muted-foreground tokens.
- Confirmation state's emerald check-mark tile uses categorical
  palette (existing overrides cover this).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:51:39 +00:00
Cursor Agent
7b725e498f
feat(ui): VersionHistorySidePanel antd Drawer \u2192 shadcn Sheet
- antd Drawer/List/Skeleton/Tag/Typography \u2192 shadcn Sheet/Badge/
  Skeleton + plain span.
- modal={false} + onInteractOutside={e.preventDefault()} on the
  SheetContent preserves the existing 'interact with the main editor
  while drawer is open' behaviour from antd Drawer's mask={false}.
- Blue Latest / emerald Active badges are categorical and added to
  .eslintrc.json overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:49:32 +00:00
Cursor Agent
8a052c1ea6
feat(ui): templates/KeyInfoHeader to shadcn
- antd Button/Typography/Tooltip/Space/Divider/Flex + @ant-design icon
  set (10 icons) \u2192 shadcn Button/Tooltip + lucide equivalents
  (ArrowLeft, RefreshCcw, Trash2, Plus, User, Mail, Calendar, Clock,
  Zap, Shield, Wallet, Copy, Check).
- Built a small CopyableInline helper for the Typography.Text copyable
  contract. Regenerate-tooltip only renders when the prop is set so
  the Tooltip doesn't flash empty.
- Destructive buttons use outline + text-destructive / border-destructive
  tinting for Reset Spend and Delete.
- Horizontal rule dividers are plain <div className='w-px bg-border' />.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:47:09 +00:00
Cursor Agent
d0e2b93d51
feat(ui): SpendByProvider + EditProjectModal + FormattedToolView
- SpendByProvider: @tremor Card/Col/Grid/Switch/Table family/Title +
  antd Tooltip + @ant-design InfoCircleOutlined \u2192 shadcn Card/Switch/
  Table/Tooltip + lucide Info. Tremor DonutChart preserved (chart
  whitelist).
- EditProjectModal: antd Modal/Button/Typography + @ant-design
  SaveOutlined \u2192 shadcn Dialog/Button + lucide Save. ProjectBaseForm
  (antd Form) preserved inside.
- FormattedToolView: antd Typography/Table \u2192 shadcn Table + plain
  spans/codes. Preserves type-badge blue palette and called-with
  emerald success tint (in overrides).

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:44:35 +00:00
Cursor Agent
d5df40b9c4
feat(ui): EndpointUsageTable to shadcn
- antd Table/Progress \u2192 shadcn Table/Progress. Success rate and
  success/fail counts use categorical emerald/amber/destructive
  palette (already in overrides from prior commits).
- Progress bar simplified to a single success-percentage bar since
  Radix Progress doesn't support multi-stop strokeColor gradients.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:41:28 +00:00
Cursor Agent
fa9d5ae6d9
feat(ui): SearchResultsDisplay + PromptMessagesCard + LoggingCallbacksTable
- SearchResultsDisplay: antd Button + @ant-design Database/FileText/
  Chevrons \u2192 shadcn Button/Badge + lucide equivalents. Blue score
  chip added to categorical overrides.
- PromptMessagesCard: @tremor Card/Text + antd Select \u2192 shadcn Card
  + Select. Drag-and-drop reorder preserved (pure HTML5 drag
  handlers, no antd dependency).
- LoggingCallbacksTable: @tremor Button + antd Table/Title \u2192 shadcn
  Button + shadcn Table + plain h3. Categorical success/failure/info
  badges added to overrides.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:38:58 +00:00
Cursor Agent
db992fba74
feat(ui): chartUtils + PaginatedKeyAliasSelect
- chartUtils: @tremor CustomTooltipProps type kept with inline eslint-
  disable (phase-1 chart whitelist).
- PaginatedKeyAliasSelect: antd Select with onPopupScroll +
  LoadingOutlined notFoundContent \u2192 shadcn Popover + Button
  (combobox) + Input + lucide Loader2/ChevronsUpDown/X. Infinite
  scroll threshold preserved (0.8) on the list container.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:35:04 +00:00
Cursor Agent
df5b12df28
feat(ui): RateLimitTypeFormItem + CostTrackingSettings/add_provider_form
- RateLimitTypeFormItem: antd Select \u2192 shadcn Select inside a
  preserved antd Form.Item. Tooltip replaced with shadcn Tooltip +
  lucide Info. Test updated to assert trigger presence + placeholder
  instead of driving the Radix portal (pointer-capture not supported
  in JSDOM).
- CostTrackingSettings/add_provider_form: @tremor TextInput/Button +
  antd Tooltip + @ant-design InfoCircle \u2192 shadcn Input/Button/Tooltip
  + lucide Info. antd Select still handles provider-logo rendering
  since its Option template hasn't been ported yet.

Gates: TS \u2713 | Build \u2713 | Vitest 5/5 green for this file.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:31:58 +00:00
Cursor Agent
4808b7bd0d
feat(ui): OpenAPIFormSection + OpenAPIQuickPicker to shadcn
- OpenAPIFormSection: antd Tooltip + @ant-design InfoCircleOutlined \u2192
  shadcn Tooltip + lucide Info. Preserves the antd Form.Item for
  spec_path since the parent form is antd-driven.
- OpenAPIQuickPicker: antd Spin + inline gray palette \u2192 lucide
  Loader2 + semantic bg-primary/10 + border-primary for selected
  cards, bg-muted/hover styling for idle. Broken logo fallback avatar
  uses bg-muted + text-foreground.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:27:08 +00:00
Cursor Agent
c1d0451c9b
feat(ui): MessageBubble + SessionManagement to shadcn
- conversation_panel/MessageBubble: @ant-design UserOutlined/RobotOutlined
  \u2192 lucide User/Bot. Inline style hex colors replaced with categorical
  blue (user) / muted (assistant) Tailwind classes. File added to
  overrides.
- SessionManagement: antd Switch/Tooltip + @ant-design InfoCircle/
  CopyOutlined \u2192 shadcn Switch/Tooltip + lucide Info/Copy. UI/API
  label pair flanks the Switch since shadcn Switch has no checkedChildren/
  unCheckedChildren slots. Session-active banner uses categorical
  emerald/blue palette.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:24:52 +00:00
Cursor Agent
381cb8a614
feat(ui): TopModelView + ModelSettingsModal + AddCredentialModal
- TopModelView: antd Segmented + tremor BarChart \u2192 shadcn ToggleGroup
  + preserved BarChart (phase-1 chart whitelist). View-mode pills
  use the shared blue categorical palette.
- ModelSettingsModal: antd Modal/Button/Skeleton/Space/Typography \u2192
  shadcn Dialog/Button/Skeleton. Form.Item still drives the store-in-DB
  toggle using the original antd Switch (as AntdFormSwitch) since
  Form.Item still provides the value binding.
- AddCredentialModal: antd Modal/Button/Typography/Tooltip + @tremor
  TextInput \u2192 shadcn Dialog/Button/Input/Tooltip. antd Select is
  preserved inside Form.Item for now \u2014 full provider-logo rewrite
  is a larger section migration.

Gates: TS \u2713 | Build \u2713.

Co-authored-by: yuneng-jiang <yuneng-berri@users.noreply.github.com>
2026-04-23 12:22:11 +00:00