- Tokens/Users tables:
- Replaced status Switch with explicit Enable/Disable buttons in the operation column
- Unified button styles with Channels/Models (Disable: danger + small; Enable: default + small)
- Status column now shows a small Tag only; standardized labels (Enabled/Disabled/etc.); removed usage info
- New "Remaining/Total Quota" column:
- Wrapped in a white Tag; shows Remaining/Total with a progress bar
- Replaced Tooltip with Popover; contents use Typography.Paragraph with copyable values
- Copyable content excludes percentages (only numeric quota values are copied)
- Added padding to Popover content for better readability
- Tokens specifics:
- For unlimited quota, show a white Tag "Unlimited quota" with a Popover that displays copyable "Used quota"
- Cleanup:
- Removed Switch imports/handlers and unused code paths
- Eliminated console logs and redundant flags; simplified chats parsing
- Removed quota calculations from status renderers
Files:
- web/src/components/table/tokens/TokensColumnDefs.js
- web/src/components/table/users/UsersColumnDefs.js
Provide a consistent UX by ensuring the status column tooltip is shown for all tokens, including those with unlimited quota.
Details:
• Removed early‐return that skipped tooltip rendering when `record.unlimited_quota` was true.
• Refactored tooltip content:
– Unlimited quota: shows only “used quota”.
– Limited quota: continues to show used, remaining (with percentage) and total.
• Leaves existing tag, switch and progress-bar behaviour unchanged.
This prevents missing hover information for unlimited tokens and avoids meaningless “remaining / total” figures (e.g. Infinity), improving clarity for administrators.
- Split monolithic 922-line TokensTable.js into modular components:
* useTokensData.js: Custom hook for centralized state and logic management
* TokensColumnDefs.js: Column definitions and rendering functions
* TokensTable.jsx: Pure table component for rendering
* TokensActions.jsx: Actions area (add, copy, delete tokens)
* TokensFilters.jsx: Search form component with keyword and token filters
* TokensDescription.jsx: Description area with compact mode toggle
* index.jsx: Main orchestrator component
- Features preserved:
* Token status management with switch controls
* Quota progress bars and visual indicators
* Model limitations display with vendor avatars
* IP restrictions handling and display
* Chat integrations with dropdown menu
* Batch operations (copy, delete) with confirmations
* Key visibility toggle and copy functionality
* Compact mode for responsive layouts
* Search and filtering capabilities
* Pagination and loading states
- Improvements:
* Better separation of concerns
* Enhanced reusability and testability
* Simplified maintenance and debugging
* Consistent modular architecture pattern
* Performance optimizations with useMemo
* Backward compatibility maintained
This refactoring follows the same successful pattern used for LogsTable, MjLogsTable, and TaskLogsTable, significantly improving code maintainability while preserving all existing functionality.