feat(admin): unify native admin pages on a shared modern UI

Add NativeUi helper + native-ui.css (tokens mirror the SPA Naive UI theme)
and move the pay center, orders, products, coupons, charge cards, income,
withdrawals, tickets, invite codes, VIP, verify, messages and report/ban
pages onto shared header, stat cards, cards, filters, badges and empty
states. Remove inline styles and dead helpers; split PayChargeCards into
sibling traits to stay under the file size limit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-10-30 15:05:38 +08:00
1 parent aa692f3c9f
commit 18951b01d6
29 files changed
+2503 -1593

No files matched your search

+4 -4
View File
@@ -93,7 +93,7 @@ trait UsersMenusTicketsDetail {
$html .= '<section class="aksrt-ticket-detail__card">';
$html .= '<h4 class="aksrt-ticket-detail__heading">' . esc_html__('内部备注', 'aksrt')
. ' <span class="aksrt-tickets-admin__muted">' . esc_html__('用户不可见', 'aksrt') . '</span></h4>';
. ' <span class="aksrt-native-muted">' . esc_html__('用户不可见', 'aksrt') . '</span></h4>';
if ($notes === []) {
$html .= '<p class="aksrt-ticket-detail__empty">' . esc_html__('暂无备注', 'aksrt') . '</p>';
} else {
@@ -158,7 +158,7 @@ trait UsersMenusTicketsDetail {
__('部门', 'aksrt') => esc_html((string) $ticket['ticket_type_name'] !== '' ? (string) $ticket['ticket_type_name'] : '—'),
__('跟进人', 'aksrt') => (int) $ticket['admin_id'] > 0
? esc_html((string) $ticket['admin_name'])
: '<span class="aksrt-tickets-admin__muted">' . esc_html__('未指派', 'aksrt') . '</span>',
: '<span class="aksrt-native-muted">' . esc_html__('未指派', 'aksrt') . '</span>',
];
if ((string) $ticket['order_number'] !== '') {
$rows[__('关联订单', 'aksrt')] = '<code>' . esc_html((string) $ticket['order_number']) . '</code>';
@@ -170,7 +170,7 @@ trait UsersMenusTicketsDetail {
/* translators: %d urge count */
__('%d 次', 'aksrt'),
(int) $ticket['urge_count']
)) . '</span> <span class="aksrt-tickets-admin__muted">' . esc_html(sprintf(
)) . '</span> <span class="aksrt-native-muted">' . esc_html(sprintf(
/* translators: %s last urge time */
__('最近 %s', 'aksrt'),
(string) $ticket['last_urge_time']
@@ -268,7 +268,7 @@ trait UsersMenusTicketsDetail {
return '<header class="aksrt-ticket-detail__msg-head">'
. ($avatar !== '' ? '<img src="' . esc_url($avatar) . '" alt="" width="32" height="32" />' : '')
. '<strong>' . esc_html($name !== '' ? $name : '#' . $user_id) . '</strong>'
. '<span class="aksrt-tickets-admin__muted">' . esc_html($role) . '</span>'
. '<span class="aksrt-native-muted">' . esc_html($role) . '</span>'
. '<time>' . esc_html($time) . '</time></header>';
}