Skip to content

feat(web/default): unified UI overhaul — Base UI migration, theme presets, rankings dashboard, and table toolbar refactor#4633

Merged
Calcium-Ion merged 10 commits intomainfrom
feat-new-ui-components-clean
May 6, 2026
Merged

feat(web/default): unified UI overhaul — Base UI migration, theme presets, rankings dashboard, and table toolbar refactor#4633
Calcium-Ion merged 10 commits intomainfrom
feat-new-ui-components-clean

Conversation

@Calcium-Ion
Copy link
Copy Markdown
Member

⚠️ 提交说明 / PR Notice

Important

本 PR 是 #4622 的清理重建版本。原分支因 v2/localmain 平行历史导致 5000+ 无关提交被带入,实际代码差异相同。此分支从 main 新建,通过 squash 方式仅保留实际改动。

📝 变更描述 / Description

对 default 前端进行整体 UI 升级,核心改动:

  1. 组件库迁移:Radix UI → Base UI:将全部 20+ 个 @radix-ui/react-* 依赖替换为 @base-ui/react,同步升级 57 个 ui/ 基础组件(accordion、dialog、select、tabs、tooltip 等)以适配 Base UI 的 API 和组合模式。新增 chart、field、toggle-group、slider、spinner 等组件。图标库从 @radix-ui/react-icons 迁移到 @hugeicons

  2. 主题预设系统:新增 theme-customization-providertheme-presets.css,支持 shadcn 风格的主题预设切换(多套配色方案)和圆角半径偏好设置。对齐 shadcn Base Nova 设计规范,清理遗留自定义样式。

  3. DataTablePage 统一表格工具栏:抽取通用 DataTablePage 组件统一所有数据表页面(channels、keys、models、users、redemptions、subscriptions、usage-logs)的搜索/筛选/批量操作工具栏,消除各页面的重复实现。Usage logs 的筛选栏和统计区域重新布局。

  4. Rankings 排行榜:新增 /rankings 路由和完整排行榜功能模块,包含模型排行、市场份额、应用排名等视图,使用 recharts 图表库。

  5. Pricing 模型详情增强:为定价页面的模型详情添加 uptime sparkline、API 文档链接、能力标签、性能指标等多个子视图。

  6. Bug 修复:修复 theme preset 选中状态、setup 页面 usage mode radio 状态、sign-in/sign-up 表单提交等问题。

  7. i18n:更新所有 6 个语言文件(en/zh/fr/ja/ru/vi),新增 ~300 条翻译键。

  8. 依赖变更:新增 rechartsdate-fnsnext-themesreact-resizable-panels;移除全部 @radix-ui/react-* 包。

🚀 变更类型 / Type of change

  • ✨ 新功能 (New feature)
  • ⚡ 性能优化 / 重构 (Refactor)

🔗 关联任务 / Related Issue

✅ 提交前检查项 / Checklist

  • 人工确认: 我已亲自整理并撰写此描述,没有直接粘贴未经处理的 AI 输出。
  • 非重复提交: 我已搜索现有的 Issues 与 PRs,确认不是重复提交(替代 🎨 chore(web/default): unify table toolbar, relocate usage stats, refine filters #4622)。
  • 变更理解: 我已理解这些更改的工作原理及可能影响。
  • 范围聚焦: 本 PR 仅包含 default 前端 UI 升级相关改动,后端代码无变更。
  • 本地验证: 已在本地运行并通过测试或手动验证,维护者可以据此复核结果。
  • 安全合规: 代码中无敏感凭据,且符合项目代码规范。

📸 运行证明 / Proof of Work

待补充本地运行截图

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 6, 2026

Important

Review skipped

Too many files!

This PR contains 299 files, which is 149 over the limit of 150.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 08a916cd-b219-4ff3-ae15-bd2df6b99d91

📥 Commits

Reviewing files that changed from the base of the PR and between dac55f0 and cfdf219.

⛔ Files ignored due to path filters (1)
  • web/default/bun.lock is excluded by !**/*.lock
📒 Files selected for processing (299)
  • .agents/skills/classic-to-default-sync/SKILL.md
  • .agents/skills/shadcn-ui/SKILL.md
  • .agents/skills/shadcn-ui/vendor/shadcn/SKILL.md
  • .agents/skills/shadcn-ui/vendor/shadcn/UPSTREAM.txt
  • .agents/skills/shadcn-ui/vendor/shadcn/cli.md
  • .agents/skills/shadcn-ui/vendor/shadcn/customization.md
  • .agents/skills/shadcn-ui/vendor/shadcn/mcp.md
  • .agents/skills/shadcn-ui/vendor/shadcn/rules/base-vs-radix.md
  • .agents/skills/shadcn-ui/vendor/shadcn/rules/composition.md
  • .agents/skills/shadcn-ui/vendor/shadcn/rules/forms.md
  • .agents/skills/shadcn-ui/vendor/shadcn/rules/icons.md
  • .agents/skills/shadcn-ui/vendor/shadcn/rules/styling.md
  • .github/FUNDING.yml
  • AGENTS.md
  • CLAUDE.md
  • web/default/AGENTS.md
  • web/default/components.json
  • web/default/package.json
  • web/default/rsbuild.config.ts
  • web/default/src/assets/custom/icon-theme-system.tsx
  • web/default/src/components/ai-elements/actions.tsx
  • web/default/src/components/ai-elements/artifact.tsx
  • web/default/src/components/ai-elements/chain-of-thought.tsx
  • web/default/src/components/ai-elements/context.tsx
  • web/default/src/components/ai-elements/inline-citation.tsx
  • web/default/src/components/ai-elements/open-in-chat.tsx
  • web/default/src/components/ai-elements/plan.tsx
  • web/default/src/components/ai-elements/prompt-input.tsx
  • web/default/src/components/ai-elements/queue.tsx
  • web/default/src/components/ai-elements/reasoning.tsx
  • web/default/src/components/ai-elements/sources.tsx
  • web/default/src/components/ai-elements/task.tsx
  • web/default/src/components/ai-elements/tool.tsx
  • web/default/src/components/ai-elements/web-preview.tsx
  • web/default/src/components/command-menu.tsx
  • web/default/src/components/config-drawer.tsx
  • web/default/src/components/confirm-dialog.tsx
  • web/default/src/components/copy-button.tsx
  • web/default/src/components/data-table/bulk-actions.tsx
  • web/default/src/components/data-table/column-header.tsx
  • web/default/src/components/data-table/data-table-page.tsx
  • web/default/src/components/data-table/faceted-filter.tsx
  • web/default/src/components/data-table/index.ts
  • web/default/src/components/data-table/mobile-card-list.tsx
  • web/default/src/components/data-table/pagination.tsx
  • web/default/src/components/data-table/toolbar.tsx
  • web/default/src/components/data-table/view-options.tsx
  • web/default/src/components/date-picker.tsx
  • web/default/src/components/datetime-picker.tsx
  • web/default/src/components/language-switcher.tsx
  • web/default/src/components/layout/components/app-header.tsx
  • web/default/src/components/layout/components/app-sidebar.tsx
  • web/default/src/components/layout/components/authenticated-layout.tsx
  • web/default/src/components/layout/components/chat-presets-item.tsx
  • web/default/src/components/layout/components/footer.tsx
  • web/default/src/components/layout/components/header.tsx
  • web/default/src/components/layout/components/mobile-drawer.tsx
  • web/default/src/components/layout/components/nav-group.tsx
  • web/default/src/components/layout/components/public-header.tsx
  • web/default/src/components/layout/components/public-layout.tsx
  • web/default/src/components/layout/components/section-page-layout.tsx
  • web/default/src/components/layout/components/top-nav.tsx
  • web/default/src/components/layout/components/workspace-switcher.tsx
  • web/default/src/components/learn-more.tsx
  • web/default/src/components/long-text.tsx
  • web/default/src/components/masked-value-display.tsx
  • web/default/src/components/model-group-selector.tsx
  • web/default/src/components/profile-dropdown.tsx
  • web/default/src/components/select-dropdown.tsx
  • web/default/src/components/status-badge.tsx
  • web/default/src/components/theme-switch.tsx
  • web/default/src/components/ui/accordion.tsx
  • web/default/src/components/ui/alert-dialog.tsx
  • web/default/src/components/ui/alert.tsx
  • web/default/src/components/ui/aspect-ratio.tsx
  • web/default/src/components/ui/avatar.tsx
  • web/default/src/components/ui/badge.tsx
  • web/default/src/components/ui/breadcrumb.tsx
  • web/default/src/components/ui/button-group.tsx
  • web/default/src/components/ui/button.tsx
  • web/default/src/components/ui/calendar.tsx
  • web/default/src/components/ui/card.tsx
  • web/default/src/components/ui/carousel.tsx
  • web/default/src/components/ui/chart.tsx
  • web/default/src/components/ui/checkbox.tsx
  • web/default/src/components/ui/collapsible.tsx
  • web/default/src/components/ui/combobox.tsx
  • web/default/src/components/ui/command.tsx
  • web/default/src/components/ui/context-menu.tsx
  • web/default/src/components/ui/dialog.tsx
  • web/default/src/components/ui/direction.tsx
  • web/default/src/components/ui/drawer.tsx
  • web/default/src/components/ui/dropdown-menu.tsx
  • web/default/src/components/ui/empty.tsx
  • web/default/src/components/ui/field.tsx
  • web/default/src/components/ui/form.tsx
  • web/default/src/components/ui/hover-card.tsx
  • web/default/src/components/ui/input-group.tsx
  • web/default/src/components/ui/input-otp.tsx
  • web/default/src/components/ui/input.tsx
  • web/default/src/components/ui/item.tsx
  • web/default/src/components/ui/kbd.tsx
  • web/default/src/components/ui/label.tsx
  • web/default/src/components/ui/menubar.tsx
  • web/default/src/components/ui/native-select.tsx
  • web/default/src/components/ui/navigation-menu.tsx
  • web/default/src/components/ui/pagination.tsx
  • web/default/src/components/ui/popover.tsx
  • web/default/src/components/ui/progress.tsx
  • web/default/src/components/ui/radio-group.tsx
  • web/default/src/components/ui/resizable.tsx
  • web/default/src/components/ui/scroll-area.tsx
  • web/default/src/components/ui/select.tsx
  • web/default/src/components/ui/separator.tsx
  • web/default/src/components/ui/sheet.tsx
  • web/default/src/components/ui/sidebar.tsx
  • web/default/src/components/ui/skeleton.tsx
  • web/default/src/components/ui/slider.tsx
  • web/default/src/components/ui/sonner.tsx
  • web/default/src/components/ui/spinner.tsx
  • web/default/src/components/ui/switch.tsx
  • web/default/src/components/ui/table.tsx
  • web/default/src/components/ui/tabs.tsx
  • web/default/src/components/ui/textarea.tsx
  • web/default/src/components/ui/titled-card.tsx
  • web/default/src/components/ui/toggle-group.tsx
  • web/default/src/components/ui/toggle.tsx
  • web/default/src/components/ui/tooltip.tsx
  • web/default/src/context/direction-provider.tsx
  • web/default/src/context/theme-customization-provider.tsx
  • web/default/src/features/auth/components/legal-consent.tsx
  • web/default/src/features/auth/sign-in/components/user-auth-form.tsx
  • web/default/src/features/auth/sign-up/components/sign-up-form.tsx
  • web/default/src/features/channels/components/channels-columns.tsx
  • web/default/src/features/channels/components/channels-primary-buttons.tsx
  • web/default/src/features/channels/components/channels-table.tsx
  • web/default/src/features/channels/components/data-table-bulk-actions.tsx
  • web/default/src/features/channels/components/data-table-row-actions.tsx
  • web/default/src/features/channels/components/data-table-tag-row-actions.tsx
  • web/default/src/features/channels/components/dialogs/channel-test-dialog.tsx
  • web/default/src/features/channels/components/dialogs/edit-tag-dialog.tsx
  • web/default/src/features/channels/components/dialogs/fetch-models-dialog.tsx
  • web/default/src/features/channels/components/dialogs/missing-models-confirmation-dialog.tsx
  • web/default/src/features/channels/components/dialogs/multi-key-manage-dialog.tsx
  • web/default/src/features/channels/components/dialogs/param-override-editor-dialog.tsx
  • web/default/src/features/channels/components/drawers/channel-mutate-drawer.tsx
  • web/default/src/features/dashboard/components/models/consumption-distribution-chart.tsx
  • web/default/src/features/dashboard/components/models/log-stat-cards.tsx
  • web/default/src/features/dashboard/components/models/model-charts.tsx
  • web/default/src/features/dashboard/components/models/models-chart-preferences.tsx
  • web/default/src/features/dashboard/components/models/models-filter-dialog.tsx
  • web/default/src/features/dashboard/components/overview/api-info-item.tsx
  • web/default/src/features/dashboard/components/overview/faq-panel.tsx
  • web/default/src/features/dashboard/components/overview/summary-cards.tsx
  • web/default/src/features/dashboard/components/ui/stat-card.tsx
  • web/default/src/features/dashboard/components/users/user-charts.tsx
  • web/default/src/features/dashboard/index.tsx
  • web/default/src/features/dashboard/lib/charts.ts
  • web/default/src/features/dashboard/lib/filters.ts
  • web/default/src/features/home/components/hero-buttons.tsx
  • web/default/src/features/home/components/hero-terminal-demo.tsx
  • web/default/src/features/home/components/sections/cta.tsx
  • web/default/src/features/home/components/sections/hero.tsx
  • web/default/src/features/keys/components/api-key-group-combobox.tsx
  • web/default/src/features/keys/components/api-keys-cells.tsx
  • web/default/src/features/keys/components/api-keys-columns.tsx
  • web/default/src/features/keys/components/api-keys-mutate-drawer.tsx
  • web/default/src/features/keys/components/api-keys-table.tsx
  • web/default/src/features/keys/components/data-table-bulk-actions.tsx
  • web/default/src/features/keys/components/data-table-row-actions.tsx
  • web/default/src/features/keys/index.tsx
  • web/default/src/features/legal/legal-document.tsx
  • web/default/src/features/models/components/data-table-bulk-actions.tsx
  • web/default/src/features/models/components/data-table-row-actions.tsx
  • web/default/src/features/models/components/deployments-table.tsx
  • web/default/src/features/models/components/dialogs/create-deployment-drawer.tsx
  • web/default/src/features/models/components/dialogs/missing-models-dialog.tsx
  • web/default/src/features/models/components/dialogs/prefill-group-management-dialog.tsx
  • web/default/src/features/models/components/dialogs/sync-wizard-dialog.tsx
  • web/default/src/features/models/components/dialogs/upstream-conflict-dialog.tsx
  • web/default/src/features/models/components/dialogs/view-details-dialog.tsx
  • web/default/src/features/models/components/dialogs/view-logs-dialog.tsx
  • web/default/src/features/models/components/drawers/model-mutate-drawer.tsx
  • web/default/src/features/models/components/drawers/prefill-group-form-drawer.tsx
  • web/default/src/features/models/components/models-columns.tsx
  • web/default/src/features/models/components/models-primary-buttons.tsx
  • web/default/src/features/models/components/models-table.tsx
  • web/default/src/features/models/index.tsx
  • web/default/src/features/playground/components/message-action-button.tsx
  • web/default/src/features/playground/components/message-actions.tsx
  • web/default/src/features/playground/components/playground-input.tsx
  • web/default/src/features/pricing/components/dynamic-pricing-breakdown.tsx
  • web/default/src/features/pricing/components/filter-bar.tsx
  • web/default/src/features/pricing/components/index.ts
  • web/default/src/features/pricing/components/model-card.tsx
  • web/default/src/features/pricing/components/model-details-api.tsx
  • web/default/src/features/pricing/components/model-details-apps.tsx
  • web/default/src/features/pricing/components/model-details-capabilities.tsx
  • web/default/src/features/pricing/components/model-details-charts.tsx
  • web/default/src/features/pricing/components/model-details-modalities.tsx
  • web/default/src/features/pricing/components/model-details-performance.tsx
  • web/default/src/features/pricing/components/model-details-quick-stats.tsx
  • web/default/src/features/pricing/components/model-details-uptime-sparkline.tsx
  • web/default/src/features/pricing/components/model-details.tsx
  • web/default/src/features/pricing/components/pricing-columns.tsx
  • web/default/src/features/pricing/components/pricing-sidebar.tsx
  • web/default/src/features/pricing/components/pricing-toolbar.tsx
  • web/default/src/features/pricing/hooks/use-filters.ts
  • web/default/src/features/pricing/index.tsx
  • web/default/src/features/pricing/lib/dynamic-price.ts
  • web/default/src/features/pricing/lib/index.ts
  • web/default/src/features/pricing/lib/mock-stats.ts
  • web/default/src/features/pricing/lib/model-metadata.ts
  • web/default/src/features/pricing/lib/seed.ts
  • web/default/src/features/pricing/types.ts
  • web/default/src/features/profile/api.ts
  • web/default/src/features/profile/components/checkin-calendar-card.tsx
  • web/default/src/features/profile/components/language-preferences-card.tsx
  • web/default/src/features/profile/components/passkey-card.tsx
  • web/default/src/features/profile/components/profile-security-card.tsx
  • web/default/src/features/profile/components/profile-settings-card.tsx
  • web/default/src/features/profile/index.tsx
  • web/default/src/features/rankings/components/apps-section.tsx
  • web/default/src/features/rankings/components/category-section.tsx
  • web/default/src/features/rankings/components/entity-links.tsx
  • web/default/src/features/rankings/components/growth-text.tsx
  • web/default/src/features/rankings/components/index.ts
  • web/default/src/features/rankings/components/market-share-section.tsx
  • web/default/src/features/rankings/components/model-leaderboard.tsx
  • web/default/src/features/rankings/components/models-section.tsx
  • web/default/src/features/rankings/components/pulse-section.tsx
  • web/default/src/features/rankings/components/rankings-hero.tsx
  • web/default/src/features/rankings/hooks/use-rankings.ts
  • web/default/src/features/rankings/index.tsx
  • web/default/src/features/rankings/lib/format.ts
  • web/default/src/features/rankings/lib/index.ts
  • web/default/src/features/rankings/lib/mock-rankings.ts
  • web/default/src/features/rankings/types.ts
  • web/default/src/features/redemption-codes/components/data-table-bulk-actions.tsx
  • web/default/src/features/redemption-codes/components/data-table-row-actions.tsx
  • web/default/src/features/redemption-codes/components/redemptions-columns.tsx
  • web/default/src/features/redemption-codes/components/redemptions-mutate-drawer.tsx
  • web/default/src/features/redemption-codes/components/redemptions-table.tsx
  • web/default/src/features/setup/components/usage-mode-step.tsx
  • web/default/src/features/subscriptions/components/data-table-row-actions.tsx
  • web/default/src/features/subscriptions/components/dialogs/subscription-purchase-dialog.tsx
  • web/default/src/features/subscriptions/components/dialogs/user-subscriptions-dialog.tsx
  • web/default/src/features/subscriptions/components/subscriptions-columns.tsx
  • web/default/src/features/subscriptions/components/subscriptions-mutate-drawer.tsx
  • web/default/src/features/subscriptions/components/subscriptions-table.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/components/preset-selector.tsx
  • web/default/src/features/system-settings/general/channel-affinity/index.tsx
  • web/default/src/features/system-settings/general/channel-affinity/rule-editor-dialog.tsx
  • web/default/src/features/system-settings/index.tsx
  • web/default/src/features/system-settings/integrations/payment-methods-visual-editor.tsx
  • web/default/src/features/system-settings/maintenance/performance-section.tsx
  • web/default/src/features/system-settings/models/channel-selector-dialog.tsx
  • web/default/src/features/system-settings/models/group-ratio-visual-editor.tsx
  • web/default/src/features/system-settings/models/group-special-usable-editor.tsx
  • web/default/src/features/system-settings/models/model-ratio-dialog.tsx
  • web/default/src/features/system-settings/models/tiered-pricing-editor.tsx
  • web/default/src/features/system-settings/models/upstream-ratio-sync-columns.tsx
  • web/default/src/features/system-settings/models/upstream-ratio-sync-table.tsx
  • web/default/src/features/usage-logs/components/columns/column-helpers.tsx
  • web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx
  • web/default/src/features/usage-logs/components/columns/drawing-logs-columns.tsx
  • web/default/src/features/usage-logs/components/columns/task-logs-columns.tsx
  • web/default/src/features/usage-logs/components/common-logs-filter-bar.tsx
  • web/default/src/features/usage-logs/components/common-logs-header-actions.tsx
  • web/default/src/features/usage-logs/components/common-logs-stats.tsx
  • web/default/src/features/usage-logs/components/compact-date-time-range-picker.tsx
  • web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
  • web/default/src/features/usage-logs/components/dialogs/filter-components.tsx
  • web/default/src/features/usage-logs/components/dialogs/usage-logs-filter-dialog.tsx
  • web/default/src/features/usage-logs/components/model-badge.tsx
  • web/default/src/features/usage-logs/components/task-logs-filter-bar.tsx
  • web/default/src/features/usage-logs/components/usage-logs-primary-buttons.tsx
  • web/default/src/features/usage-logs/components/usage-logs-table.tsx
  • web/default/src/features/usage-logs/index.tsx
  • web/default/src/features/usage-logs/lib/format.ts
  • web/default/src/features/users/components/data-table-row-actions.tsx
  • web/default/src/features/users/components/dialogs/user-binding-dialog.tsx
  • web/default/src/features/users/components/users-columns.tsx
  • web/default/src/features/users/components/users-mutate-drawer.tsx
  • web/default/src/features/users/components/users-table.tsx
  • web/default/src/features/wallet/components/affiliate-rewards-card.tsx
  • web/default/src/features/wallet/components/dialogs/billing-history-dialog.tsx
  • web/default/src/features/wallet/components/recharge-form-card.tsx
  • web/default/src/features/wallet/components/subscription-plans-card.tsx
  • web/default/src/hooks/use-mobile.ts
  • web/default/src/hooks/use-top-nav-links.ts
  • web/default/src/i18n/locales/_reports/_sync-report.json
  • web/default/src/i18n/locales/_reports/fr.untranslated.json
  • web/default/src/i18n/locales/_reports/ja.untranslated.json
  • web/default/src/i18n/locales/_reports/ru.untranslated.json
  • web/default/src/i18n/locales/_reports/vi.untranslated.json
  • web/default/src/i18n/locales/_reports/zh.untranslated.json
  • web/default/src/i18n/locales/en.json
  • web/default/src/i18n/locales/fr.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-new-ui-components-clean

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

t0ng7u and others added 10 commits May 6, 2026 12:35
…d fix selection badges

Integrate the qn-platform–style OKLCH color system into the default frontend while keeping the existing blue-tinted dark tokens for the default theme. Add [data-theme-preset] palettes for seven named presets plus the default zinc-like scale, define [data-theme-radius] overrides so user radius beats preset --radius, and align the Tailwind @custom-variant dark helper with .dark usage.

Introduce ThemeCustomizationProvider to own preset and radius state, persist choices in cookies (theme-preset, theme-radius), and sync data-theme-preset / data-theme-radius on <html>. Wrap the tree in main.tsx.

Extend ConfigDrawer with theme preset swatches (scoped data-theme-preset) and radius previews wired to context; refactor swatch/card markup so selected CircleCheck badges sit outside clipped rows (remove outer overflow-hidden that hid the centered checkmark).

Add i18n keys for preset names, radius, and accessibility labels across en, zh, fr, ja, ru, vi.
- Replace hard-coded inner pill radii (rounded-[5px]) on dashboard chart
  toolbars with radius-md so the active state follows --radius when users
  change Radius in Theme Settings.
- Use nested radii consistent with TabsList/TabsTrigger: outer
  rounded-lg (var(--radius)) and inner rounded-md (calc(var(--radius) - 2px))
  so the track and active thumb stay concentric at small scales (e.g.
  0.3rem) instead of a squared “focus” block inside a rounded shell.
- Apply the same pattern to pricing SegmentedControl and the segmented
  groups in consumption-distribution-chart, model-charts, and user-charts.

Verified: bun run typecheck (web/default)
…ocumentation

Add a compact 30-day uptime sparkline (OpenRouter-style bars + aggregate %) with
per-day tooltips, surface it in a status row under quick stats and in the
per-group performance table, and extend mock data so uptime series are stable
and optionally scoped by group.

Introduce an API tab with Shiki-highlighted code samples (cURL, Python,
TypeScript, JavaScript), endpoint-type switching, authentication guidance, a
supported-parameters table, and mock per-group RPM/TPM/RPD limits. Infer
vendor, tokenizer, license, and data-retention hints for a provider & data
privacy card on the Overview tab (capabilities/modalities stay with model
identity; rate limits stay with the API tab).

Update i18n for all new user-facing strings across en, zh, fr, ja, ru, and vi.
Add a mock-data powered rankings experience with period tabs, model, app, and vendor leaderboards, market share and history charts, movers, new releases, and per-category sections while backend analytics are pending.

Link ranked models to pricing details and ranked vendors to filtered pricing results, and include localized copy for all supported frontend locales.
- update Base UI Radio selectors to use data-checked/data-unchecked states.
- fix unchecked theme options still showing selected indicators.
- isolate the default theme preview tokens to prevent preset changes from leaking into it.
- use Base UI data-checked/data-unchecked states for RadioGroup styling.
- hide radio indicators when options are unchecked to avoid setup page display issues.
- drive usage mode card and icon selection styles from Base UI state.
…y customization

Migrate shadcn UI to Base UI primitives via CLI (`base-nova` / `components.json`)
and reinstall full component registry with `--overwrite`, including Hugeicons-backed
widgets and newly added registry components.

- Remove custom multi-preset/theme-radius system (`ThemeCustomizationProvider`, cookies,
  preset UI from config drawer); rely on official semantic CSS tokens + light/dark only.
- Replace `theme.css` with shadcn’s documented neutral `:root`/`.dark` palette and
  `@theme inline` mappings (plus skeleton token vars for existing shimmer usage).
- Update global styles for Base UI: collapsible animation uses `--collapsible-panel-height`;
  clarify scroll-lock override comment.

Application compatibility:
- Keep minimal shims where app code diverged from official APIs (popover collision props,
  combobox legacy `options` callers, Spinner prop typing).
- Switch interactive styling from Radix-era `data-state` / `--radix-*` selectors to Base UI
  semantics (`data-open`, `data-popup-open`, `data-panel-open`, `--anchor-width`, etc.)

Tooling / docs / build:
- Rename Rsbuild vendor chunk grouping to `@base-ui` + transitive `@radix-ui`.
- Refresh AGENTS.md / CLAUDE.md / classic→default sync skill for Base UI stack.
- Bump `package.json` / lockfile for shadcn-postinstall deps (Hugeicons, chart stack, themes, etc.)

Verified: `bun run typecheck` passes.

Note: `bun run lint` still reports pre-existing hooks rule violations elsewhere;
not addressed in this change.
…ne filters

- Refactor DataTableToolbar to a single wrapping flex row with a
  right-aligned action cluster (Reset / Search / View / Expand) for a
  cleaner Ant Design Pro–style filter bar; remove the dedicated stats row
  and the toolbar `stats` prop.
- Move Common Logs summary badges (Usage / RPM / TPM) and the sensitive-
  data visibility toggle into the page header via CommonLogsHeaderActions
  and SectionPageLayout.Actions so the toolbar stays focused on filters.
- Slim CommonLogsFilterBar props (no stats / preActions eye control).
- Improve CompactDateTimeRangePicker: show minute-precision labels on the
  trigger (seconds omitted; aligns with datetime-local inputs); widen the
  trigger on sm+ breakpoints so the full range is visible without truncation;
  apply the same width in task logs filters.
- Simplify DataTableViewOptions: text-only “View” trigger, no sliders icon.
- Earlier layout tweak: extra top padding on SectionPageLayout scroll
  content so control focus rings are not clipped by overflow.
Migrate from Radix UI to Base UI, rewrite core UI primitives,
update dependencies (recharts, date-fns, next-themes), add
shadcn agent skill documentation, and refresh AI element components.

This is the foundational work from the v2/localmain lineage that
was not covered by the individual feature commits above.
@Calcium-Ion Calcium-Ion force-pushed the feat-new-ui-components-clean branch from 40397d9 to cfdf219 Compare May 6, 2026 04:38
@Calcium-Ion Calcium-Ion merged commit 8b2b03d into main May 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants