@xenon-device-management/xenon 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +446 -0
- package/lib/package.json +207 -0
- package/lib/public/assets/Layouts-7IT8aFLI.js +11 -0
- package/lib/public/assets/Layouts-DPMls9vh.css +1 -0
- package/lib/public/assets/ai-settings-BbnfgdEx.js +11 -0
- package/lib/public/assets/apps-CRMrI4_p.js +16 -0
- package/lib/public/assets/apps-CcM77dgg.css +1 -0
- package/lib/public/assets/badge-B1nKs8zj.css +1 -0
- package/lib/public/assets/badge-CSvl5xIU.js +11 -0
- package/lib/public/assets/button-CJlKn4PZ.css +1 -0
- package/lib/public/assets/button-CvLaGFYj.js +26 -0
- package/lib/public/assets/calendar-6w-D6Oaw.js +6 -0
- package/lib/public/assets/clock-DcdeWBPr.js +6 -0
- package/lib/public/assets/cpu-DiSoXT9n.js +6 -0
- package/lib/public/assets/device-explorer-CajM63OJ.js +193 -0
- package/lib/public/assets/device-explorer-CxdUAoTL.css +1 -0
- package/lib/public/assets/index-ByQwMN5T.js +174 -0
- package/lib/public/assets/index-C1DBaoSh.js +1 -0
- package/lib/public/assets/index-qzCez_kk.css +1 -0
- package/lib/public/assets/lock-B23ibZmo.js +6 -0
- package/lib/public/assets/maintenance-settings-CirzA6yG.js +6 -0
- package/lib/public/assets/mouse-pointer-2-Cz76SHFb.js +6 -0
- package/lib/public/assets/plus-BBwlIevt.js +6 -0
- package/lib/public/assets/session-dashboard-C2k7FFv_.css +1 -0
- package/lib/public/assets/session-dashboard-HPDtwPOZ.js +62 -0
- package/lib/public/assets/settings-DrZsZwdc.js +1 -0
- package/lib/public/assets/trash-2-DQpvzJec.js +6 -0
- package/lib/public/assets/useSocket-Dxsqae2a.js +16 -0
- package/lib/public/assets/webhook-settings-CDPgsgkb.css +1 -0
- package/lib/public/assets/webhook-settings-Cp-B4Nrw.js +1 -0
- package/lib/public/assets/zap-DovP6iow.js +6 -0
- package/lib/public/favicon.ico +0 -0
- package/lib/public/favicon.png +0 -0
- package/lib/public/favicon.svg +9 -0
- package/lib/public/index.html +46 -0
- package/lib/public/logo.svg +17 -0
- package/lib/public/logo192.png +0 -0
- package/lib/public/logo512.png +0 -0
- package/lib/public/manifest.json +25 -0
- package/lib/public/robots.txt +3 -0
- package/lib/schema.json +348 -0
- package/lib/src/InternalHttpClient.js +212 -0
- package/lib/src/PluginContext.js +29 -0
- package/lib/src/XenonCapabilityManager.js +199 -0
- package/lib/src/app/index.js +167 -0
- package/lib/src/app/routers/apps.js +79 -0
- package/lib/src/app/routers/config.js +131 -0
- package/lib/src/app/routers/control.js +835 -0
- package/lib/src/app/routers/dashboard.js +301 -0
- package/lib/src/app/routers/grid.js +352 -0
- package/lib/src/app/routers/reservation.js +190 -0
- package/lib/src/app/routers/webhook.js +83 -0
- package/lib/src/app/swagger-docs.js +203 -0
- package/lib/src/app/swagger.js +366 -0
- package/lib/src/chromeUtils.js +148 -0
- package/lib/src/commands/handle.js +19 -0
- package/lib/src/commands/index.js +8 -0
- package/lib/src/config.js +73 -0
- package/lib/src/dashboard/asset-manager.js +84 -0
- package/lib/src/dashboard/commands.js +284 -0
- package/lib/src/dashboard/event-manager.js +699 -0
- package/lib/src/dashboard/services/app-service.js +134 -0
- package/lib/src/dashboard/services/failure-analysis-service.js +173 -0
- package/lib/src/dashboard/services/session-service.js +113 -0
- package/lib/src/data-service/CircuitBreaker.js +83 -0
- package/lib/src/data-service/config-service.js +155 -0
- package/lib/src/data-service/db.js +122 -0
- package/lib/src/data-service/device-service.js +320 -0
- package/lib/src/data-service/device-store.interface.js +2 -0
- package/lib/src/data-service/device-store.js +345 -0
- package/lib/src/data-service/pending-sessions-service.js +25 -0
- package/lib/src/data-service/pluginArgs.js +25 -0
- package/lib/src/data-service/prisma-service.js +31 -0
- package/lib/src/data-service/prisma-store.js +385 -0
- package/lib/src/data-service/queue-service.js +150 -0
- package/lib/src/data-service/web-config-service.js +130 -0
- package/lib/src/device-managers/AndroidDeviceManager.js +1155 -0
- package/lib/src/device-managers/ChromeDriverManager.js +68 -0
- package/lib/src/device-managers/HealthMonitorService.js +325 -0
- package/lib/src/device-managers/IOSDeviceManager.js +351 -0
- package/lib/src/device-managers/NodeDevices.js +82 -0
- package/lib/src/device-managers/android/AndroidStreamService.js +370 -0
- package/lib/src/device-managers/android/DeviceLockManager.js +45 -0
- package/lib/src/device-managers/cloud/CapabilityManager.js +26 -0
- package/lib/src/device-managers/cloud/Devices.js +86 -0
- package/lib/src/device-managers/iOSTracker.js +44 -0
- package/lib/src/device-managers/index.js +89 -0
- package/lib/src/device-managers/ios/IOSDiscoveryService.js +268 -0
- package/lib/src/device-managers/ios/IOSStreamService.js +893 -0
- package/lib/src/device-managers/ios/WDAClient.js +866 -0
- package/lib/src/device-utils.js +663 -0
- package/lib/src/enums/Capabilities.js +8 -0
- package/lib/src/enums/Cloud.js +11 -0
- package/lib/src/enums/Platform.js +9 -0
- package/lib/src/enums/SessionType.js +9 -0
- package/lib/src/enums/SocketEvents.js +15 -0
- package/lib/src/helpers/UniversalMjpegProxy.js +273 -0
- package/lib/src/helpers/index.js +229 -0
- package/lib/src/index.js +95 -0
- package/lib/src/interceptors/CommandInterceptor.js +524 -0
- package/lib/src/interfaces/ICloudManager.js +2 -0
- package/lib/src/interfaces/IDevice.js +2 -0
- package/lib/src/interfaces/IDeviceFilterOptions.js +2 -0
- package/lib/src/interfaces/IDeviceManager.js +2 -0
- package/lib/src/interfaces/IOptions.js +2 -0
- package/lib/src/interfaces/IPluginArgs.js +55 -0
- package/lib/src/interfaces/ISessionCapability.js +2 -0
- package/lib/src/logger.js +225 -0
- package/lib/src/plugin.js +244 -0
- package/lib/src/prisma.js +12 -0
- package/lib/src/profiling/AndroidAppProfiler.js +213 -0
- package/lib/src/proxy/wd-command-proxy.js +221 -0
- package/lib/src/scripts/generate-database-migration.js +59 -0
- package/lib/src/scripts/initialize-database.js +55 -0
- package/lib/src/scripts/install-go-ios.js +66 -0
- package/lib/src/scripts/prepare-prisma.js +89 -0
- package/lib/src/services/AICommandService.js +143 -0
- package/lib/src/services/AIService.js +466 -0
- package/lib/src/services/CleanupService.js +141 -0
- package/lib/src/services/EventBus.js +74 -0
- package/lib/src/services/InspectorService.js +395 -0
- package/lib/src/services/MetricsService.js +134 -0
- package/lib/src/services/NetworkConditioningService.js +173 -0
- package/lib/src/services/NotificationService.js +163 -0
- package/lib/src/services/RequestLogService.js +252 -0
- package/lib/src/services/ResourceIsolationService.js +122 -0
- package/lib/src/services/SecurityService.js +120 -0
- package/lib/src/services/ServerManager.js +284 -0
- package/lib/src/services/SessionHeartbeatService.js +158 -0
- package/lib/src/services/SessionLifecycleService.js +572 -0
- package/lib/src/services/SocketClient.js +71 -0
- package/lib/src/services/SocketServer.js +87 -0
- package/lib/src/services/TracingService.js +132 -0
- package/lib/src/services/VideoPipelineService.js +220 -0
- package/lib/src/services/healing/FuzzyXmlHealingProvider.js +333 -0
- package/lib/src/services/healing/HealEtalonService.js +98 -0
- package/lib/src/services/healing/HealedLocatorGenerator.js +132 -0
- package/lib/src/services/healing/HealingOrchestrator.js +165 -0
- package/lib/src/services/healing/LlmHealingProvider.js +77 -0
- package/lib/src/services/healing/OcrHealingProvider.js +119 -0
- package/lib/src/services/healing/ResilioTreeHealingProvider.js +100 -0
- package/lib/src/services/healing/VisualAiHealingProvider.js +90 -0
- package/lib/src/services/healing/types.js +12 -0
- package/lib/src/services/omni-vision/OmniVisionService.js +718 -0
- package/lib/src/services/omni-vision/VisionAssertionService.js +68 -0
- package/lib/src/sessions/CloudSession.js +42 -0
- package/lib/src/sessions/LocalSession.js +313 -0
- package/lib/src/sessions/RemoteSession.js +287 -0
- package/lib/src/sessions/SessionManager.js +238 -0
- package/lib/src/sessions/XenonSession.js +44 -0
- package/lib/src/types/CLIArgs.js +2 -0
- package/lib/src/types/CloudArgs.js +2 -0
- package/lib/src/types/CloudSchema.js +131 -0
- package/lib/src/types/DeviceType.js +2 -0
- package/lib/src/types/DeviceUpdate.js +2 -0
- package/lib/src/types/IOSDevice.js +2 -0
- package/lib/src/types/Platform.js +2 -0
- package/lib/src/types/SessionStatus.js +11 -0
- package/lib/src/validators/CapabilityValidator.js +93 -0
- package/lib/test/e2e/android/conf.spec.js +43 -0
- package/lib/test/e2e/android/conf2.spec.js +44 -0
- package/lib/test/e2e/android/conf3.spec.js +44 -0
- package/lib/test/e2e/e2ehelper.js +113 -0
- package/lib/test/e2e/hubnode/forward-request.spec.js +224 -0
- package/lib/test/e2e/hubnode/hubnode.spec.js +214 -0
- package/lib/test/e2e/ios/conf1.spec.js +39 -0
- package/lib/test/e2e/ios/conf2.spec.js +39 -0
- package/lib/test/e2e/plugin-harness.js +236 -0
- package/lib/test/e2e/plugin.spec.js +97 -0
- package/lib/test/e2e/telemetry_verification.spec.js +83 -0
- package/lib/test/e2e/video-recording-test.spec.js +63 -0
- package/lib/test/helpers/test-container.js +112 -0
- package/lib/test/integration/androidDevices.spec.js +137 -0
- package/lib/test/integration/cliArgs.js +73 -0
- package/lib/test/integration/ios/01iOSSimulator.spec.js +291 -0
- package/lib/test/integration/ios/02iOSDevices.spec.js +75 -0
- package/lib/test/integration/testHelpers.js +74 -0
- package/lib/test/unit/AndroidDeviceManager.spec.js +178 -0
- package/lib/test/unit/ChromeDriverManager.spec.js +26 -0
- package/lib/test/unit/CleanupService.spec.js +21 -0
- package/lib/test/unit/DeviceModel.spec.js +157 -0
- package/lib/test/unit/FuzzyXmlHealingProvider.test.js +294 -0
- package/lib/test/unit/GetAdbOriginal.js +42 -0
- package/lib/test/unit/HealingCascade.test.js +128 -0
- package/lib/test/unit/IOSDeviceManager.spec.js +261 -0
- package/lib/test/unit/RemoteIOs.spec.js +78 -0
- package/lib/test/unit/ResilioTreeHealingProvider.test.js +96 -0
- package/lib/test/unit/commands.spec.js +27 -0
- package/lib/test/unit/config.spec.js +27 -0
- package/lib/test/unit/device-service.spec.js +307 -0
- package/lib/test/unit/device-utils.spec.js +313 -0
- package/lib/test/unit/fixtures/device.config.js +4 -0
- package/lib/test/unit/fixtures/devices.js +89 -0
- package/lib/test/unit/helpers.spec.js +62 -0
- package/lib/test/unit/omni-vision.spec.js +100 -0
- package/lib/test/unit/plugin.spec.js +133 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +207 -0
- package/prisma/data.db +0 -0
- package/prisma/dev.db +0 -0
- package/prisma/dev.db-journal +0 -0
- package/prisma/migrations/20231011074725_initial_tables/migration.sql +47 -0
- package/prisma/migrations/20231226115334_update_session_log/migration.sql +2 -0
- package/prisma/migrations/20251204113710_add_video_recording_enabled/migration.sql +29 -0
- package/prisma/migrations/20251204132449_add_log_table/migration.sql +11 -0
- package/prisma/migrations/20251205050111_add_profiling_support/migration.sql +47 -0
- package/prisma/migrations/20251205050947_add_is_error_field/migration.sql +24 -0
- package/prisma/migrations/20260126201337_add_app_model/migration.sql +18 -0
- package/prisma/migrations/20260130115722_add_performance_trace_and_xenon_sync/migration.sql +2 -0
- package/prisma/migrations/20260130135114_add_device_models/migration.sql +57 -0
- package/prisma/migrations/20260130140655_make_systemport_optional/migration.sql +45 -0
- package/prisma/migrations/20260130140932_make_device_fields_optional/migration.sql +45 -0
- package/prisma/migrations/20260130141040_final_schema_fix/migration.sql +45 -0
- package/prisma/migrations/20260130143234_add_device_health_fields/migration.sql +4 -0
- package/prisma/migrations/20260130144921_add_failure_category/migration.sql +2 -0
- package/prisma/migrations/20260131151456_add_webhook_config/migration.sql +10 -0
- package/prisma/migrations/20260201094507_add_device_tags/migration.sql +11 -0
- package/prisma/migrations/20260201103410_add_managed_process/migration.sql +15 -0
- package/prisma/migrations/20260201140637_add_web_config/migration.sql +22 -0
- package/prisma/migrations/20260201162232_add_session_progress/migration.sql +2 -0
- package/prisma/migrations/20260201174231_add_total_healed_count/migration.sql +2 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +210 -0
- package/schema.json +348 -0
- package/scripts/build-xenon.sh +32 -0
- package/scripts/dev/debug-gemini.ts +44 -0
- package/scripts/generate-types-from-schema.js +86 -0
- package/scripts/install-compatible-driver.js +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Outfit:wght@400;600;700&display=swap";:root{--bg-page: #0a0a0f;--bg-surface: #0f0f1a;--bg-card: #12121f;--bg-card-hover: #161625;--bg-master: #0a0a0f;--bg-elevated: #1a1a2e;--color-primary: #00ff88;--primary-enterprise: #00ff88;--primary-focus: rgba(0, 255, 136, .4);--color-amber: #ffb800;--color-red: #ff4444;--color-blue: #00aaff;--color-purple: #8b5cf6;--border-subtle: #1a1a2e;--border-visible: #1a1a2e;--border-hover: #252540;--border-enterprise: #1a1a2e;--text-h1: #e8e8ff;--text-bright: #e8e8ff;--text-body: #c8c8e8;--text-muted: #8888aa;--text-dim: #4a4a6a;--gap-1: 8px;--gap-2: 16px;--gap-3: 24px;--gap-4: 32px;--gap-5: 48px;--gap-6: 64px;--ease-standard: cubic-bezier(.4, 0, .2, 1);--duration-fast: .15s;--duration-base: .25s;--radius-enterprise: 8px;--shadow-card: 0 4px 20px rgba(0, 0, 0, .4);--shadow-elevation: 0 10px 40px rgba(0, 0, 0, .5)}.settings-container{padding:24px 32px;max-width:1200px;margin:0 auto;color:var(--text-body);animation:fadeIn .3s ease;min-height:calc(100vh - 40px);display:flex;flex-direction:column;font-family:Inter,-apple-system,sans-serif;position:relative;background:var(--bg-page)}.settings-header{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border-visible)}.settings-header h2{margin:0;font-size:1.75rem;font-weight:700;font-family:Outfit,sans-serif;color:var(--text-bright);letter-spacing:-.01em;text-transform:uppercase}.settings-title-group{display:flex;align-items:center;gap:12px}.settings-title-group .settings-icon{color:var(--text-muted);flex-shrink:0}.settings-subtitle{color:var(--text-muted);font-size:.85rem;margin-top:6px;line-height:1.5}.settings-subtitle span{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--text-dim)}.badge-elite{font-size:10px;padding:3px 8px;border-radius:4px;background:#00ff8814;color:var(--color-primary);border:1px solid rgba(0,255,136,.25);font-family:JetBrains Mono,monospace;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.setting-card{background:var(--bg-card);border:1px solid var(--border-visible);border-radius:var(--radius-enterprise);padding:20px;transition:all .2s ease;position:relative;display:flex;flex-direction:column;gap:14px;overflow:hidden}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:6px;font-size:var(--fs-xs);font-weight:800;font-family:JetBrains Mono,monospace;background:#0006;border:1px solid var(--border-visible);text-transform:uppercase;letter-spacing:.05em}.status-pill.success{border-color:#00ff884d;color:var(--color-primary)}.status-pill.error{border-color:#ff44444d;color:var(--color-red)}.locked-indicator{display:flex;align-items:center;gap:8px;font-size:.75rem;color:var(--text-dim);font-family:JetBrains Mono,monospace;margin-top:var(--gap-2)}.locked-indicator code{background:#ffffff0d;color:var(--text-muted);padding:2px 6px;border-radius:4px}.settings-content{display:flex;flex-direction:column;gap:var(--gap-4);flex-grow:1}.settings-section h3{display:flex;align-items:center;gap:var(--gap-1);font-size:1.125rem;color:var(--text-h1);font-weight:700;margin-bottom:var(--gap-1)}.settings-content{display:flex;flex-direction:column;gap:var(--space-xl);flex-grow:1;position:relative}.settings-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap-3);margin-bottom:var(--gap-5)}.settings-grid>*{grid-column:span 12}@media (min-width: 1024px){.settings-grid{grid-template-columns:repeat(3,1fr)}.settings-grid>*{grid-column:span 1}}.section-description{color:var(--text-muted);font-size:.875rem;margin-bottom:var(--gap-3);max-width:640px;line-height:1.6}.setting-card{background:var(--bg-card);border:1px solid var(--border-visible);border-radius:var(--radius-enterprise);padding:20px;position:relative;transition:all .2s ease;overflow:hidden;display:flex;flex-direction:column;gap:14px}.setting-card:hover{border-color:var(--border-hover);background:var(--bg-card-hover)}.setting-card-header{display:flex;align-items:center;gap:8px;color:var(--color-primary)}.setting-card-header svg{flex-shrink:0}.setting-card h4{margin:0;font-size:.95rem;font-weight:600;font-family:Outfit,sans-serif;color:var(--text-bright)}.setting-card p{color:var(--text-muted);font-size:.8rem;margin:0;line-height:1.5}.input-group{display:flex;align-items:center;gap:8px;background:var(--bg-page);border-radius:6px;padding:0 12px;height:42px;border:1px solid var(--border-visible);transition:all .2s ease;position:relative}.input-group:hover{border-color:var(--border-hover)}.mesh-gradient-infra .input-group:focus-within,.mesh-gradient-ai .input-group:focus-within{border-color:var(--color-primary);background:#00ff8808;box-shadow:0 0 0 1px var(--color-primary)}.input-group input,.input-group select{background:transparent;border:none;color:var(--text-bright);font-size:.95rem;width:100%;height:100%;outline:none;font-family:JetBrains Mono,monospace;font-weight:500}.input-group input::placeholder{color:var(--text-dim);opacity:.5}.input-group select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 0 center;padding-right:2rem}.input-group .code-font{color:var(--text-dim);font-size:.7rem;font-weight:500;letter-spacing:1px;font-family:JetBrains Mono,monospace}.setting-hint-clean{margin-top:4px;font-size:.7rem;color:var(--text-dim);font-style:italic;padding-left:2px}.health-monitor-alert{display:flex;align-items:center;gap:12px;background:#ffb8000f;border:1px solid rgba(255,184,0,.2);padding:12px 16px;border-radius:6px;color:var(--color-amber);font-size:11px;font-weight:500;font-family:JetBrains Mono,monospace;text-transform:uppercase}.status-banner{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:6px;font-size:11px;animation:slideIn .3s ease;margin-top:16px;font-family:JetBrains Mono,monospace;text-transform:uppercase;font-weight:500}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.status-banner.success{background:#00ff880f;border:1px solid rgba(0,255,136,.25);color:var(--color-primary)}.status-banner.error{background:#ff44440f;border:1px solid rgba(255,68,68,.25);color:var(--color-red)}.cron-presets{margin-top:24px;padding-top:16px;border-top:1px solid var(--border-visible)}.presets-label{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:500;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px}.presets-grid{display:flex;flex-wrap:wrap;gap:8px}.preset-chip{padding:5px 12px;margin:2px;background:var(--bg-page);border:1px solid var(--border-visible);color:var(--text-muted);font-size:10px;font-weight:500;border-radius:4px;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace;white-space:nowrap}.preset-chip:hover{background:var(--bg-elevated);color:var(--text-bright);border-color:var(--border-hover)}.preset-chip.active{background:#00ff8814;color:var(--color-primary);border-color:#00ff884d}.settings-footer{position:sticky;bottom:0;background:#0a0a0ff2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--border-visible);padding:16px 32px;display:flex;justify-content:space-between;align-items:center;margin-top:auto;z-index:1000}.footer-right{display:flex;gap:16px}.save-btn{background:var(--color-primary);color:var(--bg-page);padding:10px 24px;border-radius:6px;font-weight:600;font-size:11px;border:none;transition:all .2s;display:flex;align-items:center;gap:6px;text-transform:uppercase;font-family:JetBrains Mono,monospace}.save-btn:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 0 30px var(--primary-glow)}.save-btn:active:not(:disabled){transform:translateY(0)}.reset-btn{background:transparent;border:1px solid var(--border-visible);color:var(--text-muted);padding:9px 20px;border-radius:6px;font-weight:500;font-size:11px;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace}.reset-btn:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-bright);border-color:var(--border-hover)}.reset-to-defaults-btn{background:transparent;border:1px solid rgba(255,68,68,.2);color:#f44;padding:9px 20px;border-radius:6px;font-size:10px;font-weight:500;display:flex;align-items:center;gap:6px;transition:all .2s;text-transform:uppercase;font-family:JetBrains Mono,monospace}.reset-to-defaults-btn:hover:not(:disabled){background:#ff4d4d0d;border-color:#ff4d4d}.save-btn:disabled,.reset-btn:disabled,.reset-to-defaults-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;filter:grayscale(.2)}.setting-field{display:flex;flex-direction:column;gap:var(--gap-1);width:100%}.setting-input-wrapper{display:flex;align-items:center;gap:var(--gap-2);background:var(--bg-master);border:1px solid var(--border-enterprise);border-radius:6px;padding:8px 12px;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.setting-input-wrapper:focus-within{border-color:var(--primary-enterprise);box-shadow:0 0 0 2px var(--primary-focus)}.setting-input-wrapper input,.setting-input-wrapper select{background:transparent;border:none;color:var(--text-body);font-size:.875rem;width:100%;outline:none}.setting-hint-clean{font-size:.75rem;color:var(--text-dim);margin-top:var(--gap-1)}.settings-loading{height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap-2);color:var(--text-muted)}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 640px){.settings-container{padding:var(--gap-3)}.settings-footer{flex-direction:column-reverse;gap:var(--gap-2);padding:var(--gap-3)}.reset-btn,.save-btn,.reset-to-defaults-btn{width:100%;justify-content:center}}.glow-error{box-shadow:0 0 15px #ef444426;border-color:#ef444466!important;animation:pulse-error 2s infinite}@keyframes pulse-error{0%{box-shadow:0 0 10px #ef44441a}50%{box-shadow:0 0 20px #ef444440}to{box-shadow:0 0 10px #ef44441a}}.critical-alert-card{background:#7f1d1d4d;border:2px solid var(--color-red);border-radius:var(--radius-enterprise);overflow:hidden;margin-top:var(--gap-4);box-shadow:0 10px 30px #dc262666;animation:shake-entry .4s ease-out}@keyframes shake-entry{0%{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-5px)}to{transform:translate(0)}}.critical-header{background:var(--color-red);color:var(--text-bright);padding:16px 24px;display:flex;align-items:center;gap:12px;font-weight:700;font-size:1.1rem;letter-spacing:.02em}.setting-input-wrapper select{background:transparent;color:var(--text-body);font-family:Inter,sans-serif;font-weight:500;cursor:pointer;padding-right:32px;-moz-appearance:none;appearance:none;-webkit-appearance:none;color-scheme:dark}.setting-input-wrapper{position:relative}.setting-input-wrapper:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--text-dim);pointer-events:none}.setting-input-wrapper:hover:after{border-top-color:var(--primary-enterprise)}.setting-input-wrapper select option{background-color:var(--bg-surface);color:var(--text-body);padding:12px}.critical-body{padding:24px;color:#fca5a5}.critical-body p{margin:0 0 16px;line-height:1.6;font-size:.95rem}.terminal-block-critical{background:var(--bg-page);border:1px solid rgba(127,29,29,.6);border-radius:8px;padding:16px;font-family:JetBrains Mono,monospace;font-size:.85rem;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px}.terminal-block-critical code{color:#a5f3fc;font-weight:600}.copy-btn-critical{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.copy-btn-critical:hover{background:#fff3;transform:scale(1.05)}.setting-card{background:var(--bg-card);border:1px solid var(--border-visible);position:relative}.setting-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.15;z-index:0;background:linear-gradient(to bottom,#fff0,#fff0 50%,#00000026 50%,#00000026);background-size:100% 4px;border-radius:inherit}.setting-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-enterprise);padding:1px;background:linear-gradient(180deg,#ffffff0f,#fff0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.setting-input-wrapper:focus-within{border-color:var(--primary-enterprise);background:#22c55e08;box-shadow:0 0 0 1px var(--primary-enterprise),0 0 15px #22c55e33,inset 0 0 0 1px #22c55e1a;transform:translateY(-1px)}.live-signal{width:6px;height:6px;background-color:var(--color-primary);border-radius:50%;margin-right:6px;position:relative}.live-signal:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:var(--color-primary);animation:ping-signal 1.5s cubic-bezier(0,0,.2,1) infinite}@keyframes ping-signal{75%,to{transform:scale(2.5);opacity:0}}.input-container{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);height:42px}.status-pill{height:42px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.card-header-dense{border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:16px;margin-bottom:24px}.section-description-dense{color:var(--text-muted);font-size:.8rem;margin:0;line-height:1.5;max-width:500px}.form-field{display:flex;flex-direction:column;gap:10px}.field-label{font-size:.75rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding-left:2px}.status-badge{display:flex;align-items:center;gap:8px;padding:0 16px;border-radius:6px;font-size:.8rem;font-weight:600;font-family:JetBrains Mono,monospace;height:42px;width:100%;transition:all .2s}.status-badge.success-filled{background:#22c55e26;color:#4ade80;border:1px solid rgba(34,197,94,.2)}.status-badge.error-filled{background:#ef444426;color:#f87171;border:1px solid rgba(239,68,68,.2)}.ghost-btn{background:transparent;border:1px solid rgba(255,255,255,.1);color:var(--text-muted);padding:0 20px;height:40px;border-radius:6px;font-weight:600;font-size:.85rem;transition:all .2s;display:flex;align-items:center;gap:8px}.ghost-btn:hover{background:#ffffff0d;color:var(--text-body);border-color:#fff3}.save-btn.primary{height:40px;box-shadow:0 4px 12px #22c55e40}.ai-provider-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--gap-2)}.ai-provider-card{display:flex;flex-direction:column;gap:12px;padding:16px 20px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#ffffff08;cursor:pointer;transition:all .2s ease;text-align:left;color:var(--text-body)}.ai-provider-card:hover:not(.disabled){border-color:#fff3;background:#ffffff0f}.ai-provider-card.active{border-color:var(--primary-enterprise);background:#22c55e0f;box-shadow:0 0 0 1px var(--primary-enterprise),0 4px 16px #22c55e1f}.ai-provider-card.disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.5)}.ai-provider-card-header{display:flex;align-items:center;gap:12px}.ai-provider-icon{width:36px;height:36px;border-radius:8px;background:#ffffff0f;display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0}.ai-provider-card.active .ai-provider-icon{background:#22c55e26;color:var(--primary-enterprise)}.ai-provider-info{display:flex;flex-direction:column;gap:2px;min-width:0}.ai-provider-name{font-weight:700;font-size:.95rem;color:var(--text-h1)}.ai-provider-desc{font-size:.75rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-provider-status{display:flex;align-items:center}.ai-config-display{display:flex;flex-direction:column;gap:1px;background:#ffffff0a;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.06)}.ai-config-row{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:#02061780}.ai-config-row+.ai-config-row{border-top:1px solid rgba(255,255,255,.04)}.ai-config-label{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.ai-config-value{font-size:.9rem;font-weight:500;color:var(--text-h1);display:flex;align-items:center;gap:8px}.ai-config-value.mono{font-family:JetBrains Mono,monospace;font-size:.85rem;color:var(--text-body)}.ai-config-default{font-size:var(--fs-xs);background:#ffffff0f;color:var(--text-dim);padding:2px 6px;border-radius:4px;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.05em}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{c as j,r as l,j as e,B as u,d as f,g as C,i as A,T as z}from"./index-ByQwMN5T.js";import{X as x}from"./index-C1DBaoSh.js";import{A as P}from"./Layouts-7IT8aFLI.js";import{C as w}from"./cpu-DiSoXT9n.js";import{L as v}from"./lock-B23ibZmo.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const I=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],k=j("globe",I);/**
|
|
7
|
+
* @license lucide-react v0.555.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const B=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],E=j("server",B),_=()=>{const[s,d]=l.useState({aiProvider:"gemini",aiModel:"",aiBaseUrl:"",geminiModel:"",openaiModel:"",anthropicModel:"",ollamaModel:"",geminiSet:!1,openaiSet:!1,anthropicSet:!1}),[N,m]=l.useState(!0),[y,g]=l.useState(!1),[o,n]=l.useState(null);l.useEffect(()=>{p()},[]);const p=async()=>{m(!0);try{const i=await x.getGlobalConfig();d({aiProvider:i.aiProvider||"gemini",aiModel:i.aiModel||"",aiBaseUrl:i.aiBaseUrl||"",geminiModel:i.geminiModel||"",openaiModel:i.openaiModel||"",anthropicModel:i.anthropicModel||"",ollamaModel:i.ollamaModel||"",geminiSet:i.geminiSet||!1,openaiSet:i.openaiSet||!1,anthropicSet:i.anthropicSet||!1})}catch(i){console.error("Failed to load AISettings",i),n({type:"error",message:"Failed to access AI configuration."})}finally{m(!1)}},S=async()=>{g(!0),n(null);try{await x.updateGlobalConfig({aiProvider:s.aiProvider}),n({type:"success",message:"Active provider updated successfully."}),setTimeout(()=>n(null),5e3)}catch(i){console.error("Failed to save AISettings",i),n({type:"error",message:"Failed to persist updates."})}finally{g(!1)}},t=[{id:"gemini",name:"Google Gemini",description:"Gemini 1.5 Pro — Multimodal reasoning",icon:e.jsx(u,{size:18}),isConfigured:!!s.geminiSet},{id:"openai",name:"OpenAI",description:"GPT-4o — OpenAI v1 compatible",icon:e.jsx(w,{size:18}),isConfigured:!!s.openaiSet},{id:"anthropic",name:"Anthropic",description:"Claude 3.5 Sonnet — Advanced analysis",icon:e.jsx(f,{size:18}),isConfigured:!!s.anthropicSet},{id:"ollama",name:"Ollama",description:"Local / Self-hosted — No API key required",icon:e.jsx(E,{size:18}),isConfigured:!!s.ollamaModel||!!s.aiModel||!!s.aiBaseUrl}],a=t.find(i=>i.id===s.aiProvider),M=t.filter(i=>i.isConfigured).length,r=i=>{switch(i){case"gemini":return"gemini-3-flash-preview";case"openai":return"gpt-4o";case"anthropic":return"claude-3-5-sonnet-20240620";case"ollama":return"llama3";default:return"—"}},b=i=>{switch(i){case"ollama":return"http://localhost:11434";default:return"Provider default"}};return N?e.jsxs("div",{className:"settings-loading",children:[e.jsx(C,{className:"animate-spin",size:32}),e.jsx("span",{children:"Synchronizing Global State..."})]}):e.jsxs("div",{className:"settings-container mesh-gradient-ai",children:[e.jsx("div",{className:"scanline",style:{position:"absolute",inset:0,pointerEvents:"none",opacity:.05,zIndex:1001}}),e.jsxs("div",{className:"settings-header",children:[e.jsxs("div",{className:"settings-title-group",children:[e.jsx(u,{className:"settings-icon ai-engine-icon",size:28}),e.jsx("h2",{children:"AI Engine Configuration"})]}),e.jsxs("p",{className:"settings-subtitle",children:["All credentials and endpoints are managed via environment variables.",e.jsx("br",{}),e.jsxs("span",{style:{fontSize:"0.85rem",opacity:.7},children:[e.jsx(v,{size:12,style:{display:"inline",marginBottom:-2,marginRight:4}}),"Select the active provider from configured options below."]})]})]}),e.jsxs("div",{className:"settings-content",children:[e.jsxs("div",{className:"settings-grid",children:[e.jsxs("div",{className:"setting-card stagger-1",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(f,{size:16}),e.jsx("h4",{children:"Provider Registry"}),e.jsxs("span",{className:"badge-elite",style:{marginLeft:"auto"},children:[M," / ",t.length," CONFIGURED"]})]}),e.jsx("p",{className:"section-description-dense",children:"Providers are activated via environment variables. Select a configured engine to activate."}),e.jsx("div",{className:"ai-provider-grid",children:t.map(i=>{const h=s.aiProvider===i.id,c=i.isConfigured;return e.jsxs("button",{className:`ai-provider-card ${h?"active":""} ${c?"":"disabled"}`,onClick:()=>c&&d({...s,aiProvider:i.id}),disabled:!c,title:c?`Select ${i.name}`:`Set XENON_${i.id.toUpperCase()}_API_KEY or model/URL to enable`,children:[e.jsxs("div",{className:"ai-provider-card-header",children:[e.jsx("div",{className:"ai-provider-icon",children:i.icon}),e.jsxs("div",{className:"ai-provider-info",children:[e.jsx("span",{className:"ai-provider-name",children:i.name}),e.jsx("span",{className:"ai-provider-desc",children:i.description})]})]}),e.jsx("div",{className:"ai-provider-status",children:h?e.jsxs("span",{className:"status-badge success-filled",children:[e.jsx("div",{className:"live-signal"}),"ACTIVE"]}):i.isConfigured?e.jsxs("span",{className:"status-badge success-filled",children:[e.jsx("div",{className:"live-signal"}),"READY"]}):e.jsxs("span",{className:"status-badge error-filled",children:[e.jsx(v,{size:10}),"NOT SET"]})})]},i.id)})})]}),e.jsxs("div",{className:"setting-card stagger-2",children:[e.jsxs("div",{className:"setting-card-header",children:[e.jsx(k,{size:16}),e.jsx("h4",{children:"Runtime Configuration"})]}),e.jsx("p",{className:"section-description-dense",children:"Environmental overrides for AI model endpoints and identifiers."}),e.jsxs("div",{className:"ai-config-display",children:[e.jsxs("div",{className:"ai-config-row",children:[e.jsx("span",{className:"ai-config-label",children:"Active Provider"}),e.jsxs("span",{className:"ai-config-value",children:[a==null?void 0:a.icon,(a==null?void 0:a.name)||"—"]})]}),e.jsxs("div",{className:"ai-config-row",children:[e.jsx("span",{className:"ai-config-label",children:"Model"}),e.jsxs("span",{className:"ai-config-value mono",children:[s.aiProvider==="gemini"&&(s.geminiModel||s.aiModel||r("gemini")),s.aiProvider==="openai"&&(s.openaiModel||s.aiModel||r("openai")),s.aiProvider==="anthropic"&&(s.anthropicModel||s.aiModel||r("anthropic")),s.aiProvider==="ollama"&&(s.ollamaModel||s.aiModel||r("ollama")),!s.aiModel&&!s.geminiModel&&!s.openaiModel&&!s.anthropicModel&&!s.ollamaModel&&e.jsx("span",{className:"ai-config-default",children:"default"})]})]}),e.jsxs("div",{className:"ai-config-row",children:[e.jsx("span",{className:"ai-config-label",children:"Base URL"}),e.jsxs("span",{className:"ai-config-value mono",children:[s.aiBaseUrl||b(s.aiProvider),!s.aiBaseUrl&&e.jsx("span",{className:"ai-config-default",children:"default"})]})]})]})]})]}),o&&e.jsxs("div",{className:`status-banner ${o.type}`,style:{borderRadius:"var(--radius-enterprise)",padding:"var(--gap-2)",marginTop:"var(--gap-3)",justifyContent:"center"},children:[o.type==="success"?e.jsx(A,{size:16}):e.jsx(z,{size:16}),e.jsx("span",{style:{fontWeight:600},children:o.message})]})]}),e.jsx(P,{onSave:S,onDiscard:p,isSaving:y,saveLabel:"Save Configuration"})]})};export{_ as AISettings};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{c as g,u as X,r,j as e,S as z,g as q,X as V}from"./index-ByQwMN5T.js";import{X as c}from"./index-C1DBaoSh.js";import{S as H,B as S,D as K}from"./badge-CSvl5xIU.js";import{A as D,B as T,U as Z,C as J,a as Q,T as ee}from"./button-CvLaGFYj.js";import{Z as se}from"./zap-DovP6iow.js";import{T as ae}from"./trash-2-DQpvzJec.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const te=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M11 4h10",key:"1w87gc"}],["path",{d:"M11 8h7",key:"djye34"}],["path",{d:"M11 12h4",key:"q8tih4"}]],re=g("arrow-down-wide-narrow",te);/**
|
|
7
|
+
* @license lucide-react v0.555.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const ie=[["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}],["path",{d:"M11 12h4",key:"q8tih4"}],["path",{d:"M11 16h7",key:"uosisv"}],["path",{d:"M11 20h10",key:"jvxblo"}]],ce=g("arrow-up-narrow-wide",ie);/**
|
|
12
|
+
* @license lucide-react v0.555.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const ne=[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]],I=g("rocket",ne),xe=()=>{const{toast:n,removeToast:M}=X(),[l,N]=r.useState([]),[E,F]=r.useState([]),[o,k]=r.useState(!1),[x,R]=r.useState(""),[$,w]=r.useState(!1),[L,b]=r.useState(null),[d,B]=r.useState({android:!0,ios:!0}),[u,U]=r.useState("desc"),[m,v]=r.useState(null),[j,y]=r.useState(""),h=r.useCallback(async()=>{k(!0);try{const s=await c.getApps();N(Array.isArray(s)?s:[])}catch(s){console.error("Failed to fetch apps",s)}finally{k(!1)}},[]),f=r.useCallback(async()=>{try{const s=await c.getDevices();F(Array.isArray(s)?s:[])}catch(s){console.error("Failed to fetch devices",s)}},[]);r.useEffect(()=>{h(),f();const s=setInterval(f,1e4);return()=>clearInterval(s)},[h,f]);const A=async s=>{var t;const a=(t=s.target.files)==null?void 0:t[0];if(a){w(!0);try{await c.uploadApp(a),await h()}catch(i){console.error("Upload failed",i)}finally{w(!1),s.target&&(s.target.value="")}}},_=async(s,a)=>{if(window.confirm(`Permanently remove artifact "${a}"?`))try{await c.deleteApp(s),N(t=>t.filter(i=>i.id!==s))}catch(t){console.error("Delete failed",t)}},G=(s,a)=>{navigator.clipboard.writeText(s),b(`${a}-${s}`),setTimeout(()=>b(null),2e3)},O=async(s,a)=>{const t=n(`Deploying app to ${a}...`,"loading",0);try{const i=await c.installRepositoryApp(a,s);i.success?(n("App deployed successfully","success"),v(null),y("")):n(`Deployment failed: ${i.error}`,"error")}catch(i){n(`Execution Error: ${i.message}`,"error")}finally{M(t)}},p=l.filter(s=>{const a=s.name.toLowerCase().includes(x.toLowerCase())||s.packageName&&s.packageName.toLowerCase().includes(x.toLowerCase()),t=d.android&&s.platform==="android"||d.ios&&s.platform==="ios";return a&&t}).sort((s,a)=>{const t=new Date(s.createdAt).getTime(),i=new Date(a.createdAt).getTime();return u==="desc"?i-t:t-i}),Y=s=>{if(!s)return"0 B";const a=1024,t=Math.floor(Math.log(s)/Math.log(a));return parseFloat((s/Math.pow(a,t)).toFixed(1))+" "+["B","KB","MB","GB"][t]},P=s=>new Date(s).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"}),C=s=>{B(a=>({...a,[s]:!a[s]}))},W=s=>{const a=s.toLowerCase();return a.includes("wda-signed")||a.includes("wda-resign")||a.includes("webdriveragent")};return e.jsxs("div",{className:"apps-container device-explorer-container",children:[e.jsx("div",{className:"scanline",style:{position:"absolute",inset:0,pointerEvents:"none",opacity:.05,zIndex:1001}}),e.jsxs("div",{className:"device-explorer-header-container",children:[e.jsxs("div",{className:"device-explorer-header-left-container",children:[e.jsx("div",{className:"device-explorer-header-entry",children:e.jsxs("div",{className:"device-explorer-header-value",children:[e.jsxs("button",{className:`device-explorer-header__platform-btn ${d.android&&"selected"}`,onClick:()=>C("android"),children:[e.jsx(z,{size:18,color:"currentColor"})," Android"]}),e.jsxs("button",{className:`device-explorer-header__platform-btn ${d.ios&&"selected"}`,onClick:()=>C("ios"),children:[e.jsx(D,{size:18,color:"currentColor"})," iOS"]})]})}),e.jsx("div",{className:"device-explorer-header-entry",children:e.jsx("div",{className:"device-explorer-header-value",children:e.jsxs("div",{className:"device-explorer-search-wrapper",children:[e.jsx(H,{size:16,color:"#94a3b8",className:"device-explorer-search-icon"}),e.jsx("input",{type:"text",className:"device-explorer-header-text-filter",placeholder:"Filter by bundle or name...",value:x,onChange:s=>R(s.target.value)})]})})}),e.jsx("div",{className:"device-explorer-header-filter-count",children:e.jsxs(S,{variant:"secondary",children:[e.jsx("span",{className:"font-bold",children:p.length})," of"," ",e.jsx("span",{className:"font-bold",children:l.length})," ",l.length===1?"artifact":"artifacts"]})})]}),e.jsxs("div",{className:"device-explorer-header-right-container",children:[e.jsx("button",{className:"icon-btn-secondary sort-btn",onClick:()=>U(s=>s==="desc"?"asc":"desc"),title:u==="desc"?"Newest First":"Oldest First",children:u==="desc"?e.jsx(re,{size:18}):e.jsx(ce,{size:18})}),e.jsxs(T,{size:"sm",variant:"default",onClick:()=>h(),disabled:o,children:[e.jsx(q,{size:14,className:`mr-1 ${o&&"animate-spin"}`}),"Refresh"]}),e.jsxs("label",{className:"upload-trigger",children:[e.jsx("input",{type:"file",accept:".apk,.ipa",onChange:A,style:{display:"none"}}),e.jsxs(T,{size:"sm",variant:"default",className:"upload-button",children:[e.jsx(Z,{size:14,className:"mr-1"}),"Upload App"]})]})]})]}),e.jsx("main",{className:"apps-registry-content",children:o&&l.length===0?e.jsxs("div",{className:"empty-data-vignette",children:[e.jsx("div",{className:"processing-loader"}),e.jsx("p",{className:"text-muted text-xs font-bold tracking-widest",children:"SYNCING REGISTRY..."})]}):e.jsxs(e.Fragment,{children:[p.length>0&&e.jsxs("div",{className:"registry-table-header",children:[e.jsx("div",{children:"Artifact Bundle"}),e.jsx("div",{children:"Version"}),e.jsx("div",{children:"Size"}),e.jsx("div",{children:"Registry Date"}),e.jsx("div",{style:{textAlign:"right"},children:"Management"})]}),e.jsx("div",{className:"registry-list",children:p.map(s=>{const a=E.filter(t=>t.platform===s.platform&&!t.busy&&!t.offline);return e.jsxs("div",{className:`artifact-row ${s.platform}`,children:[e.jsxs("div",{className:"col-app-info",children:[e.jsx("div",{className:"app-platform-badge",children:s.platform==="android"?e.jsx(z,{size:18}):e.jsx(D,{size:18})}),e.jsxs("div",{className:"app-text-block",children:[e.jsxs("div",{className:"app-display-name",title:s.name,children:[s.name,W(s.name)&&e.jsx(S,{variant:"outline",className:"ml-2 text-[10px] h-4 py-0 border-primary text-primary",children:"WDA"})]}),e.jsxs("div",{className:"app-package-id",children:[e.jsx("code",{children:s.packageName||"internal.bundle"}),e.jsx("div",{className:"copy-hint",onClick:()=>G(s.packageName||"","pkg"),children:L===`pkg-${s.packageName}`?e.jsx(J,{size:10,className:"text-primary"}):e.jsx(Q,{size:10})})]})]})]}),e.jsx("div",{className:"col-version",children:s.version||"v1.0.0"}),e.jsx("div",{className:"col-size",children:Y(s.size)}),e.jsx("div",{className:"col-timestamp",children:P(s.createdAt)}),e.jsxs("div",{className:"col-actions",children:[e.jsx("button",{className:`instant-deploy-trigger ${m===s.id&&"active"}`,onClick:()=>{m===s.id?(v(null),y("")):v(s.id)},children:m===s.id?e.jsxs(e.Fragment,{children:[e.jsx(V,{size:12})," CANCEL"]}):e.jsxs(e.Fragment,{children:[e.jsx(se,{size:12})," DEPLOY"]})}),m===s.id&&e.jsx("div",{className:"deployment-flyout",children:a.length>0?e.jsxs("div",{className:"deploy-actions-group",children:[e.jsxs("select",{className:"target-device-select",autoFocus:!0,value:j,onChange:t=>y(t.target.value),children:[e.jsx("option",{value:"",children:"SELECT TARGET..."}),a.map(t=>e.jsxs("option",{value:t.udid,children:[t.name.toUpperCase()," (",t.udid,")"]},t.udid))]}),e.jsx("button",{className:"confirm-deploy-btn",disabled:!j,onClick:()=>O(s.id,j),title:"Confirm Deployment",children:e.jsx(I,{size:14})})]}):e.jsx("div",{className:"target-device-select empty",children:"NO TARGETS"})}),e.jsx("button",{className:"utility-icon-btn",onClick:()=>window.open(`/xenon/api/apps/${s.id}/download`,"_blank"),children:e.jsx(K,{size:14})}),e.jsx("button",{className:"utility-icon-btn danger",onClick:()=>_(s.id,s.name),children:e.jsx(ae,{size:14})})]})]},s.id)})}),p.length===0&&!o&&e.jsxs("div",{className:"empty-registry-technical",children:[e.jsx("div",{className:"empty-icon-container",children:e.jsx(ee,{size:48,className:"text-primary opacity-40 animate-pulse"})}),e.jsx("h2",{className:"empty-title brand-font",children:"Centralized Artifact Registry"}),e.jsxs("p",{className:"empty-description",children:["The Xenon Registry is a secure, high-performance vault for your mobile binaries. Upload your ",e.jsx("code",{className:"text-primary",children:".apk"})," or"," ",e.jsx("code",{className:"text-primary",children:".ipa"}),"artifacts to enable rapid deployment, version tracking, and instant installation across your entire device fleet."]}),e.jsx("div",{className:"empty-actions",children:e.jsxs("label",{className:"upload-trigger-massive",children:[e.jsx("input",{type:"file",accept:".apk,.ipa",onChange:A,style:{display:"none"}}),e.jsxs("div",{className:"massive-upload-content",children:[e.jsx(I,{size:24,className:"mb-2"}),e.jsx("span",{children:"Ingest Your First Artifact"})]})]})})]})]})}),$&&e.jsx("div",{className:"upload-overlay-technical",children:e.jsxs("div",{className:"upload-card-technical",children:[e.jsx("div",{className:"processing-loader"}),e.jsx("h2",{className:"brand-font",style:{fontSize:"20px",marginBottom:"8px"},children:"Artifact Ingestion"}),e.jsx("p",{className:"text-muted text-xs",children:"VERIFYING CHECKSUM & DEPLOYING TO REGISTRY..."})]})})]})};export{xe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.apps-container{display:flex;flex-direction:column;height:100%;width:100%}.apps-registry-content{flex:1;overflow-y:auto;padding:0 24px 24px;background:var(--bg-page)}.registry-table-header{display:grid;grid-template-columns:3fr 1fr 1fr 1.5fr 1.5fr;padding:12px 24px;border-bottom:2px solid var(--border-visible);color:var(--text-dim);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;background:#0003;font-family:JetBrains Mono,monospace}.registry-list{display:flex;flex-direction:column}.artifact-row{display:grid;grid-template-columns:3fr 1fr 1fr 1.5fr 1.5fr;align-items:center;padding:12px 24px;background:#0000001a;border-bottom:1px solid var(--border-visible);transition:all .2s ease;position:relative}.artifact-row:hover{background:#ffffff05}.artifact-row.active{background:#00ff880d;border-left:3px solid var(--color-primary)}.col-app-info{display:flex;align-items:center;gap:16px;min-width:0}.app-platform-badge{width:32px;height:32px;background:#0006;border:1px solid var(--border-visible);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-dim)}.artifact-row.android .app-platform-badge{color:var(--color-primary);border-color:#0f83}.artifact-row.ios .app-platform-badge{color:var(--text-bright);border-color:var(--border-subtle)}.app-text-block{display:flex;flex-direction:column;min-width:0}.app-display-name{font-size:13px;font-weight:700;color:var(--text-bright);font-family:Outfit,sans-serif;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase}.app-package-id{font-family:JetBrains Mono,monospace;font-size:var(--fs-xs);color:var(--text-dim);opacity:.8;display:flex;align-items:center;gap:6px}.col-version{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--color-primary);font-weight:600}.col-size{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted)}.col-timestamp{font-size:var(--fs-xs);color:var(--text-dim);font-family:JetBrains Mono,monospace;text-transform:uppercase}.col-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}.instant-deploy-trigger{height:28px;background:#00ff880d;border:1px solid var(--color-primary);border-radius:6px;padding:0 12px;display:flex;align-items:center;gap:8px;color:var(--color-primary);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;transition:all .2s;cursor:pointer}.instant-deploy-trigger:hover:not(:disabled){background:var(--color-primary);color:var(--bg-page);box-shadow:0 0 20px #0f83}.utility-icon-btn{width:28px;height:28px;background:#0000004d;border:1px solid var(--border-visible);border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-dim);transition:all .2s}.utility-icon-btn:hover{border-color:var(--border-subtle);color:var(--text-bright)}.utility-icon-btn.danger:hover{color:var(--status-error)}.device-explorer-header-container{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:#0f0f1a66;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-visible);z-index:100}.device-explorer-header-left-container{display:flex;align-items:center;gap:16px}.device-explorer-header-right-container{display:flex;align-items:center;gap:12px}.device-explorer-header-filter-count{margin-left:8px}.icon-btn-secondary{width:32px;height:32px;background:#ffffff08;border:1px solid var(--border-visible);border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--text-dim);cursor:pointer;transition:all .2s ease}.icon-btn-secondary:hover{background:#ffffff14;color:var(--text-bright);border-color:var(--border-subtle)}.deployment-flyout{position:absolute;top:50%;padding:6px;right:180px;transform:translateY(-50%);background:var(--bg-surface);border:1px solid var(--primary);border-radius:8px;box-shadow:0 10px 40px #0009;z-index:110;display:flex;gap:4px;animation:slideInRight .2s cubic-bezier(.16,1,.3,1)}@keyframes slideInRight{0%{opacity:0;transform:translateY(-50%) translate(10px)}to{opacity:1;transform:translateY(-50%) translate(0)}}.target-device-select{height:32px;background:#00000040;border:1px solid var(--border-medium);border-radius:6px;color:var(--text-main);font-size:11px;font-weight:600;padding:0 12px;min-width:280px;outline:none;cursor:pointer;transition:all .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.target-device-select:hover{border-color:var(--primary);background-color:#0006}.target-device-select option{background:var(--bg-surface);color:var(--text-main);padding:8px}.target-device-select.empty{display:flex;align-items:center;justify-content:center;padding:0 20px;height:32px;font-style:italic;opacity:.5;font-size:11px}.deploy-actions-group{display:flex;align-items:center;gap:6px}.confirm-deploy-btn{width:32px;height:32px;background:var(--primary);border:none;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#000;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.confirm-deploy-btn:hover:not(:disabled){background:var(--primary-hover);transform:scale(1.05);box-shadow:0 0 15px var(--primary-glow)}.confirm-deploy-btn:disabled{background:#ffffff1a;color:#fff3;cursor:not-allowed}.upload-overlay-technical{position:fixed;top:0;right:0;bottom:0;left:0;background:#020617d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:2000;display:flex;align-items:center;justify-content:center}.upload-card-technical{width:420px;background:var(--bg-surface);border:1px solid var(--border-medium);border-radius:16px;padding:40px;text-align:center;box-shadow:0 30px 60px #0009}.processing-loader{width:40px;height:40px;border:2px solid rgba(34,197,94,.1);border-top-color:var(--primary);border-radius:50%;margin:0 auto 20px;animation:spin 1s linear infinite}.empty-registry-technical{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:100px 20px;text-align:center;max-width:600px;margin:0 auto}.empty-icon-container{width:100px;height:100px;background:radial-gradient(circle,rgba(59,130,246,.1) 0%,transparent 70%);display:flex;align-items:center;justify-content:center;border-radius:50%;margin-bottom:24px}.empty-title{font-size:28px;font-weight:800;color:var(--text-main);margin-bottom:16px;letter-spacing:-.02em}.empty-description{font-size:var(--fs-md);line-height:1.6;color:var(--text-muted);margin-bottom:40px}.empty-description code{background:#3b82f61a;padding:2px 6px;border-radius:4px;font-weight:600}.upload-trigger-massive{cursor:pointer;display:block}.massive-upload-content{display:flex;flex-direction:column;align-items:center;padding:30px 60px;background:var(--bg-surface);border:1px solid var(--color-primary);box-shadow:0 0 15px #00ff881a;border-radius:8px;color:var(--primary);font-weight:700;font-size:16px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 0 0 transparent}.massive-upload-content:hover{background:#3b82f60d;transform:translateY(-4px);box-shadow:0 10px 30px #3b82f626;border-style:solid}.massive-upload-content svg{transition:transform .3s ease}.massive-upload-content:hover svg{transform:translateY(-4px) scale(1.1)}.copy-hint{cursor:pointer;opacity:.4;transition:opacity .2s}.copy-hint:hover{opacity:1}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 1400px){.apps-registry-content{padding:var(--space-md) 24px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.badge-base{display:inline-flex;align-items:center;gap:6px;border-radius:6px;border:1px solid transparent;padding:2px 8px;font-size:var(--fs-xs);font-weight:800;transition:all .2s ease;white-space:nowrap;text-transform:uppercase;letter-spacing:.05em;font-family:JetBrains Mono,monospace}.badge-variant-default{background:#0000004d;color:var(--text-dim);border-color:var(--border-visible)}.badge-variant-success{background:#00ff880d;color:var(--color-primary);border-color:#0f83}.badge-variant-warning{background:#ffc1070d;color:#ffc107;border-color:#ffc10733}.badge-variant-error{background:#ff4d4d0d;color:#ff4d4d;border-color:#ff4d4d33}.badge-variant-secondary{background:var(--bg-surface);color:var(--text-bright);border-color:var(--border-visible)}.badge-variant-outline{background:transparent;color:var(--text-dim);border:1px solid var(--border-visible)}.badge-variant-outline:hover{color:var(--text-bright);border-color:var(--text-muted)}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{c as ye,j as Ve}from"./index-ByQwMN5T.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const Oe=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],jo=ye("download",Oe);/**
|
|
7
|
+
* @license lucide-react v0.555.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const Le=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],Go=ye("search",Le);function we(e){var t,o,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(o=we(e[t]))&&(r&&(r+=" "),r+=o)}else for(o in e)e[o]&&(r&&(r+=" "),r+=o);return r}function ve(){for(var e,t,o=0,r="",a=arguments.length;o<a;o++)(e=arguments[o])&&(t=we(e))&&(r&&(r+=" "),r+=t);return r}const pe=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,fe=ve,Ee=(e,t)=>o=>{var r;if((t==null?void 0:t.variants)==null)return fe(e,o==null?void 0:o.class,o==null?void 0:o.className);const{variants:a,defaultVariants:l}=t,i=Object.keys(a).map(p=>{const b=o==null?void 0:o[p],k=l==null?void 0:l[p];if(b===null)return null;const x=pe(b)||pe(k);return a[p][x]}),f=o&&Object.entries(o).reduce((p,b)=>{let[k,x]=b;return x===void 0||(p[k]=x),p},{}),c=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((p,b)=>{let{class:k,className:x,...C}=b;return Object.entries(C).every(A=>{let[v,y]=A;return Array.isArray(y)?y.includes({...l,...f}[v]):{...l,...f}[v]===y})?[...p,k,x]:p},[]);return fe(e,i,c,o==null?void 0:o.class,o==null?void 0:o.className)},_e=(e,t)=>{const o=new Array(e.length+t.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let r=0;r<t.length;r++)o[e.length+r]=t[r];return o},Fe=(e,t)=>({classGroupId:e,validator:t}),ze=(e=new Map,t=null,o)=>({nextPart:e,validators:t,classGroupId:o}),K="-",be=[],Be="arbitrary..",We=e=>{const t=De(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return $e(i);const f=i.split(K),c=f[0]===""&&f.length>1?1:0;return Ce(f,c,t)},getConflictingClassGroupIds:(i,f)=>{if(f){const c=r[i],p=o[i];return c?p?_e(p,c):c:p||be}return o[i]||be}}},Ce=(e,t,o)=>{if(e.length-t===0)return o.classGroupId;const a=e[t],l=o.nextPart.get(a);if(l){const p=Ce(e,t+1,l);if(p)return p}const i=o.validators;if(i===null)return;const f=t===0?e.join(K):e.slice(t).join(K),c=i.length;for(let p=0;p<c;p++){const b=i[p];if(b.validator(f))return b.classGroupId}},$e=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),o=t.indexOf(":"),r=t.slice(0,o);return r?Be+r:void 0})(),De=e=>{const{theme:t,classGroups:o}=e;return Ue(o,t)},Ue=(e,t)=>{const o=ze();for(const r in e){const a=e[r];ne(a,o,r,t)}return o},ne=(e,t,o,r)=>{const a=e.length;for(let l=0;l<a;l++){const i=e[l];Ye(i,t,o,r)}},Ye=(e,t,o,r)=>{if(typeof e=="string"){qe(e,t,o);return}if(typeof e=="function"){Xe(e,t,o,r);return}He(e,t,o,r)},qe=(e,t,o)=>{const r=e===""?t:Ae(t,e);r.classGroupId=o},Xe=(e,t,o,r)=>{if(Je(e)){ne(e(r),t,o,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(o,e))},He=(e,t,o,r)=>{const a=Object.entries(e),l=a.length;for(let i=0;i<l;i++){const[f,c]=a[i];ne(c,Ae(t,f),o,r)}},Ae=(e,t)=>{let o=e;const r=t.split(K),a=r.length;for(let l=0;l<a;l++){const i=r[l];let f=o.nextPart.get(i);f||(f=ze(),o.nextPart.set(i,f)),o=f}return o},Je=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,Ke=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,o=Object.create(null),r=Object.create(null);const a=(l,i)=>{o[l]=i,t++,t>e&&(t=0,r=o,o=Object.create(null))};return{get(l){let i=o[l];if(i!==void 0)return i;if((i=r[l])!==void 0)return a(l,i),i},set(l,i){l in o?o[l]=i:a(l,i)}}},te="!",ge=":",Qe=[],he=(e,t,o,r,a)=>({modifiers:e,hasImportantModifier:t,baseClassName:o,maybePostfixModifierPosition:r,isExternal:a}),Ze=e=>{const{prefix:t,experimentalParseClassName:o}=e;let r=a=>{const l=[];let i=0,f=0,c=0,p;const b=a.length;for(let v=0;v<b;v++){const y=a[v];if(i===0&&f===0){if(y===ge){l.push(a.slice(c,v)),c=v+1;continue}if(y==="/"){p=v;continue}}y==="["?i++:y==="]"?i--:y==="("?f++:y===")"&&f--}const k=l.length===0?a:a.slice(c);let x=k,C=!1;k.endsWith(te)?(x=k.slice(0,-1),C=!0):k.startsWith(te)&&(x=k.slice(1),C=!0);const A=p&&p>c?p-c:void 0;return he(l,C,x,A)};if(t){const a=t+ge,l=r;r=i=>i.startsWith(a)?l(i.slice(a.length)):he(Qe,!1,i,void 0,!0)}if(o){const a=r;r=l=>o({className:l,parseClassName:a})}return r},eo=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((o,r)=>{t.set(o,1e6+r)}),o=>{const r=[];let a=[];for(let l=0;l<o.length;l++){const i=o[l],f=i[0]==="[",c=t.has(i);f||c?(a.length>0&&(a.sort(),r.push(...a),a=[]),r.push(i)):a.push(i)}return a.length>0&&(a.sort(),r.push(...a)),r}},oo=e=>({cache:Ke(e.cacheSize),parseClassName:Ze(e),sortModifiers:eo(e),...We(e)}),ro=/\s+/,to=(e,t)=>{const{parseClassName:o,getClassGroupId:r,getConflictingClassGroupIds:a,sortModifiers:l}=t,i=[],f=e.trim().split(ro);let c="";for(let p=f.length-1;p>=0;p-=1){const b=f[p],{isExternal:k,modifiers:x,hasImportantModifier:C,baseClassName:A,maybePostfixModifierPosition:v}=o(b);if(k){c=b+(c.length>0?" "+c:c);continue}let y=!!v,P=r(y?A.substring(0,v):A);if(!P){if(!y){c=b+(c.length>0?" "+c:c);continue}if(P=r(A),!P){c=b+(c.length>0?" "+c:c);continue}y=!1}const $=x.length===0?"":x.length===1?x[0]:l(x).join(":"),F=C?$+te:$,N=F+P;if(i.indexOf(N)>-1)continue;i.push(N);const V=a(P,y);for(let j=0;j<V.length;++j){const B=V[j];i.push(F+B)}c=b+(c.length>0?" "+c:c)}return c},no=(...e)=>{let t=0,o,r,a="";for(;t<e.length;)(o=e[t++])&&(r=Se(o))&&(a&&(a+=" "),a+=r);return a},Se=e=>{if(typeof e=="string")return e;let t,o="";for(let r=0;r<e.length;r++)e[r]&&(t=Se(e[r]))&&(o&&(o+=" "),o+=t);return o},so=(e,...t)=>{let o,r,a,l;const i=c=>{const p=t.reduce((b,k)=>k(b),e());return o=oo(p),r=o.cache.get,a=o.cache.set,l=f,f(c)},f=c=>{const p=r(c);if(p)return p;const b=to(c,o);return a(c,b),b};return l=i,(...c)=>l(no(...c))},ao=[],g=e=>{const t=o=>o[e]||ao;return t.isThemeGetter=!0,t},Re=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Me=/^\((?:(\w[\w-]*):)?(.+)\)$/i,io=/^\d+\/\d+$/,lo=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,co=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,mo=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,uo=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,po=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,L=e=>io.test(e),u=e=>!!e&&!Number.isNaN(Number(e)),I=e=>!!e&&Number.isInteger(Number(e)),oe=e=>e.endsWith("%")&&u(e.slice(0,-1)),M=e=>lo.test(e),fo=()=>!0,bo=e=>co.test(e)&&!mo.test(e),Ie=()=>!1,go=e=>uo.test(e),ho=e=>po.test(e),ko=e=>!n(e)&&!s(e),xo=e=>E(e,Ge,Ie),n=e=>Re.test(e),T=e=>E(e,Te,bo),re=e=>E(e,Co,u),ke=e=>E(e,Pe,Ie),yo=e=>E(e,je,ho),H=e=>E(e,Ne,go),s=e=>Me.test(e),W=e=>_(e,Te),wo=e=>_(e,Ao),xe=e=>_(e,Pe),vo=e=>_(e,Ge),zo=e=>_(e,je),J=e=>_(e,Ne,!0),E=(e,t,o)=>{const r=Re.exec(e);return r?r[1]?t(r[1]):o(r[2]):!1},_=(e,t,o=!1)=>{const r=Me.exec(e);return r?r[1]?t(r[1]):o:!1},Pe=e=>e==="position"||e==="percentage",je=e=>e==="image"||e==="url",Ge=e=>e==="length"||e==="size"||e==="bg-size",Te=e=>e==="length",Co=e=>e==="number",Ao=e=>e==="family-name",Ne=e=>e==="shadow",So=()=>{const e=g("color"),t=g("font"),o=g("text"),r=g("font-weight"),a=g("tracking"),l=g("leading"),i=g("breakpoint"),f=g("container"),c=g("spacing"),p=g("radius"),b=g("shadow"),k=g("inset-shadow"),x=g("text-shadow"),C=g("drop-shadow"),A=g("blur"),v=g("perspective"),y=g("aspect"),P=g("ease"),$=g("animate"),F=()=>["auto","avoid","all","avoid-page","page","left","right","column"],N=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],V=()=>[...N(),s,n],j=()=>["auto","hidden","clip","visible","scroll"],B=()=>["auto","contain","none"],m=()=>[s,n,c],S=()=>[L,"full","auto",...m()],se=()=>[I,"none","subgrid",s,n],ae=()=>["auto",{span:["full",I,s,n]},I,s,n],D=()=>[I,"auto",s,n],ie=()=>["auto","min","max","fr",s,n],Q=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],O=()=>["start","end","center","stretch","center-safe","end-safe"],R=()=>["auto",...m()],G=()=>[L,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...m()],d=()=>[e,s,n],le=()=>[...N(),xe,ke,{position:[s,n]}],ce=()=>["no-repeat",{repeat:["","x","y","space","round"]}],de=()=>["auto","cover","contain",vo,xo,{size:[s,n]}],Z=()=>[oe,W,T],w=()=>["","none","full",p,s,n],z=()=>["",u,W,T],U=()=>["solid","dashed","dotted","double"],me=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],h=()=>[u,oe,xe,ke],ue=()=>["","none",A,s,n],Y=()=>["none",u,s,n],q=()=>["none",u,s,n],ee=()=>[u,s,n],X=()=>[L,"full",...m()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[M],breakpoint:[M],color:[fo],container:[M],"drop-shadow":[M],ease:["in","out","in-out"],font:[ko],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[M],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[M],shadow:[M],spacing:["px",u],text:[M],"text-shadow":[M],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",L,n,s,y]}],container:["container"],columns:[{columns:[u,n,s,f]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:V()}],overflow:[{overflow:j()}],"overflow-x":[{"overflow-x":j()}],"overflow-y":[{"overflow-y":j()}],overscroll:[{overscroll:B()}],"overscroll-x":[{"overscroll-x":B()}],"overscroll-y":[{"overscroll-y":B()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:S()}],"inset-x":[{"inset-x":S()}],"inset-y":[{"inset-y":S()}],start:[{start:S()}],end:[{end:S()}],top:[{top:S()}],right:[{right:S()}],bottom:[{bottom:S()}],left:[{left:S()}],visibility:["visible","invisible","collapse"],z:[{z:[I,"auto",s,n]}],basis:[{basis:[L,"full","auto",f,...m()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[u,L,"auto","initial","none",n]}],grow:[{grow:["",u,s,n]}],shrink:[{shrink:["",u,s,n]}],order:[{order:[I,"first","last","none",s,n]}],"grid-cols":[{"grid-cols":se()}],"col-start-end":[{col:ae()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":se()}],"row-start-end":[{row:ae()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ie()}],"auto-rows":[{"auto-rows":ie()}],gap:[{gap:m()}],"gap-x":[{"gap-x":m()}],"gap-y":[{"gap-y":m()}],"justify-content":[{justify:[...Q(),"normal"]}],"justify-items":[{"justify-items":[...O(),"normal"]}],"justify-self":[{"justify-self":["auto",...O()]}],"align-content":[{content:["normal",...Q()]}],"align-items":[{items:[...O(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...O(),{baseline:["","last"]}]}],"place-content":[{"place-content":Q()}],"place-items":[{"place-items":[...O(),"baseline"]}],"place-self":[{"place-self":["auto",...O()]}],p:[{p:m()}],px:[{px:m()}],py:[{py:m()}],ps:[{ps:m()}],pe:[{pe:m()}],pt:[{pt:m()}],pr:[{pr:m()}],pb:[{pb:m()}],pl:[{pl:m()}],m:[{m:R()}],mx:[{mx:R()}],my:[{my:R()}],ms:[{ms:R()}],me:[{me:R()}],mt:[{mt:R()}],mr:[{mr:R()}],mb:[{mb:R()}],ml:[{ml:R()}],"space-x":[{"space-x":m()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":m()}],"space-y-reverse":["space-y-reverse"],size:[{size:G()}],w:[{w:[f,"screen",...G()]}],"min-w":[{"min-w":[f,"screen","none",...G()]}],"max-w":[{"max-w":[f,"screen","none","prose",{screen:[i]},...G()]}],h:[{h:["screen","lh",...G()]}],"min-h":[{"min-h":["screen","lh","none",...G()]}],"max-h":[{"max-h":["screen","lh",...G()]}],"font-size":[{text:["base",o,W,T]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,s,re]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",oe,n]}],"font-family":[{font:[wo,n,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,s,n]}],"line-clamp":[{"line-clamp":[u,"none",s,re]}],leading:[{leading:[l,...m()]}],"list-image":[{"list-image":["none",s,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",s,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:d()}],"text-color":[{text:d()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...U(),"wavy"]}],"text-decoration-thickness":[{decoration:[u,"from-font","auto",s,T]}],"text-decoration-color":[{decoration:d()}],"underline-offset":[{"underline-offset":[u,"auto",s,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:m()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",s,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",s,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:le()}],"bg-repeat":[{bg:ce()}],"bg-size":[{bg:de()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},I,s,n],radial:["",s,n],conic:[I,s,n]},zo,yo]}],"bg-color":[{bg:d()}],"gradient-from-pos":[{from:Z()}],"gradient-via-pos":[{via:Z()}],"gradient-to-pos":[{to:Z()}],"gradient-from":[{from:d()}],"gradient-via":[{via:d()}],"gradient-to":[{to:d()}],rounded:[{rounded:w()}],"rounded-s":[{"rounded-s":w()}],"rounded-e":[{"rounded-e":w()}],"rounded-t":[{"rounded-t":w()}],"rounded-r":[{"rounded-r":w()}],"rounded-b":[{"rounded-b":w()}],"rounded-l":[{"rounded-l":w()}],"rounded-ss":[{"rounded-ss":w()}],"rounded-se":[{"rounded-se":w()}],"rounded-ee":[{"rounded-ee":w()}],"rounded-es":[{"rounded-es":w()}],"rounded-tl":[{"rounded-tl":w()}],"rounded-tr":[{"rounded-tr":w()}],"rounded-br":[{"rounded-br":w()}],"rounded-bl":[{"rounded-bl":w()}],"border-w":[{border:z()}],"border-w-x":[{"border-x":z()}],"border-w-y":[{"border-y":z()}],"border-w-s":[{"border-s":z()}],"border-w-e":[{"border-e":z()}],"border-w-t":[{"border-t":z()}],"border-w-r":[{"border-r":z()}],"border-w-b":[{"border-b":z()}],"border-w-l":[{"border-l":z()}],"divide-x":[{"divide-x":z()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":z()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...U(),"hidden","none"]}],"divide-style":[{divide:[...U(),"hidden","none"]}],"border-color":[{border:d()}],"border-color-x":[{"border-x":d()}],"border-color-y":[{"border-y":d()}],"border-color-s":[{"border-s":d()}],"border-color-e":[{"border-e":d()}],"border-color-t":[{"border-t":d()}],"border-color-r":[{"border-r":d()}],"border-color-b":[{"border-b":d()}],"border-color-l":[{"border-l":d()}],"divide-color":[{divide:d()}],"outline-style":[{outline:[...U(),"none","hidden"]}],"outline-offset":[{"outline-offset":[u,s,n]}],"outline-w":[{outline:["",u,W,T]}],"outline-color":[{outline:d()}],shadow:[{shadow:["","none",b,J,H]}],"shadow-color":[{shadow:d()}],"inset-shadow":[{"inset-shadow":["none",k,J,H]}],"inset-shadow-color":[{"inset-shadow":d()}],"ring-w":[{ring:z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:d()}],"ring-offset-w":[{"ring-offset":[u,T]}],"ring-offset-color":[{"ring-offset":d()}],"inset-ring-w":[{"inset-ring":z()}],"inset-ring-color":[{"inset-ring":d()}],"text-shadow":[{"text-shadow":["none",x,J,H]}],"text-shadow-color":[{"text-shadow":d()}],opacity:[{opacity:[u,s,n]}],"mix-blend":[{"mix-blend":[...me(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":me()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[u]}],"mask-image-linear-from-pos":[{"mask-linear-from":h()}],"mask-image-linear-to-pos":[{"mask-linear-to":h()}],"mask-image-linear-from-color":[{"mask-linear-from":d()}],"mask-image-linear-to-color":[{"mask-linear-to":d()}],"mask-image-t-from-pos":[{"mask-t-from":h()}],"mask-image-t-to-pos":[{"mask-t-to":h()}],"mask-image-t-from-color":[{"mask-t-from":d()}],"mask-image-t-to-color":[{"mask-t-to":d()}],"mask-image-r-from-pos":[{"mask-r-from":h()}],"mask-image-r-to-pos":[{"mask-r-to":h()}],"mask-image-r-from-color":[{"mask-r-from":d()}],"mask-image-r-to-color":[{"mask-r-to":d()}],"mask-image-b-from-pos":[{"mask-b-from":h()}],"mask-image-b-to-pos":[{"mask-b-to":h()}],"mask-image-b-from-color":[{"mask-b-from":d()}],"mask-image-b-to-color":[{"mask-b-to":d()}],"mask-image-l-from-pos":[{"mask-l-from":h()}],"mask-image-l-to-pos":[{"mask-l-to":h()}],"mask-image-l-from-color":[{"mask-l-from":d()}],"mask-image-l-to-color":[{"mask-l-to":d()}],"mask-image-x-from-pos":[{"mask-x-from":h()}],"mask-image-x-to-pos":[{"mask-x-to":h()}],"mask-image-x-from-color":[{"mask-x-from":d()}],"mask-image-x-to-color":[{"mask-x-to":d()}],"mask-image-y-from-pos":[{"mask-y-from":h()}],"mask-image-y-to-pos":[{"mask-y-to":h()}],"mask-image-y-from-color":[{"mask-y-from":d()}],"mask-image-y-to-color":[{"mask-y-to":d()}],"mask-image-radial":[{"mask-radial":[s,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":h()}],"mask-image-radial-to-pos":[{"mask-radial-to":h()}],"mask-image-radial-from-color":[{"mask-radial-from":d()}],"mask-image-radial-to-color":[{"mask-radial-to":d()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":N()}],"mask-image-conic-pos":[{"mask-conic":[u]}],"mask-image-conic-from-pos":[{"mask-conic-from":h()}],"mask-image-conic-to-pos":[{"mask-conic-to":h()}],"mask-image-conic-from-color":[{"mask-conic-from":d()}],"mask-image-conic-to-color":[{"mask-conic-to":d()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:le()}],"mask-repeat":[{mask:ce()}],"mask-size":[{mask:de()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",s,n]}],filter:[{filter:["","none",s,n]}],blur:[{blur:ue()}],brightness:[{brightness:[u,s,n]}],contrast:[{contrast:[u,s,n]}],"drop-shadow":[{"drop-shadow":["","none",C,J,H]}],"drop-shadow-color":[{"drop-shadow":d()}],grayscale:[{grayscale:["",u,s,n]}],"hue-rotate":[{"hue-rotate":[u,s,n]}],invert:[{invert:["",u,s,n]}],saturate:[{saturate:[u,s,n]}],sepia:[{sepia:["",u,s,n]}],"backdrop-filter":[{"backdrop-filter":["","none",s,n]}],"backdrop-blur":[{"backdrop-blur":ue()}],"backdrop-brightness":[{"backdrop-brightness":[u,s,n]}],"backdrop-contrast":[{"backdrop-contrast":[u,s,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",u,s,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u,s,n]}],"backdrop-invert":[{"backdrop-invert":["",u,s,n]}],"backdrop-opacity":[{"backdrop-opacity":[u,s,n]}],"backdrop-saturate":[{"backdrop-saturate":[u,s,n]}],"backdrop-sepia":[{"backdrop-sepia":["",u,s,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":m()}],"border-spacing-x":[{"border-spacing-x":m()}],"border-spacing-y":[{"border-spacing-y":m()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",s,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[u,"initial",s,n]}],ease:[{ease:["linear","initial",P,s,n]}],delay:[{delay:[u,s,n]}],animate:[{animate:["none",$,s,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[v,s,n]}],"perspective-origin":[{"perspective-origin":V()}],rotate:[{rotate:Y()}],"rotate-x":[{"rotate-x":Y()}],"rotate-y":[{"rotate-y":Y()}],"rotate-z":[{"rotate-z":Y()}],scale:[{scale:q()}],"scale-x":[{"scale-x":q()}],"scale-y":[{"scale-y":q()}],"scale-z":[{"scale-z":q()}],"scale-3d":["scale-3d"],skew:[{skew:ee()}],"skew-x":[{"skew-x":ee()}],"skew-y":[{"skew-y":ee()}],transform:[{transform:[s,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:V()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:X()}],"translate-x":[{"translate-x":X()}],"translate-y":[{"translate-y":X()}],"translate-z":[{"translate-z":X()}],"translate-none":["translate-none"],accent:[{accent:d()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:d()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",s,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":m()}],"scroll-mx":[{"scroll-mx":m()}],"scroll-my":[{"scroll-my":m()}],"scroll-ms":[{"scroll-ms":m()}],"scroll-me":[{"scroll-me":m()}],"scroll-mt":[{"scroll-mt":m()}],"scroll-mr":[{"scroll-mr":m()}],"scroll-mb":[{"scroll-mb":m()}],"scroll-ml":[{"scroll-ml":m()}],"scroll-p":[{"scroll-p":m()}],"scroll-px":[{"scroll-px":m()}],"scroll-py":[{"scroll-py":m()}],"scroll-ps":[{"scroll-ps":m()}],"scroll-pe":[{"scroll-pe":m()}],"scroll-pt":[{"scroll-pt":m()}],"scroll-pr":[{"scroll-pr":m()}],"scroll-pb":[{"scroll-pb":m()}],"scroll-pl":[{"scroll-pl":m()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",s,n]}],fill:[{fill:["none",...d()]}],"stroke-w":[{stroke:[u,W,T,re]}],stroke:[{stroke:["none",...d()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Ro=so(So);function Mo(...e){return Ro(ve(e))}const Io=Ee("badge-base",{variants:{variant:{default:"badge-variant-default",success:"badge-variant-success",warning:"badge-variant-warning",error:"badge-variant-error",outline:"badge-variant-outline",secondary:"badge-variant-secondary"}},defaultVariants:{variant:"default"}});function To({className:e,variant:t,...o}){return Ve.jsx("div",{className:Mo(Io({variant:t}),e),...o})}export{To as B,jo as D,Go as S,Ee as a,Mo as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.button-base{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);white-space:nowrap;border-radius:6px;font-weight:800;transition:all .2s cubic-bezier(.16,1,.3,1);border:1px solid transparent;cursor:pointer;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.05em}.button-base:focus-visible{outline:none;border-color:var(--color-primary);box-shadow:0 0 10px #0f83}.button-base:disabled{pointer-events:none;opacity:.4;filter:grayscale(1)}.button-sm{height:28px;padding:0 12px;font-size:var(--fs-xs)}.button-default{height:36px;padding:0 20px;font-size:11px}.button-lg{height:44px;padding:0 32px;font-size:13px}.button-icon{height:36px;width:36px;padding:0}.button-variant-default{background:var(--color-primary);color:var(--bg-page);border:none;box-shadow:0 0 15px #0f83}.button-variant-default:hover{background:#00e67a;box-shadow:0 0 25px #0f86;transform:translateY(-1px)}.button-variant-default:active{transform:translateY(0)}.button-variant-outline{border:1px solid var(--border-visible);background:#0000004d;color:var(--text-bright)}.button-variant-outline:hover{border-color:var(--color-primary);color:var(--color-primary);background:#00ff880d}.button-variant-ghost{background:transparent;color:var(--text-dim)}.button-variant-ghost:hover{background:#ffffff0d;color:var(--text-bright)}.button-variant-destructive{background:#ff4d4d;color:var(--bg-page)}.button-variant-destructive:hover{background:#f33;box-shadow:0 0 20px #ff4d4d4d}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import{c as t,r as c,j as i}from"./index-ByQwMN5T.js";import{c as r,a as u}from"./badge-CSvl5xIU.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const d=[["path",{d:"M12 6.528V3a1 1 0 0 1 1-1h0",key:"11qiee"}],["path",{d:"M18.237 21A15 15 0 0 0 22 11a6 6 0 0 0-10-4.472A6 6 0 0 0 2 11a15.1 15.1 0 0 0 3.763 10 3 3 0 0 0 3.648.648 5.5 5.5 0 0 1 5.178 0A3 3 0 0 0 18.237 21",key:"110c12"}]],f=t("apple",d);/**
|
|
7
|
+
* @license lucide-react v0.555.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const p=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],x=t("check",p);/**
|
|
12
|
+
* @license lucide-react v0.555.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const l=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],_=t("copy",l);/**
|
|
17
|
+
* @license lucide-react v0.555.0 - ISC
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the ISC license.
|
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/const h=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],g=t("terminal",h);/**
|
|
22
|
+
* @license lucide-react v0.555.0 - ISC
|
|
23
|
+
*
|
|
24
|
+
* This source code is licensed under the ISC license.
|
|
25
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
+
*/const y=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],M=t("upload",y),b=u("button-base",{variants:{variant:{default:"button-variant-default",outline:"button-variant-outline",ghost:"button-variant-ghost",link:"button-variant-link",destructive:"button-variant-destructive"},size:{default:"button-default",sm:"button-sm",lg:"button-lg",icon:"button-icon"}},defaultVariants:{variant:"default",size:"default"}}),k=c.forwardRef(({className:a,variant:o,size:n,...e},s)=>i.jsx("button",{className:r(b({variant:o,size:n,className:a})),ref:s,...e}));k.displayName="Button";export{f as A,k as B,x as C,g as T,M as U,_ as a};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c as e}from"./index-ByQwMN5T.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const t=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],a=e("calendar",t);export{a as C};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c}from"./index-ByQwMN5T.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const o=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],r=c("clock",o);export{r as C};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c as h}from"./index-ByQwMN5T.js";/**
|
|
2
|
+
* @license lucide-react v0.555.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const t=[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]],d=h("cpu",t);export{d as C};
|