chore: Remove OneDrive and Google Drive storage options from config form

- Comment out OneDrive and Google Drive options in source and destination storage type selects
- Remove corresponding form templates for OneDrive and Google Drive authentication
- Temporarily disable these cloud storage options from the configuration interface
This commit is contained in:
StarFleetCPTN committed 2025-03-08 16:49:52 -08:00
1 parent 339299e08e
commit 6c96cdbec1
1 file changed
+290 -290
+290 -290
View File
@@ -350,8 +350,8 @@ templ ConfigForm(ctx context.Context, data ConfigFormData) {
<option value="ftp">FTP</option> <option value="ftp">FTP</option>
<option value="webdav">WebDAV</option> <option value="webdav">WebDAV</option>
<option value="nextcloud">NextCloud</option> <option value="nextcloud">NextCloud</option>
<option value="onedrive">OneDrive</option> //<option value="onedrive">OneDrive</option>
<option value="google_drive">Google Drive</option> //<option value="google_drive">Google Drive</option>
</select> </select>
</div> </div>
</div> </div>
@@ -907,156 +907,156 @@ templ ConfigForm(ctx context.Context, data ConfigFormData) {
</div> </div>
</template> </template>
<template x-if="sourceType === 'onedrive'"> // <template x-if="sourceType === 'onedrive'">
<div class="sm:col-span-6 space-y-6"> // <div class="sm:col-span-6 space-y-6">
<div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4"> // <div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4">
<div class="flex"> // <div class="flex">
<div class="flex-shrink-0"> // <div class="flex-shrink-0">
<i class="fas fa-info-circle text-yellow-400"></i> // <i class="fas fa-info-circle text-yellow-400"></i>
</div> // </div>
<div class="ml-3"> // <div class="ml-3">
<h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">OneDrive Authentication</h3> // <h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">OneDrive Authentication</h3>
<div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400"> // <div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400">
<p>OneDrive requires OAuth authentication. You'll need to:</p> // <p>OneDrive requires OAuth authentication. You'll need to:</p>
<ol class="list-decimal ml-4 mt-1 space-y-1"> // <ol class="list-decimal ml-4 mt-1 space-y-1">
<li>Register an application in the Microsoft Azure portal</li> // <li>Register an application in the Microsoft Azure portal</li>
<li>Add redirect URI: http://localhost:53682/</li> // <li>Add redirect URI: http://localhost:53682/</li>
<li>Save the application details below</li> // <li>Save the application details below</li>
</ol> // </ol>
</div> // </div>
</div> // </div>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label> // <label for="source_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="source_client_id" // name="source_client_id"
id="source_client_id" // id="source_client_id"
x-model="sourceClientId" // x-model="sourceClientId"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Azure application client ID"/> // placeholder="Azure application client ID"/>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label> // <label for="source_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="password" // type="password"
name="source_client_secret" // name="source_client_secret"
id="source_client_secret" // id="source_client_secret"
x-model="sourceClientSecret" // x-model="sourceClientSecret"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Azure application client secret"/> // placeholder="Azure application client secret"/>
</div> // </div>
<input type="hidden" name="source_client_secret" :value="sourceClientSecret"/> // <input type="hidden" name="source_client_secret" :value="sourceClientSecret"/>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_drive_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Drive ID (Optional)</label> // <label for="source_drive_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Drive ID (Optional)</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-hdd text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-hdd text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="source_drive_id" // name="source_drive_id"
id="source_drive_id" // id="source_drive_id"
x-model="sourceDriveId" // x-model="sourceDriveId"
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="OneDrive drive ID (leave empty for default)"/> // placeholder="OneDrive drive ID (leave empty for default)"/>
</div> // </div>
<p class="mt-2 text-sm text-secondary-500 dark:text-secondary-400">For shared or business drives</p> // <p class="mt-2 text-sm text-secondary-500 dark:text-secondary-400">For shared or business drives</p>
</div> // </div>
</div> // </div>
</template> // </template>
<template x-if="sourceType === 'google_drive'"> // <template x-if="sourceType === 'google_drive'">
<div class="sm:col-span-6 space-y-6"> // <div class="sm:col-span-6 space-y-6">
<div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4"> // <div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4">
<div class="flex"> // <div class="flex">
<div class="flex-shrink-0"> // <div class="flex-shrink-0">
<i class="fas fa-info-circle text-yellow-400"></i> // <i class="fas fa-info-circle text-yellow-400"></i>
</div> // </div>
<div class="ml-3"> // <div class="ml-3">
<h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">Google Drive Authentication</h3> // <h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">Google Drive Authentication</h3>
<div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400"> // <div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400">
<p>Google Drive requires OAuth authentication. You'll need to:</p> // <p>Google Drive requires OAuth authentication. You'll need to:</p>
<ol class="list-decimal ml-4 mt-1 space-y-1"> // <ol class="list-decimal ml-4 mt-1 space-y-1">
<li>Create a project in Google Cloud Console</li> // <li>Create a project in Google Cloud Console</li>
<li>Enable Google Drive API</li> // <li>Enable Google Drive API</li>
<li>Create OAuth credentials</li> // <li>Create OAuth credentials</li>
<li>Add redirect URI: http://localhost:53682/</li> // <li>Add redirect URI: http://localhost:53682/</li>
<li>Save the client details below</li> // <li>Save the client details below</li>
</ol> // </ol>
</div> // </div>
</div> // </div>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label> // <label for="source_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="source_client_id" // name="source_client_id"
id="source_client_id" // id="source_client_id"
x-model="sourceClientId" // x-model="sourceClientId"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Google OAuth client ID"/> // placeholder="Google OAuth client ID"/>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label> // <label for="source_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="password" // type="password"
name="source_client_secret" // name="source_client_secret"
id="source_client_secret" // id="source_client_secret"
x-model="sourceClientSecret" // x-model="sourceClientSecret"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Google OAuth client secret"/> // placeholder="Google OAuth client secret"/>
</div> // </div>
<input type="hidden" name="source_client_secret" :value="sourceClientSecret"/> // <input type="hidden" name="source_client_secret" :value="sourceClientSecret"/>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="source_team_drive" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Team Drive ID (Optional)</label> // <label for="source_team_drive" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Team Drive ID (Optional)</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-users text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-users text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="source_team_drive" // name="source_team_drive"
id="source_team_drive" // id="source_team_drive"
x-model="sourceTeamDrive" // x-model="sourceTeamDrive"
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Team Drive ID (leave empty for personal drive)"/> // placeholder="Team Drive ID (leave empty for personal drive)"/>
</div> // </div>
</div> // </div>
</div> // </div>
</template> // </template>
<div class="sm:col-span-6"> <div class="sm:col-span-6">
<label for="source_path" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Source Path</label> <label for="source_path" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Source Path</label>
@@ -1146,8 +1146,8 @@ templ ConfigForm(ctx context.Context, data ConfigFormData) {
<option value="ftp">FTP</option> <option value="ftp">FTP</option>
<option value="webdav">WebDAV</option> <option value="webdav">WebDAV</option>
<option value="nextcloud">NextCloud</option> <option value="nextcloud">NextCloud</option>
<option value="onedrive">OneDrive</option> // <option value="onedrive">OneDrive</option>
<option value="google_drive">Google Drive</option> // <option value="google_drive">Google Drive</option>
</select> </select>
</div> </div>
</div> </div>
@@ -1703,156 +1703,156 @@ templ ConfigForm(ctx context.Context, data ConfigFormData) {
</div> </div>
</template> </template>
<template x-if="destinationType === 'onedrive'"> // <template x-if="destinationType === 'onedrive'">
<div class="sm:col-span-6 space-y-6"> // <div class="sm:col-span-6 space-y-6">
<div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4"> // <div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4">
<div class="flex"> // <div class="flex">
<div class="flex-shrink-0"> // <div class="flex-shrink-0">
<i class="fas fa-info-circle text-yellow-400"></i> // <i class="fas fa-info-circle text-yellow-400"></i>
</div> // </div>
<div class="ml-3"> // <div class="ml-3">
<h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">OneDrive Authentication</h3> // <h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">OneDrive Authentication</h3>
<div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400"> // <div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400">
<p>OneDrive requires OAuth authentication. You'll need to:</p> // <p>OneDrive requires OAuth authentication. You'll need to:</p>
<ol class="list-decimal ml-4 mt-1 space-y-1"> // <ol class="list-decimal ml-4 mt-1 space-y-1">
<li>Register an application in the Microsoft Azure portal</li> // <li>Register an application in the Microsoft Azure portal</li>
<li>Add redirect URI: http://localhost:53682/</li> // <li>Add redirect URI: http://localhost:53682/</li>
<li>Save the application details below</li> // <li>Save the application details below</li>
</ol> // </ol>
</div> // </div>
</div> // </div>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label> // <label for="dest_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="dest_client_id" // name="dest_client_id"
id="dest_client_id" // id="dest_client_id"
x-model="destClientId" // x-model="destClientId"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Azure application client ID"/> // placeholder="Azure application client ID"/>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label> // <label for="dest_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="password" // type="password"
name="dest_client_secret" // name="dest_client_secret"
id="dest_client_secret" // id="dest_client_secret"
x-model="destClientSecret" // x-model="destClientSecret"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Azure application client secret"/> // placeholder="Azure application client secret"/>
</div> // </div>
<input type="hidden" name="dest_client_secret" :value="destClientSecret"/> // <input type="hidden" name="dest_client_secret" :value="destClientSecret"/>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_drive_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Drive ID (Optional)</label> // <label for="dest_drive_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Drive ID (Optional)</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-hdd text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-hdd text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="dest_drive_id" // name="dest_drive_id"
id="dest_drive_id" // id="dest_drive_id"
x-model="destDriveId" // x-model="destDriveId"
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="OneDrive drive ID (leave empty for default)"/> // placeholder="OneDrive drive ID (leave empty for default)"/>
</div> // </div>
<p class="mt-2 text-sm text-secondary-500 dark:text-secondary-400">For shared or business drives</p> // <p class="mt-2 text-sm text-secondary-500 dark:text-secondary-400">For shared or business drives</p>
</div> // </div>
</div> // </div>
</template> // </template>
<template x-if="destinationType === 'google_drive'"> // <template x-if="destinationType === 'google_drive'">
<div class="sm:col-span-6 space-y-6"> // <div class="sm:col-span-6 space-y-6">
<div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4"> // <div class="relative p-4 border border-yellow-300 bg-yellow-50 dark:bg-yellow-900/30 dark:border-yellow-700 rounded-lg mb-4">
<div class="flex"> // <div class="flex">
<div class="flex-shrink-0"> // <div class="flex-shrink-0">
<i class="fas fa-info-circle text-yellow-400"></i> // <i class="fas fa-info-circle text-yellow-400"></i>
</div> // </div>
<div class="ml-3"> // <div class="ml-3">
<h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">Google Drive Authentication</h3> // <h3 class="text-sm font-medium text-yellow-800 dark:text-yellow-300">Google Drive Authentication</h3>
<div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400"> // <div class="mt-2 text-sm text-yellow-700 dark:text-yellow-400">
<p>Google Drive requires OAuth authentication. You'll need to:</p> // <p>Google Drive requires OAuth authentication. You'll need to:</p>
<ol class="list-decimal ml-4 mt-1 space-y-1"> // <ol class="list-decimal ml-4 mt-1 space-y-1">
<li>Create a project in Google Cloud Console</li> // <li>Create a project in Google Cloud Console</li>
<li>Enable Google Drive API</li> // <li>Enable Google Drive API</li>
<li>Create OAuth credentials</li> // <li>Create OAuth credentials</li>
<li>Add redirect URI: http://localhost:53682/</li> // <li>Add redirect URI: http://localhost:53682/</li>
<li>Save the client details below</li> // <li>Save the client details below</li>
</ol> // </ol>
</div> // </div>
</div> // </div>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label> // <label for="dest_client_id" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client ID</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-id-card text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="dest_client_id" // name="dest_client_id"
id="dest_client_id" // id="dest_client_id"
x-model="destClientId" // x-model="destClientId"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Google OAuth client ID"/> // placeholder="Google OAuth client ID"/>
</div> // </div>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label> // <label for="dest_client_secret" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Client Secret</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-key text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="password" // type="password"
name="dest_client_secret" // name="dest_client_secret"
id="dest_client_secret" // id="dest_client_secret"
x-model="destClientSecret" // x-model="destClientSecret"
required // required
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Google OAuth client secret"/> // placeholder="Google OAuth client secret"/>
</div> // </div>
<input type="hidden" name="dest_client_secret" :value="destClientSecret"/> // <input type="hidden" name="dest_client_secret" :value="destClientSecret"/>
</div> // </div>
<div class="sm:col-span-4"> // <div class="sm:col-span-4">
<label for="dest_team_drive" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Team Drive ID (Optional)</label> // <label for="dest_team_drive" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Team Drive ID (Optional)</label>
<div class="relative"> // <div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"> // <div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-users text-secondary-400 dark:text-secondary-600"></i> // <i class="fas fa-users text-secondary-400 dark:text-secondary-600"></i>
</div> // </div>
<input // <input
type="text" // type="text"
name="dest_team_drive" // name="dest_team_drive"
id="dest_team_drive" // id="dest_team_drive"
x-model="destTeamDrive" // x-model="destTeamDrive"
class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500" // class="form-input pl-10 w-full rounded-lg border-secondary-300 dark:border-secondary-700 dark:bg-secondary-800 dark:text-secondary-100 focus:ring-primary-500 focus:border-primary-500"
placeholder="Team Drive ID (leave empty for personal drive)"/> // placeholder="Team Drive ID (leave empty for personal drive)"/>
</div> // </div>
</div> // </div>
</div> // </div>
</template> // </template>
<div class="sm:col-span-6"> <div class="sm:col-span-6">
<label for="destination_path" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Destination Path</label> <label for="destination_path" class="block text-sm font-medium text-secondary-700 dark:text-secondary-300 mb-1">Destination Path</label>