[STYLE] 系統用語標準化與客戶管理 UI 點選透明度優化 (所屬單位 -> 公司名稱、姓名 -> 名稱)
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 59s

This commit is contained in:
2026-03-30 10:16:05 +08:00
parent e780e195e2
commit ea0333d77e
9 changed files with 107 additions and 99 deletions

View File

@@ -181,7 +181,7 @@ description: 定義 Star Cloud 管理後台的「極簡奢華風」設計規範
### 搜尋式下拉選單 (Searchable Select) - 【進階推薦】
- **組件**: `<x-searchable-select />`
- **適用場景**: 選項大於 10 筆或具備層級關聯的篩選器(如:所屬單位、機台編號)。
- **適用場景**: 選項大於 10 筆或具備層級關聯的篩選器(如:公司名稱、機台編號)。
- **奢華特徵**:
- **動態旋轉箭頭**: 透過 `::after` 偽元素實作,選單展開時箭頭執行 `300ms` 的 180 度旋轉動畫。
- **即時過濾**: 輸入關鍵字即時隱藏不匹配項。

View File

@@ -53,7 +53,7 @@ class CompanyController extends Controller
'contact_name' => 'nullable|string|max:255',
'contact_phone' => 'nullable|string|max:50',
'contact_email' => 'nullable|email|max:255',
'start_date' => 'nullable|date',
'start_date' => 'required|date',
'end_date' => 'nullable|date',
'status' => 'required|boolean',
'note' => 'nullable|string',
@@ -141,7 +141,7 @@ class CompanyController extends Controller
'contact_name' => 'nullable|string|max:255',
'contact_phone' => 'nullable|string|max:50',
'contact_email' => 'nullable|email|max:255',
'start_date' => 'nullable|date',
'start_date' => 'required|date',
'end_date' => 'nullable|date',
'status' => 'required|boolean',
'note' => 'nullable|string',

View File

@@ -24,7 +24,7 @@ class PermissionController extends Controller
$query->where('name', 'like', "%{$search}%");
}
// 篩選:所屬單位 (僅限系統管理員)
// 篩選:公司名稱 (僅限系統管理員)
if ($user->isSystemAdmin() && request()->filled('company_id')) {
if (request()->company_id === 'system') {
$query->where('is_system', true);

View File

@@ -34,13 +34,13 @@
"Admin display name": "Admin display name",
"Administrator": "Administrator",
"Advertisement Management": "Advertisement Management",
"Affiliated Unit": "Affiliated Unit",
"Affiliation": "Affiliation",
"Affiliated Unit": "Company Name",
"Affiliation": "Company Name",
"Alert Summary": "Alert Summary",
"Alerts": "中心告警",
"Alerts Pending": "Alerts Pending",
"All": "All",
"All Affiliations": "All Affiliations",
"All Affiliations": "All Companies",
"All Categories": "All Categories",
"All Companies": "All Companies",
"All Levels": "All Levels",
@@ -74,8 +74,8 @@
"Basic Settings": "Basic Settings",
"Basic Specifications": "Basic Specifications",
"Batch No": "Batch No",
"Belongs To": "Belongs To",
"Belongs To Company": "Belongs To Company",
"Belongs To": "Company Name",
"Belongs To Company": "Company Name",
"Buyout": "Buyout",
"Cancel": "Cancel",
"Cancel Purchase": "Cancel Purchase",
@@ -203,6 +203,7 @@
"Fleet Avg OEE": "Fleet Avg OEE",
"Fleet Performance": "Fleet Performance",
"From": "From",
"From:": "From:",
"Full Access": "Full Access",
"Full Name": "Full Name",
"Games": "Games",
@@ -392,6 +393,8 @@
"Offline": "Offline",
"Original": "Original",
"Original Type": "Original Type",
"Original:": "Ori:",
"Current:": "Cur:",
"Offline Machines": "Offline Machines",
"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.",
"Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.",
@@ -408,7 +411,7 @@
"Orders": "Orders",
"Other Permissions": "Other Permissions",
"Others": "Others",
"Owner": "Owner",
"Owner": "Company Name",
"PARTNER_KEY": "PARTNER_KEY",
"PI_MERCHANT_ID": "PI_MERCHANT_ID",
"PS_MERCHANT_ID": "PS_MERCHANT_ID",
@@ -521,11 +524,11 @@
"Search serial or machine...": "Search serial or machine...",
"Search users...": "Search users...",
"Select All": "全選",
"Select Company": "Select Company",
"Select Company": "Select Company Name",
"Select Machine": "選擇機台",
"Select Machine to view metrics": "請選擇機台以查看指標",
"Select Model": "Select Model",
"Select Owner": "Select Owner",
"Select Owner": "Select Company Name",
"Select a machine to deep dive": "請選擇機台以開始深度分析",
"Selected": "Selected",
"Selected Date": "查詢日期",

View File

@@ -34,13 +34,13 @@
"Admin display name": "管理者表示名",
"Administrator": "管理者",
"Advertisement Management": "廣告管理",
"Affiliated Unit": "所属ユニット",
"Affiliation": "所属",
"Affiliated Unit": "会社名",
"Affiliation": "会社名",
"Alert Summary": "アラート概要",
"Alerts": "中心告警",
"Alerts Pending": "アラート待機中",
"All": "すべて",
"All Affiliations": "全ての所属",
"All Affiliations": "すべての会社",
"All Categories": "すべてのカテゴリ",
"All Companies": "すべての会社",
"All Levels": "すべてのレベル",
@@ -74,8 +74,8 @@
"Basic Settings": "基本設定",
"Basic Specifications": "基本仕様",
"Batch No": "批號",
"Belongs To": "所属",
"Belongs To Company": "所属会社",
"Belongs To": "会社名",
"Belongs To Company": "会社",
"Business Type": "業務タイプ",
"Buyout": "買取",
"Cancel": "キャンセル",
@@ -129,6 +129,7 @@
"Critical": "致命的",
"Current Password": "現在のパスワード",
"Current": "現在",
"Current:": "現:",
"Current Type": "現タイプ",
"Current Stock": "現在の在庫",
"Customer Info": "顧客情報",
@@ -203,6 +204,7 @@
"Fleet Avg OEE": "フリート平均 OEE",
"Fleet Performance": "全機隊效能",
"From": "から",
"From:": "開始:",
"Full Access": "全機台授權",
"Full Name": "氏名",
"Games": "ゲーム",
@@ -382,6 +384,7 @@
"None": "なし",
"Original": "最初",
"Original Type": "元タイプ",
"Original:": "元:",
"Normal": "正常",
"Not Used": "未使用",
"Not Used Description": "不使用第三方支付介接",
@@ -409,7 +412,7 @@
"Orders": "注文",
"Other Permissions": "其他權限",
"Others": "その他",
"Owner": "所属会社",
"Owner": "会社",
"PARTNER_KEY": "パートナーキー",
"PI_MERCHANT_ID": "Pi 拍錢包 加盟店ID",
"PS_MERCHANT_ID": "全盈+Pay 加盟店ID",
@@ -501,7 +504,7 @@
"Points Settings": "ポイント設定",
"Points toggle": "ポイント切り替え",
"Roles": "ロール権限",
"Roles scoped to specific customer companies.": "適用於各個客戶單位的特定角色。",
"Roles scoped to specific customer companies.": "各顧客企業専用のロール。",
"Running Status": "稼働状況",
"SYSTEM": "システムレベル",
"Sales": "銷售管理",
@@ -526,11 +529,11 @@
"Search serial or machine...": "シリアルまたはマシンを検索...",
"Search users...": "ユーザーを検索...",
"Select All": "全選",
"Select Company": "会社を選択",
"Select Company": "会社を選択",
"Select Machine": "選擇機台",
"Select Machine to view metrics": "請選擇機台以查看指標",
"Select Model": "型番を選択",
"Select Owner": "所属会社を選択",
"Select Owner": "会社を選択",
"Select a machine to deep dive": "請選擇機台以開始深度分析",
"Selected": "已選擇",
"Selected Date": "查詢日期",

View File

@@ -10,7 +10,7 @@
"APP_KEY": "APP_KEY",
"Account": "帳號",
"Account Management": "帳號管理",
"Account Name": "帳號名",
"Account Name": "帳號名",
"Account Settings": "帳戶設定",
"Account Status": "帳號狀態",
"Account created successfully.": "帳號已成功建立。",
@@ -28,19 +28,19 @@
"Add Maintenance Record": "新增維修管理單",
"Add Role": "新增角色",
"Admin": "管理員",
"Admin Name": "管理員姓名",
"Admin Name": "名",
"Admin Page": "管理頁",
"Admin Sellable Products": "管理者可賣",
"Admin display name": "管理員顯示名稱",
"Administrator": "管理員",
"Advertisement Management": "廣告管理",
"Affiliated Unit": "所屬單位",
"Affiliation": "所屬單位",
"Affiliated Unit": "公司名稱",
"Affiliation": "公司名稱",
"Alert Summary": "告警摘要",
"Alerts": "中心告警",
"Alerts Pending": "待處理告警",
"All": "全部",
"All Affiliations": "全部單位",
"All Affiliations": "所有公司",
"All Categories": "所有分類",
"All Companies": "所有公司",
"All Levels": "所有層級",
@@ -74,8 +74,8 @@
"Basic Settings": "基本設定",
"Basic Specifications": "基本規格",
"Batch No": "批號",
"Belongs To": "所屬單位",
"Belongs To Company": "所屬單位",
"Belongs To": "公司名稱",
"Belongs To Company": "公司名稱",
"Cancel": "取消",
"Cancel Purchase": "取消購買",
"Cannot Delete Role": "無法刪除該角色",
@@ -132,6 +132,7 @@
"Customer created successfully.": "客戶新增成功。",
"Customer updated successfully.": "客戶更新成功。",
"Current Type": "當前類型",
"Current:": "現:",
"Contract Period": "合約期間",
"Danger Zone: Delete Account": "危險區域:刪除帳號",
"Dashboard": "儀表板",
@@ -202,8 +203,9 @@
"Daily Revenue": "當日營收",
"Fleet Performance": "全機台效能",
"From": "從",
"From:": "起:",
"Full Access": "全機台授權",
"Full Name": "名",
"Full Name": "名",
"Games": "互動遊戲",
"General permissions not linked to a specific menu.": "未連結到特定選單的一般權限。",
"Gift Definitions": "禮品設定",
@@ -328,7 +330,7 @@
"Monitor events and system activity across your vending fleet.": "跨機台連線動態與系統日誌監控。",
"Monthly Transactions": "本月交易統計",
"Monthly cumulative revenue overview": "本月累計營收概況",
"Name": "名",
"Name": "名",
"Never Connected": "從未連線",
"New Password": "新密碼",
"New Password (leave blank to keep current)": "新密碼 (若不修改請留空)",
@@ -391,7 +393,7 @@
"Orders": "購買單",
"Other Permissions": "其他權限",
"Others": "其他功能",
"Owner": "所屬單位",
"Owner": "公司名稱",
"PARTNER_KEY": "PARTNER_KEY",
"PI_MERCHANT_ID": "Pi 拍錢包 商店代號",
"PS_MERCHANT_ID": "全盈+Pay 商店代號",
@@ -486,7 +488,7 @@
"Points Settings": "點數設定",
"Points toggle": "點數開關",
"Roles": "角色權限",
"Roles scoped to specific customer companies.": "適用於各個客戶單位的特定角色。",
"Roles scoped to specific customer companies.": "適用於各個客戶公司的特定角色。",
"Running Status": "運行狀態",
"s": "秒",
"SYSTEM": "系統層級",
@@ -512,11 +514,11 @@
"Search serial or machine...": "搜尋序號或機台名稱...",
"Search users...": "搜尋用戶...",
"Select All": "全選",
"Select Company": "選擇所屬單位",
"Select Company": "選擇公司名稱",
"Select Machine": "選擇機台",
"Select Machine to view metrics": "請選擇機台以查看指標",
"Select Model": "選擇型號",
"Select Owner": "選擇所屬單位",
"Select Owner": "選擇公司名稱",
"Select a machine to deep dive": "請選擇機台以開始深度分析",
"Select date to sync data": "選擇日期以同步數據",
"Selected": "已選擇",
@@ -582,6 +584,7 @@
"Timer": "計時器",
"Timestamp": "時間戳記",
"To": "至",
"To:": "終:",
"Today Cumulative Sales": "今日累積銷售",
"Today's Transactions": "今日交易額",
"Total Connected": "總計連線數",
@@ -604,7 +607,7 @@
"Update Customer": "更新客戶",
"Update Password": "更改密碼",
"Update existing role and permissions.": "更新現有角色與權限設定。",
"Update your account's profile information and email address.": "更新您的帳號名、手機號碼與電子郵件地址。",
"Update your account's profile information and email address.": "更新您的帳號名、手機號碼與電子郵件地址。",
"Validation Error": "驗證錯誤",
"Upload New Images": "上傳新照片",
"Uploading new images will replace all existing images.": "上傳新照片將會取代所有現有照片。",
@@ -621,6 +624,7 @@
"Buyout": "買斷",
"Lease": "租賃",
"Original Type": "原始類型",
"Original:": "原:",
"Business Type": "業務類型",
"Start Date": "起始日",
"End Date": "截止日",

View File

@@ -289,7 +289,6 @@
.hs-select-menu {
@apply mt-2 max-h-72 p-2 space-y-0.5 z-50 bg-white border border-slate-200 rounded-2xl shadow-2xl overflow-y-auto;
@apply dark:bg-slate-900 dark:border-slate-800;
backdrop-filter: blur(12px);
}
.hs-select-option {

View File

@@ -196,34 +196,28 @@
</div>
</td>
<td class="px-6 py-6 text-center">
<div class="flex flex-col items-center gap-1">
<div class="flex items-center gap-1.5">
<div class="flex items-center gap-1.5">
<span class="text-[11px] font-black text-slate-400 uppercase tracking-tighter">{{ __('Original') }}</span>
<span class="px-2.5 py-1 rounded-md text-[11px] font-black {{ $company->original_type === 'buyout' ? 'bg-amber-500/10 text-amber-600' : 'bg-blue-500/10 text-blue-600' }} uppercase tracking-widest">
<div class="flex flex-col items-center gap-2">
<div class="flex items-center gap-2 min-w-[100px] justify-center">
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-widest w-8 text-right">{{ __('Original:') }}</span>
<span class="px-2 py-0.5 rounded text-xs font-bold {{ $company->original_type === 'buyout' ? 'bg-amber-500/10 text-amber-600' : 'bg-blue-500/10 text-blue-600' }} uppercase tracking-wider">
{{ __($company->original_type === 'buyout' ? 'Buyout' : 'Lease') }}
</span>
</div>
<div class="text-slate-300 dark:text-slate-700">
<svg class="size-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path d="M19 9l-7 7-7-7" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<div class="flex items-center gap-1.5">
<span class="text-[11px] font-black text-slate-400 uppercase tracking-tighter">{{ __('Current') }}</span>
<span class="px-2.5 py-1 rounded-md text-[11px] font-black {{ $company->current_type === 'buyout' ? 'bg-amber-500/10 text-amber-600 font-bold border border-amber-500/20' : 'bg-blue-500/10 text-blue-600 font-bold border border-blue-500/20' }} uppercase tracking-widest">
<div class="flex items-center gap-2 min-w-[100px] justify-center">
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-widest w-8 text-right">{{ __('Current:') }}</span>
<span class="px-2 py-0.5 rounded text-xs font-bold {{ $company->current_type === 'buyout' ? 'bg-amber-500/10 text-amber-600 border border-amber-500/20' : 'bg-blue-500/10 text-blue-600 border border-blue-500/20' }} uppercase tracking-wider">
{{ __($company->current_type === 'buyout' ? 'Buyout' : 'Lease') }}
</span>
</div>
</div>
</td>
<td class="px-6 py-6 text-center">
<td class="px-6 py-6 text-center py-6">
@if($company->status)
<span
class="inline-flex items-center px-3 py-1 rounded-full text-[11px] font-black bg-emerald-500/10 text-emerald-500 border border-emerald-500/20 tracking-widest uppercase">
<span class="inline-flex items-center px-3 py-1 rounded-full text-[11px] font-black bg-emerald-500/10 text-emerald-500 border border-emerald-500/20 tracking-widest uppercase">
{{ __('Active') }}
</span>
@else
<span
class="inline-flex items-center px-3 py-1 rounded-full text-[11px] font-black bg-rose-500/10 text-rose-500 border border-rose-500/20 tracking-widest uppercase">
<span class="inline-flex items-center px-3 py-1 rounded-full text-[11px] font-black bg-rose-500/10 text-rose-500 border border-rose-500/20 tracking-widest uppercase">
{{ __('Disabled') }}
</span>
@endif
@@ -241,16 +235,21 @@
</div>
</div>
</td>
<td class="px-6 py-6 text-center">
<div class="flex flex-col items-center gap-0.5">
<span class="text-[12px] font-bold font-mono text-slate-500 dark:text-slate-400 uppercase tracking-tighter">
<td class="px-6 py-6 text-center text-slate-500 dark:text-slate-400">
<div class="flex flex-col items-center gap-1.5 font-mono">
<div class="flex items-center gap-2 min-w-[130px] justify-center">
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-tighter">{{ __('From:') }}</span>
<span class="text-[13px] font-bold tracking-tighter text-slate-600 dark:text-slate-300">
{{ $company->start_date ? $company->start_date->format('Y-m-d') : '--' }}
</span>
<div class="h-2 w-px bg-slate-200 dark:bg-slate-700"></div>
<span class="text-[13px] font-black font-display tracking-widest {{ $company->end_date && $company->end_date->isPast() ? 'text-rose-500' : 'text-slate-800 dark:text-slate-200' }}">
</div>
<div class="flex items-center gap-2 min-w-[130px] justify-center">
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-tighter">{{ __('To:') }}</span>
<span class="text-[13px] font-bold tracking-tighter {{ $company->end_date && $company->end_date->isPast() ? 'text-rose-500' : 'text-slate-800 dark:text-slate-200' }}">
{{ $company->end_date ? $company->end_date->format('Y-m-d') : __('Permanent') }}
</span>
</div>
</div>
</td>
<td class="px-6 py-6 text-right">
<div class="flex items-center justify-end gap-x-2">
@@ -381,18 +380,21 @@
<!-- Business Type Selector -->
<div class="p-4 rounded-2xl bg-slate-50/50 dark:bg-slate-800/50 border border-slate-100 dark:border-slate-700/50 space-y-4">
<label class="text-[12px] font-black text-slate-500 uppercase tracking-widest pl-1">{{ __('Business Type') }}</label>
<label class="text-[11px] font-black text-slate-500 uppercase tracking-widest pl-1">
{{ __('Business Type') }}
<span class="text-rose-500 ml-0.5">*</span>
</label>
<!-- 新增模式:顯示切換按鈕 -->
<div x-show="!editing" class="flex p-1.5 bg-white dark:bg-slate-900 rounded-xl border border-slate-200 dark:border-slate-700 w-fit">
<button type="button" @click="currentCompany.original_type = 'lease'"
:class="currentCompany.original_type === 'lease' ? 'bg-blue-500 text-white shadow-lg shadow-blue-500/20' : 'text-slate-400 hover:text-slate-600'"
class="px-6 py-2 rounded-lg text-sm font-black uppercase tracking-widest transition-all">
class="px-4 py-1.5 rounded-lg text-xs font-bold uppercase tracking-widest transition-all">
{{ __('Lease') }}
</button>
<button type="button" @click="currentCompany.original_type = 'buyout'"
:class="currentCompany.original_type === 'buyout' ? 'bg-amber-500 text-white shadow-lg shadow-amber-500/20' : 'text-slate-400 hover:text-slate-600'"
class="px-6 py-2 rounded-lg text-sm font-black uppercase tracking-widest transition-all">
class="px-4 py-1.5 rounded-lg text-xs font-bold uppercase tracking-widest transition-all">
{{ __('Buyout') }}
</button>
<input type="hidden" name="original_type" :value="currentCompany.original_type">
@@ -401,20 +403,20 @@
<!-- 編輯模式:顯示原始類型固定值 + 當前類型切換 -->
<div x-show="editing" class="flex flex-col gap-5">
<div class="flex items-center gap-4">
<span class="text-sm font-bold text-slate-400">{{ __('Original Type') }}:</span>
<span class="px-4 py-1.5 bg-slate-100 dark:bg-slate-800 rounded-lg text-sm font-black uppercase tracking-widest text-slate-600 dark:text-slate-400" x-text="currentCompany.original_type === 'buyout' ? '{{ __('Buyout') }}' : '{{ __('Lease') }}'"></span>
<span class="text-[11px] font-black text-slate-400 uppercase tracking-widest">{{ __('Original Type') }}: <span class="text-rose-500 ml-0.5">*</span></span>
<span class="px-4 py-1.5 bg-slate-100 dark:bg-slate-800 rounded-lg text-xs font-bold uppercase tracking-widest text-slate-600 dark:text-slate-400" x-text="currentCompany.original_type === 'buyout' ? '{{ __('Buyout') }}' : '{{ __('Lease') }}'"></span>
</div>
<div class="flex items-center gap-4">
<span class="text-sm font-bold text-slate-400">{{ __('Current Type') }}:</span>
<span class="text-[11px] font-black text-slate-400 uppercase tracking-widest">{{ __('Current Type') }}: <span class="text-rose-500 ml-0.5">*</span></span>
<div class="flex p-1.5 bg-white dark:bg-slate-900 rounded-xl border border-slate-200 dark:border-slate-700 w-fit">
<button type="button" @click="currentCompany.current_type = 'lease'"
:class="currentCompany.current_type === 'lease' ? 'bg-blue-500 text-white shadow-lg shadow-blue-500/20' : 'text-slate-400 hover:text-slate-600'"
class="px-6 py-2 rounded-lg text-sm font-black uppercase tracking-widest transition-all">
class="px-4 py-1.5 rounded-lg text-xs font-bold uppercase tracking-widest transition-all">
{{ __('Lease') }}
</button>
<button type="button" @click="currentCompany.current_type = 'buyout'"
:class="currentCompany.current_type === 'buyout' ? 'bg-amber-500 text-white shadow-lg shadow-amber-500/20' : 'text-slate-400 hover:text-slate-600'"
class="px-6 py-2 rounded-lg text-sm font-black uppercase tracking-widest transition-all">
class="px-4 py-1.5 rounded-lg text-xs font-bold uppercase tracking-widest transition-all">
{{ __('Buyout') }}
</button>
<input type="hidden" name="current_type" :value="currentCompany.current_type">
@@ -426,13 +428,13 @@
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="space-y-2">
<label class="text-xs font-black text-slate-500 uppercase tracking-widest pl-1">{{
__('Company Name') }}</label>
__('Company Name') }} <span class="text-rose-500 ml-0.5">*</span></label>
<input type="text" name="name" x-model="currentCompany.name" required
class="luxury-input w-full" placeholder="{{ __('e.g. Taiwan Star') }}">
</div>
<div class="space-y-2">
<label class="text-xs font-black text-slate-500 uppercase tracking-widest pl-1">{{
__('Company Code') }}</label>
__('Company Code') }} <span class="text-rose-500 ml-0.5">*</span></label>
<input type="text" name="code" x-model="currentCompany.code" required
class="luxury-input w-full" placeholder="{{ __('e.g. TWSTAR') }}">
</div>
@@ -448,8 +450,8 @@
<div class="grid grid-cols-2 gap-3">
<div class="space-y-2">
<label class="text-xs font-black text-slate-500 uppercase tracking-widest pl-1">{{
__('Start Date') }}</label>
<input type="date" name="start_date" x-model="currentCompany.start_date"
__('Start Date') }} <span class="text-rose-500 ml-0.5">*</span></label>
<input type="date" name="start_date" x-model="currentCompany.start_date" required
class="luxury-input w-full px-2">
</div>
<div class="space-y-2">
@@ -508,7 +510,7 @@
</div>
<!-- Contact Section -->
<div class="space-y-6 pt-6 border-t border-slate-100 dark:border-slate-800 relative z-10">
<div class="space-y-6 pt-6 border-t border-slate-100 dark:border-slate-800 relative z-20">
<div class="flex items-center gap-3">
<div class="h-6 w-1 bg-amber-500 rounded-full"></div>
<h4 class="text-xs font-black text-slate-800 dark:text-white uppercase tracking-widest">{{
@@ -535,17 +537,10 @@
<label class="text-xs font-black text-slate-500 uppercase tracking-widest pl-1">{{
__('Status') }}</label>
<x-searchable-select
id="company-status"
name="status"
x-model="currentCompany.status"
:hasSearch="false"
x-init="$watch('currentCompany.status', (value) => {
$nextTick(() => {
const inst = HSSelect.getInstance($el);
if (inst) {
inst.setValue(String(value));
}
});
})"
>
<option value="1">{{ __('Active') }}</option>
<option value="0">{{ __('Disabled') }}</option>
@@ -561,7 +556,7 @@
</div>
<!-- Feature Toggles Section -->
<div class="space-y-6 pt-6 border-t border-slate-100 dark:border-slate-800 relative z-10">
<div class="space-y-6 pt-6 border-t border-slate-100 dark:border-slate-800 relative z-[5]">
<div class="flex items-center gap-3">
<div class="h-6 w-1 bg-cyan-500 rounded-full"></div>
<h4 class="text-xs font-black text-slate-800 dark:text-white uppercase tracking-widest">{{ __('Feature Settings') }}</h4>
@@ -684,19 +679,18 @@
<!-- Business Type -->
<div class="bg-slate-50 dark:bg-slate-800/40 p-5 rounded-2xl border border-slate-100 dark:border-slate-800/80">
<span class="text-xs font-bold text-slate-400 uppercase tracking-widest block mb-4">{{ __('Business Type') }}</span>
<div class="flex items-center gap-4">
<div class="flex-1">
<p class="text-[11px] font-black text-slate-400 uppercase tracking-widest mb-1.5">{{ __('Original') }}</p>
<span class="px-2.5 py-1 rounded-lg text-xs font-black uppercase tracking-widest"
<h4 class="text-[10px] font-black text-indigo-500 uppercase tracking-[0.2em] mb-4">{{ __('Business Type') }}</h4>
<div class="space-y-4">
<div class="flex items-center justify-between">
<span class="text-[11px] font-bold text-slate-400">{{ __('Original:') }}</span>
<span class="px-2.5 py-1 rounded-lg text-[11px] font-bold uppercase tracking-widest"
:class="detailCompany.original_type === 'buyout' ? 'bg-amber-500/10 text-amber-600' : 'bg-blue-500/10 text-blue-600'"
x-text="detailCompany.original_type === 'buyout' ? '{{ __('Buyout') }}' : '{{ __('Lease') }}'"></span>
</div>
<div class="w-px h-10 bg-slate-200 dark:bg-slate-700"></div>
<div class="flex-1 text-right">
<p class="text-[11px] font-black text-slate-400 uppercase tracking-widest mb-1.5">{{ __('Current') }}</p>
<span class="px-2.5 py-1 rounded-lg text-xs font-black uppercase tracking-widest"
:class="detailCompany.current_type === 'buyout' ? 'bg-amber-500/10 text-amber-600' : 'bg-blue-500/10 text-blue-600'"
<div class="flex items-center justify-between">
<span class="text-[11px] font-bold text-slate-400">{{ __('Current:') }}</span>
<span class="px-2.5 py-1 rounded-lg text-[11px] font-bold uppercase tracking-widest"
:class="detailCompany.current_type === 'buyout' ? 'bg-amber-500/10 text-amber-600 border border-amber-500/20' : 'bg-blue-500/10 text-blue-600 border border-blue-500/20'"
x-text="detailCompany.current_type === 'buyout' ? '{{ __('Buyout') }}' : '{{ __('Lease') }}'"></span>
</div>
</div>
@@ -704,11 +698,16 @@
<!-- Contract Period -->
<div class="bg-slate-50 dark:bg-slate-800/40 p-5 rounded-2xl border border-slate-100 dark:border-slate-800/80">
<span class="text-xs font-bold text-slate-400 uppercase tracking-widest block mb-2">{{ __('Contract Period') }}</span>
<h4 class="text-[10px] font-black text-indigo-500 uppercase tracking-[0.2em] mb-4">{{ __('Contract Period') }}</h4>
<div class="space-y-3 font-mono">
<div class="flex items-center gap-3">
<div class="text-base font-black font-mono text-slate-700 dark:text-slate-200" x-text="detailCompany.start_date || '--'"></div>
<span class="text-slate-300 text-xs"></span>
<div class="text-base font-black font-mono text-slate-700 dark:text-slate-200" x-text="detailCompany.end_date || '{{ __('Permanent') }}'"></div>
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-tighter min-w-[32px]">{{ __('From:') }}</span>
<div class="text-[13px] font-bold tracking-tighter text-slate-700 dark:text-slate-200" x-text="detailCompany.start_date || '--'"></div>
</div>
<div class="flex items-center gap-3">
<span class="text-[10px] font-bold text-slate-400 uppercase tracking-tighter min-w-[32px]">{{ __('To:') }}</span>
<div class="text-[13px] font-bold tracking-tighter text-slate-800 dark:text-white" :class="detailCompany.end_date_expired ? 'text-rose-500' : ''" x-text="detailCompany.end_date || '{{ __('Permanent') }}'"></div>
</div>
</div>
</div>
</div>

View File

@@ -21,7 +21,7 @@
"searchClasses" => "block w-[calc(100%-16px)] mx-2 py-2 px-3 text-sm border-slate-200 dark:border-white/10 rounded-lg focus:border-cyan-500 focus:ring-cyan-500 bg-slate-50 dark:bg-slate-900/50 dark:text-slate-200 placeholder:text-slate-400 dark:placeholder:text-slate-500",
"searchWrapperClasses" => "sticky top-0 bg-white/95 dark:bg-slate-900/95 backdrop-blur-md p-2 z-10",
"toggleClasses" => "hs-select-toggle luxury-select-toggle",
"dropdownClasses" => "hs-select-menu w-full bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border border-slate-200 dark:border-white/10 rounded-xl shadow-[0_20px_50px_rgba(0,0,0,0.3)] mt-2 z-[100] animate-luxury-in",
"dropdownClasses" => "hs-select-menu w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-white/10 rounded-xl shadow-[0_20px_50px_rgba(0,0,0,0.3)] mt-2 z-[100] animate-luxury-in",
"optionClasses" => "hs-select-option py-2.5 px-3 mb-0.5 text-sm text-slate-800 dark:text-slate-300 cursor-pointer hover:bg-slate-100 dark:hover:bg-cyan-500/10 dark:hover:text-cyan-400 rounded-lg flex items-center justify-between transition-all duration-300",
"optionTemplate" => '<div class="flex items-center justify-between w-full"><span data-title></span><span class="hs-select-active-indicator hidden text-cyan-500"><svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg></span></div>'
];