diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 082541e..a827fa4 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -4,7 +4,8 @@ "Bash(php artisan route:list:*)", "Bash(lsof:*)", "Bash(curl:*)", - "Bash(php:*)" + "Bash(php:*)", + "Bash(npm run build:*)" ], "deny": [], "ask": [] diff --git a/backend/public/assets/index-BAUGMyw4.css b/backend/public/assets/index-BAUGMyw4.css deleted file mode 100644 index 9492e90..0000000 --- a/backend/public/assets/index-BAUGMyw4.css +++ /dev/null @@ -1 +0,0 @@ -.home[data-v-677cbdbe]{text-align:center}.hero[data-v-677cbdbe]{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);color:#fff;padding:4rem 2rem;border-radius:15px;margin-bottom:3rem;box-shadow:0 4px 20px #2c5f5d4d}.hero h1[data-v-677cbdbe]{font-size:3rem;margin-bottom:1rem}.hero p[data-v-677cbdbe]{font-size:1.2rem;opacity:.9}.features[data-v-677cbdbe]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-bottom:3rem}.feature-card[data-v-677cbdbe]{background:#fff;padding:2rem;border-radius:10px;box-shadow:0 4px 15px #0000001a;transition:transform .3s ease}.feature-card[data-v-677cbdbe]:hover{transform:translateY(-5px)}.feature-card h3[data-v-677cbdbe]{color:var(--primary-color);margin-bottom:1rem;font-size:1.3rem}.feature-card p[data-v-677cbdbe]{color:var(--text-gray);line-height:1.6}.cta[data-v-677cbdbe]{background:linear-gradient(135deg,#f8f9fa,#fff);padding:3rem 2rem;border-radius:15px;border:3px solid var(--primary-color);box-shadow:0 4px 20px #2c5f5d26}.cta h2[data-v-677cbdbe]{color:var(--primary-color);margin-bottom:1rem}.cta p[data-v-677cbdbe]{color:var(--text-gray);font-size:1.1rem;margin-bottom:2rem}.cta-buttons[data-v-677cbdbe]{display:flex;gap:1rem;justify-content:center}.cta-button[data-v-677cbdbe]{display:inline-block;background:var(--primary-color);color:#fff;padding:1rem 2rem;text-decoration:none;border-radius:10px;font-size:1.1rem;font-weight:700;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.cta-button[data-v-677cbdbe]:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.cta-button.secondary[data-v-677cbdbe]{background:var(--secondary-color);box-shadow:0 4px 10px #8b6f474d}.cta-button.secondary[data-v-677cbdbe]:hover{background:var(--secondary-dark);box-shadow:0 6px 15px #8b6f4766}.booking[data-v-3d2c946f]{max-width:800px;margin:0 auto}.booking-header[data-v-3d2c946f]{text-align:center;margin-bottom:3rem}.booking-header h1[data-v-3d2c946f]{color:var(--primary-color);font-size:2.5rem;margin-bottom:1rem}.booking-header p[data-v-3d2c946f]{color:var(--text-gray);font-size:1.2rem}.booking-form-container[data-v-3d2c946f]{background:#fff;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a}.booking-form[data-v-3d2c946f]{display:flex;flex-direction:column;gap:1.5rem}.form-row[data-v-3d2c946f]{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.form-row .full-width[data-v-3d2c946f]{grid-column:1 / -1}.form-group[data-v-3d2c946f]{display:flex;flex-direction:column}.form-group label[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);margin-bottom:.5rem}.form-group input[data-v-3d2c946f],.form-group textarea[data-v-3d2c946f]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-group input[data-v-3d2c946f]:focus,.form-group textarea[data-v-3d2c946f]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2c5f5d1a}.form-group textarea[data-v-3d2c946f]{resize:vertical;min-height:80px}.custom-date-picker[data-v-3d2c946f]{border:2px solid #e1e8ed;border-radius:8px;overflow:hidden;background:#fff}.date-picker-header[data-v-3d2c946f]{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-bottom:1px solid #e1e8ed}.nav-btn[data-v-3d2c946f]{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:4px;transition:background-color .3s ease}.nav-btn[data-v-3d2c946f]:hover{background:#e1e8ed}.current-month[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);text-transform:capitalize}.date-picker-grid[data-v-3d2c946f]{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e1e8ed}.weekday-header[data-v-3d2c946f]{background:#f8f9fa;padding:.75rem;text-align:center;font-weight:700;color:var(--primary-color);font-size:.875rem}.calendar-date[data-v-3d2c946f]{background:#fff;padding:.75rem;text-align:center;cursor:pointer;transition:all .3s ease;border:none;font-size:.875rem}.calendar-date[data-v-3d2c946f]:hover:not(.disabled):not(.blocked){background:#e3f2fd}.calendar-date.other-month[data-v-3d2c946f]{color:#bdc3c7;background:#f8f9fa}.calendar-date.disabled[data-v-3d2c946f]{color:#bdc3c7;background:#f8f9fa;cursor:not-allowed}.calendar-date.blocked[data-v-3d2c946f]{color:#dc3545;background:#f8d7da;cursor:not-allowed;position:relative}.calendar-date.blocked[data-v-3d2c946f]:after{content:"🚫";position:absolute;top:2px;right:2px;font-size:.75rem}.calendar-date.selected[data-v-3d2c946f]{background:var(--primary-color);color:#fff;font-weight:700}.calendar-date.today[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);border:2px solid var(--primary-color)}.calendar-date.today.selected[data-v-3d2c946f]{color:#fff}.form-error[data-v-3d2c946f]{background:#fee;color:#c53030;padding:1rem;border-radius:8px;border:1px solid #feb2b2;text-align:center}.form-actions[data-v-3d2c946f]{text-align:center;margin-top:1rem}.submit-btn[data-v-3d2c946f]{background:var(--primary-color);color:#fff;border:none;padding:1rem 2rem;border-radius:10px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.submit-btn[data-v-3d2c946f]:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.submit-btn[data-v-3d2c946f]:disabled{background:#bdc3c7;cursor:not-allowed}.modal-overlay[data-v-3d2c946f]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-3d2c946f]{background:#fff;border-radius:15px;padding:2rem;max-width:500px;width:90%;box-shadow:0 10px 30px #0000004d}.modal-header[data-v-3d2c946f]{text-align:center;margin-bottom:1.5rem}.modal-header h3[data-v-3d2c946f]{color:var(--primary-color);font-size:1.5rem}.modal-body[data-v-3d2c946f]{margin-bottom:2rem}.modal-body p[data-v-3d2c946f]{color:#666;line-height:1.6;margin-bottom:1rem}.modal-footer[data-v-3d2c946f]{text-align:center}.btn-primary[data-v-3d2c946f]{background:var(--primary-color);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;cursor:pointer;font-size:1rem;transition:all .3s ease;box-shadow:0 2px 6px #2c5f5d4d}.btn-primary[data-v-3d2c946f]:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 10px #2c5f5d66}@media (max-width: 768px){.form-row[data-v-3d2c946f]{grid-template-columns:1fr}.booking-form-container[data-v-3d2c946f]{padding:1.5rem}}.admin[data-v-3ab599c9]{max-width:1200px;margin:0 auto}.admin-header[data-v-3ab599c9]{text-align:center;margin-bottom:3rem}.admin-header h1[data-v-3ab599c9]{color:var(--primary-color);font-size:2.5rem;margin-bottom:1rem}.admin-header p[data-v-3ab599c9]{color:var(--text-gray);font-size:1.2rem;margin-bottom:1rem}.admin-user-info[data-v-3ab599c9]{display:flex;justify-content:center;align-items:center;gap:1rem;background:#f8f9fa;padding:1rem;border-radius:8px;border:1px solid #e1e8ed}.admin-user-info span[data-v-3ab599c9]{color:#2c3e50;font-weight:500}.logout-btn[data-v-3ab599c9]{background:#dc3545;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background-color .3s ease}.logout-btn[data-v-3ab599c9]:hover{background:#c82333}.admin-tabs[data-v-3ab599c9]{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:2px solid #e1e8ed}.tab-button[data-v-3ab599c9]{background:none;border:none;padding:1rem 2rem;font-size:1rem;cursor:pointer;border-bottom:3px solid transparent;transition:all .3s ease}.tab-button.active[data-v-3ab599c9]{border-bottom-color:var(--primary-color);color:var(--primary-color);font-weight:700}.tab-button[data-v-3ab599c9]:hover{background:#f8f9fa}.tab-content[data-v-3ab599c9]{background:#fff;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a}.section-header[data-v-3ab599c9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.section-header h2[data-v-3ab599c9]{color:var(--primary-color);margin:0}.status-filter[data-v-3ab599c9]{background:#f8f9fa;padding:1rem;border-radius:10px;margin-bottom:1.5rem;border:2px solid #e1e8ed}.filter-title[data-v-3ab599c9]{font-weight:700;color:#2c3e50;margin-bottom:.75rem;font-size:.95rem}.filter-checkboxes[data-v-3ab599c9]{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.filter-checkbox[data-v-3ab599c9]{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background-color .3s ease}.filter-checkbox[data-v-3ab599c9]:hover{background:#fff}.filter-checkbox input[type=checkbox][data-v-3ab599c9]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color)}.checkbox-label[data-v-3ab599c9]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.filter-checkbox .status-badge[data-v-3ab599c9]{font-size:.85rem;padding:.4rem .8rem;cursor:pointer}.refresh-btn[data-v-3ab599c9],.add-btn[data-v-3ab599c9]{background:var(--primary-color);color:#fff;border:none;width:40px;height:40px;border-radius:8px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.refresh-btn[data-v-3ab599c9]:hover:not(:disabled),.add-btn[data-v-3ab599c9]:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 4px 8px #2c5f5d4d}.refresh-btn[data-v-3ab599c9]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.refresh-btn[title][data-v-3ab599c9]:hover:after,.add-btn[title][data-v-3ab599c9]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.refresh-btn[title][data-v-3ab599c9]:hover:before,.add-btn[title][data-v-3ab599c9]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.requests-table[data-v-3ab599c9]{border:1px solid #e1e8ed;border-radius:8px;overflow:hidden}.table-header[data-v-3ab599c9]{display:grid;grid-template-columns:80px 1fr 200px 120px 200px;background:#f8f9fa;font-weight:700;color:#2c3e50}.header-cell[data-v-3ab599c9]{padding:1rem;border-right:1px solid #e1e8ed}.header-cell[data-v-3ab599c9]:last-child{border-right:none}.table-row[data-v-3ab599c9]{display:grid;grid-template-columns:80px 1fr 200px 120px 200px;border-bottom:1px solid #e1e8ed;transition:background-color .3s ease}.table-row[data-v-3ab599c9]:hover{background:#f8f9fa}.table-row[data-v-3ab599c9]:last-child{border-bottom:none}.cell[data-v-3ab599c9]{padding:1rem;border-right:1px solid #e1e8ed;display:flex;align-items:center}.cell[data-v-3ab599c9]:last-child{border-right:none}.status-badge[data-v-3ab599c9]{padding:.25rem .75rem;border-radius:20px;font-size:.875rem;font-weight:700;text-transform:capitalize}.status-badge.pending[data-v-3ab599c9]{background:#fff3cd;color:#856404}.status-badge.confirmed[data-v-3ab599c9]{background:#d1ecf1;color:#0c5460}.status-badge.mail_sent[data-v-3ab599c9]{background:#e7d4c5;color:#6d5637;font-weight:700}.status-badge.completed[data-v-3ab599c9]{background:#d4edda;color:#155724}.status-badge.cancelled[data-v-3ab599c9]{background:#f8d7da;color:#721c24}.actions[data-v-3ab599c9]{gap:.5rem;justify-content:center}.action-btn[data-v-3ab599c9]{background:#6c757d;color:#fff;border:none;width:40px;height:40px;border-radius:6px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.action-btn[data-v-3ab599c9]:hover:not(:disabled){background:#5a6268;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.action-btn[data-v-3ab599c9]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.action-btn.view[data-v-3ab599c9]{background:#17a2b8}.action-btn.view[data-v-3ab599c9]:hover:not(:disabled){background:#138496}.action-btn.email[data-v-3ab599c9]{background:#28a745}.action-btn.email[data-v-3ab599c9]:hover:not(:disabled){background:#218838}.action-btn.sms[data-v-3ab599c9]{background:#ffc107;color:#212529}.action-btn.sms[data-v-3ab599c9]:hover:not(:disabled){background:#e0a800}.action-btn.comm[data-v-3ab599c9]{background:#6f42c1}.action-btn.comm[data-v-3ab599c9]:hover:not(:disabled){background:#5a32a3}.action-btn.edit[data-v-3ab599c9]{background:#17a2b8}.action-btn.edit[data-v-3ab599c9]:hover:not(:disabled){background:#138496}.action-btn.delete[data-v-3ab599c9]{background:#dc3545}.action-btn.delete[data-v-3ab599c9]:hover:not(:disabled){background:#c82333}.pricelist-table[data-v-3ab599c9]{border:1px solid #e1e8ed;border-radius:8px;overflow:hidden}.pricelist-table .table-header[data-v-3ab599c9]{display:grid;grid-template-columns:1fr 2fr 100px 80px 100px 120px;background:#f8f9fa;font-weight:700;color:#2c3e50}.pricelist-table .table-row[data-v-3ab599c9]{display:grid;grid-template-columns:1fr 2fr 100px 80px 100px 120px;border-bottom:1px solid #e1e8ed;transition:background-color .3s ease}.pricelist-table .table-row[data-v-3ab599c9]:hover{background:#f8f9fa}.pricelist-table .table-row[data-v-3ab599c9]:last-child{border-bottom:none}.status-badge.active[data-v-3ab599c9]{background:#d4edda;color:#155724}.status-badge.inactive[data-v-3ab599c9]{background:#f8d7da;color:#721c24}.action-btn[title][data-v-3ab599c9]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.action-btn[title][data-v-3ab599c9]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.loading-row[data-v-3ab599c9],.empty-row[data-v-3ab599c9]{grid-column:1 / -1;padding:2rem;text-align:center;color:#666}.blocked-dates-list[data-v-3ab599c9]{display:flex;flex-direction:column;gap:1rem}.blocked-date-item[data-v-3ab599c9]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border:1px solid #e1e8ed;border-radius:8px;background:#f8f9fa}.date-info[data-v-3ab599c9]{display:flex;flex-direction:column;gap:.5rem}.date[data-v-3ab599c9]{font-weight:700;color:#2c3e50}.reason[data-v-3ab599c9]{color:#666;font-size:.875rem}.date-actions[data-v-3ab599c9]{display:flex;gap:.5rem}.edit-btn[data-v-3ab599c9],.delete-btn[data-v-3ab599c9]{border:none;width:40px;height:40px;border-radius:6px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.edit-btn[data-v-3ab599c9]{background:#17a2b8;color:#fff}.edit-btn[data-v-3ab599c9]:hover{background:#138496;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.delete-btn[data-v-3ab599c9]{background:#dc3545;color:#fff}.delete-btn[data-v-3ab599c9]:hover{background:#c82333;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.edit-btn[title][data-v-3ab599c9]:hover:after,.delete-btn[title][data-v-3ab599c9]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.edit-btn[title][data-v-3ab599c9]:hover:before,.delete-btn[title][data-v-3ab599c9]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.settings-form[data-v-3ab599c9]{display:flex;flex-direction:column;gap:2rem}.setting-group[data-v-3ab599c9]{display:flex;flex-direction:column;gap:.5rem}.setting-group label[data-v-3ab599c9]{font-weight:700;color:#2c3e50}.setting-group input[data-v-3ab599c9],.setting-group textarea[data-v-3ab599c9]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;font-family:inherit}.setting-group input[data-v-3ab599c9]:focus,.setting-group textarea[data-v-3ab599c9]:focus{outline:none;border-color:var(--primary-color)}.setting-group textarea[data-v-3ab599c9]{resize:vertical;min-height:120px}.save-btn[data-v-3ab599c9]{background:#28a745;color:#fff;border:none;width:40px;height:40px;border-radius:8px;cursor:pointer;align-self:flex-start;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.save-btn[data-v-3ab599c9]:hover{background:#218838;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.save-btn[title][data-v-3ab599c9]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.save-btn[title][data-v-3ab599c9]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.modal-overlay[data-v-3ab599c9]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-3ab599c9]{background:#fff;border-radius:15px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 30px #0000004d}.modal-content.large[data-v-3ab599c9]{max-width:800px}.modal-header[data-v-3ab599c9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e1e8ed}.modal-header h3[data-v-3ab599c9]{color:#2c3e50;margin:0}.close-btn[data-v-3ab599c9]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .3s ease;position:relative}.close-btn[data-v-3ab599c9]:hover{color:#333;background:#f8f9fa}.close-btn[title][data-v-3ab599c9]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.close-btn[title][data-v-3ab599c9]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.modal-body[data-v-3ab599c9]{margin-bottom:2rem}.modal-footer[data-v-3ab599c9]{display:flex;gap:1rem;justify-content:flex-end}.btn-primary[data-v-3ab599c9],.btn-secondary[data-v-3ab599c9]{padding:.75rem 1.5rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;transition:background-color .3s ease}.btn-primary[data-v-3ab599c9]{background:var(--primary-color);color:#fff}.btn-primary[data-v-3ab599c9]:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 4px 10px #2c5f5d4d}.btn-secondary[data-v-3ab599c9]{background:#6c757d;color:#fff}.btn-secondary[data-v-3ab599c9]:hover{background:#5a6268}.btn-pickup-confirmation[data-v-3ab599c9]{padding:.75rem 1.5rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;transition:all .3s ease;background:var(--secondary-color);color:#fff;font-weight:700}.btn-pickup-confirmation[data-v-3ab599c9]:hover:not(:disabled){background:var(--secondary-dark);box-shadow:0 4px 10px #8b6f474d;transform:translateY(-2px)}.btn-pickup-confirmation[data-v-3ab599c9]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.form-group[data-v-3ab599c9]{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.form-group label[data-v-3ab599c9]{font-weight:700;color:#2c3e50}.form-group input[data-v-3ab599c9],.form-group textarea[data-v-3ab599c9]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem}.form-group input[data-v-3ab599c9]:focus,.form-group textarea[data-v-3ab599c9]:focus{outline:none;border-color:#3498db}.form-group textarea[data-v-3ab599c9]{resize:vertical;min-height:80px}.request-details[data-v-3ab599c9]{display:flex;flex-direction:column;gap:1rem}.detail-row[data-v-3ab599c9]{display:flex;gap:1rem;align-items:center}.detail-row strong[data-v-3ab599c9]{min-width:150px;color:#2c3e50}.detail-row input[data-v-3ab599c9],.detail-row select[data-v-3ab599c9]{padding:.5rem;border:1px solid #e1e8ed;border-radius:4px;flex:1}.no-communications[data-v-3ab599c9]{text-align:center;color:#666;padding:2rem}.communications-list[data-v-3ab599c9]{display:flex;flex-direction:column;gap:1rem}.communication-item[data-v-3ab599c9]{border:1px solid #e1e8ed;border-radius:8px;padding:1rem;background:#f8f9fa}.comm-header[data-v-3ab599c9]{display:flex;gap:1rem;margin-bottom:.5rem;font-size:.875rem}.comm-type[data-v-3ab599c9]{background:#3498db;color:#fff;padding:.25rem .5rem;border-radius:4px;font-weight:700}.comm-direction[data-v-3ab599c9]{color:#666}.comm-date[data-v-3ab599c9]{color:#666;margin-left:auto}.comm-message[data-v-3ab599c9]{color:#2c3e50;line-height:1.5}.loading-state[data-v-3ab599c9]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#666}.loading-spinner[data-v-3ab599c9]{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin-3ab599c9 1s linear infinite;margin-bottom:1rem}@keyframes spin-3ab599c9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.admin-tabs[data-v-3ab599c9]{flex-direction:column}.table-header[data-v-3ab599c9],.table-row[data-v-3ab599c9]{grid-template-columns:1fr;gap:.5rem}.header-cell[data-v-3ab599c9],.cell[data-v-3ab599c9]{border-right:none;border-bottom:1px solid #e1e8ed}.actions[data-v-3ab599c9]{flex-direction:row;justify-content:center;gap:.5rem}.blocked-date-item[data-v-3ab599c9]{flex-direction:column;gap:1rem;align-items:flex-start}.modal-content[data-v-3ab599c9]{margin:1rem;width:calc(100% - 2rem)}.admin-user-info[data-v-3ab599c9]{flex-direction:column;gap:.5rem}}.content-sections[data-v-3ab599c9]{display:flex;flex-direction:column;gap:2rem}.content-section[data-v-3ab599c9]{background:#f8f9fa;padding:1.5rem;border-radius:10px;border:1px solid #e1e8ed}.content-section h3[data-v-3ab599c9]{color:#2c3e50;margin-bottom:1rem;font-size:1.3rem}.content-section h4[data-v-3ab599c9]{color:#2c3e50;margin-bottom:.75rem;font-size:1.1rem}.content-form[data-v-3ab599c9]{display:flex;flex-direction:column;gap:1rem}.feature-group[data-v-3ab599c9]{background:#fff;padding:1rem;border-radius:8px;border:1px solid #e1e8ed}.feature-group[data-v-3ab599c9]:not(:last-child){margin-bottom:1rem}.content-form .form-group[data-v-3ab599c9]{margin-bottom:.5rem}.content-form .form-group label[data-v-3ab599c9]{font-weight:600;color:#2c3e50;margin-bottom:.5rem;display:block}.content-form .form-group input[data-v-3ab599c9],.content-form .form-group textarea[data-v-3ab599c9]{width:100%;padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.content-form .form-group input[data-v-3ab599c9]:focus,.content-form .form-group textarea[data-v-3ab599c9]:focus{outline:none;border-color:var(--primary-color);background:#f8f9fa;box-shadow:0 0 0 3px #2c5f5d1a}.content-form .form-group textarea[data-v-3ab599c9]{resize:vertical;font-family:inherit}.login[data-v-2b41928d]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);padding:2rem}.login-container[data-v-2b41928d]{background:#fff;border-radius:15px;padding:3rem;box-shadow:0 10px 30px #0000004d;max-width:400px;width:100%}.login-header[data-v-2b41928d]{text-align:center;margin-bottom:2rem}.login-header h1[data-v-2b41928d]{color:var(--primary-color);font-size:2rem;margin-bottom:.5rem}.login-header p[data-v-2b41928d]{color:var(--text-gray);font-size:1rem}.login-form[data-v-2b41928d]{display:flex;flex-direction:column;gap:1.5rem}.form-group[data-v-2b41928d]{display:flex;flex-direction:column;gap:.5rem}.form-group label[data-v-2b41928d]{font-weight:700;color:var(--primary-color);font-size:.9rem}.form-group input[data-v-2b41928d]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-group input[data-v-2b41928d]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2c5f5d1a}.form-group input[data-v-2b41928d]:disabled{background:#f8f9fa;cursor:not-allowed}.form-error[data-v-2b41928d]{background:#fee;color:#c53030;padding:1rem;border-radius:8px;border:1px solid #feb2b2;text-align:center;font-size:.9rem}.login-btn[data-v-2b41928d]{background:var(--primary-color);color:#fff;border:none;padding:1rem;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.login-btn[data-v-2b41928d]:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.login-btn[data-v-2b41928d]:disabled{background:#bdc3c7;cursor:not-allowed}.login-info[data-v-2b41928d]{margin-top:2rem;padding:1.5rem;background:#f8f9fa;border-radius:8px;border:1px solid #e1e8ed}.login-info p[data-v-2b41928d]{margin:.5rem 0;color:#666;font-size:.9rem}.login-info strong[data-v-2b41928d]{color:var(--primary-color)}@media (max-width: 480px){.login-container[data-v-2b41928d]{padding:2rem}.login-header h1[data-v-2b41928d]{font-size:1.75rem}}.pricelist[data-v-a4add45b]{max-width:1200px;margin:0 auto;padding:2rem}.pricelist-header[data-v-a4add45b]{text-align:center;margin-bottom:3rem}.pricelist-header h1[data-v-a4add45b]{color:#2c3e50;font-size:3rem;margin-bottom:1rem}.pricelist-header p[data-v-a4add45b]{color:#666;font-size:1.2rem;margin-bottom:2rem}.back-btn[data-v-a4add45b]{display:inline-block;background:var(--secondary-color);color:#fff;padding:.75rem 1.5rem;text-decoration:none;border-radius:8px;font-size:1rem;transition:background-color .3s ease}.back-btn[data-v-a4add45b]:hover{background:var(--secondary-dark)}.loading-state[data-v-a4add45b],.empty-state[data-v-a4add45b]{text-align:center;padding:4rem;color:#666}.loading-spinner[data-v-a4add45b]{border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;width:50px;height:50px;animation:spin-a4add45b 1s linear infinite;margin:0 auto 1rem}@keyframes spin-a4add45b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pricelist-grid[data-v-a4add45b]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;margin-bottom:4rem}.price-card[data-v-a4add45b]{background:#fff;border:2px solid #e1e8ed;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a;transition:all .3s ease}.price-card[data-v-a4add45b]:hover{transform:translateY(-5px);box-shadow:0 8px 25px #00000026;border-color:var(--primary-color)}.price-header[data-v-a4add45b]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #f8f9fa}.price-header h3[data-v-a4add45b]{color:#2c3e50;margin:0;font-size:1.3rem}.price[data-v-a4add45b]{background:var(--primary-color);color:#fff;padding:.5rem 1rem;border-radius:25px;font-size:1.2rem;font-weight:700}.description[data-v-a4add45b]{color:#666;line-height:1.6;margin:0}.cta-section[data-v-a4add45b]{text-align:center;background:#f8f9fa;padding:3rem 2rem;border-radius:15px;border:2px dashed var(--primary-color)}.cta-section h2[data-v-a4add45b]{color:#2c3e50;margin-bottom:1rem}.cta-section p[data-v-a4add45b]{color:#666;font-size:1.1rem;margin-bottom:2rem}.cta-button[data-v-a4add45b]{display:inline-block;background:var(--primary-color);color:#fff;padding:1rem 2rem;text-decoration:none;border-radius:10px;font-size:1.1rem;font-weight:700;transition:background-color .3s ease}.cta-button[data-v-a4add45b]:hover{background:var(--primary-dark)}@media (max-width: 768px){.pricelist[data-v-a4add45b]{padding:1rem}.pricelist-header h1[data-v-a4add45b]{font-size:2rem}.pricelist-grid[data-v-a4add45b]{grid-template-columns:1fr;gap:1rem}.price-header[data-v-a4add45b]{flex-direction:column;text-align:center;gap:1rem}}:root{--primary-color: #2c5f5d;--primary-dark: #1f4443;--primary-light: #3d7a77;--secondary-color: #8b6f47;--secondary-dark: #6d5637;--secondary-light: #a68a5f;--text-dark: #2c3e50;--text-gray: #666;--bg-light: #f5f5f5;--bg-white: #ffffff}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:var(--bg-light)}.navbar{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);padding:.5rem 0;box-shadow:0 2px 10px #2c5f5d33}.nav-container{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:0 2rem}.nav-logo{display:flex;align-items:center;text-decoration:none}.logo-image{height:70px;width:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .3s ease}.logo-image:hover{transform:scale(1.05)}.nav-menu{display:flex;gap:2rem;align-items:center}.nav-link{color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:5px;transition:all .3s ease;font-weight:500}.nav-link:hover{background-color:#ffffff26;transform:translateY(-1px)}.nav-link.router-link-active{background-color:var(--secondary-color)}.main-content{max-width:1200px;margin:2rem auto;padding:0 2rem}@media (max-width: 768px){.nav-container{flex-direction:column;gap:1rem;padding:1rem}.logo-image{height:75px}.nav-menu{flex-wrap:wrap;justify-content:center;gap:1rem}.nav-link{padding:.4rem .8rem;font-size:.9rem}}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333;background-color:#f5f5f5}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.p-4{padding:2rem}.btn{display:inline-block;padding:.5rem 1rem;border:none;border-radius:5px;cursor:pointer;text-decoration:none;font-size:1rem;transition:all .3s ease}.btn-primary{background:#667eea;color:#fff}.btn-primary:hover{background:#5a6fd8}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268}.card{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:1.5rem;margin-bottom:1rem}@media (max-width: 768px){.nav-container{flex-direction:column;gap:1rem}.nav-menu{gap:1rem}.hero h1{font-size:2rem}.features{grid-template-columns:1fr}} diff --git a/backend/public/assets/index-Cl0qWLNb.js b/backend/public/assets/index-Cl0qWLNb.js new file mode 100644 index 0000000..389acc5 --- /dev/null +++ b/backend/public/assets/index-Cl0qWLNb.js @@ -0,0 +1,25 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const r of i.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function s(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(o){if(o.ep)return;o.ep=!0;const i=s(o);fetch(o.href,i)}})();/** +* @vue/shared v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Bs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const fe={},Kt=[],it=()=>{},si=()=>!1,Jn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ls=e=>e.startsWith("onUpdate:"),De=Object.assign,Hs=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Mr=Object.prototype.hasOwnProperty,ce=(e,t)=>Mr.call(e,t),W=Array.isArray,Wt=e=>Cn(e)==="[object Map]",Xt=e=>Cn(e)==="[object Set]",io=e=>Cn(e)==="[object Date]",$=e=>typeof e=="function",we=e=>typeof e=="string",rt=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",oi=e=>(ge(e)||$(e))&&$(e.then)&&$(e.catch),ii=Object.prototype.toString,Cn=e=>ii.call(e),Ir=e=>Cn(e).slice(8,-1),ri=e=>Cn(e)==="[object Object]",Ns=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rn=Bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Yn=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},jr=/-(\w)/g,ze=Yn(e=>e.replace(jr,(t,s)=>s?s.toUpperCase():"")),Dr=/\B([A-Z])/g,Ft=Yn(e=>e.replace(Dr,"-$1").toLowerCase()),Qn=Yn(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Yn(e=>e?`on${Qn(e)}`:""),Et=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Bn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ro;const Zn=()=>ro||(ro=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function qs(e){if(W(e)){const t={};for(let s=0;s{if(s){const n=s.split(Fr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function We(e){let t="";if(we(e))t=e;else if(W(e))for(let s=0;sEn(s,t))}const ci=e=>!!(e&&e.__v_isRef===!0),I=e=>we(e)?e:e==null?"":W(e)||ge(e)&&(e.toString===ii||!$(e.toString))?ci(e)?I(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>ci(t)?ui(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,o],i)=>(s[us(n,i)+" =>"]=o,s),{})}:Xt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>us(s))}:rt(t)?us(t):ge(t)&&!W(t)&&!ri(t)?String(t):t,us=(e,t="")=>{var s;return rt(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** +* @vue/reactivity v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Me;class di{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Me,!t&&Me&&(this.index=(Me.scopes||(Me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(Me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(an){let t=an;for(an=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;ln;){let t=ln;for(ln=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function vi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function _i(e){let t,s=e.depsTail,n=s;for(;n;){const o=n.prevDep;n.version===-1?(n===s&&(s=o),Gs(n),Kr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=o}e.deps=t,e.depsTail=s}function ks(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(bi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function bi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===vn)||(e.globalVersion=vn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ks(e))))return;e.flags|=2;const t=e.dep,s=me,n=Ze;me=e,Ze=!0;try{vi(e);const o=e.fn(e._value);(t.version===0||Et(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{me=s,Ze=n,_i(e),e.flags&=-3}}function Gs(e,t=!1){const{dep:s,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Gs(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Kr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ze=!0;const yi=[];function mt(){yi.push(Ze),Ze=!1}function gt(){const e=yi.pop();Ze=e===void 0?!0:e}function lo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=me;me=void 0;try{t()}finally{me=s}}}let vn=0;class Wr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!me||!Ze||me===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==me)s=this.activeLink=new Wr(me,this),me.deps?(s.prevDep=me.depsTail,me.depsTail.nextDep=s,me.depsTail=s):me.deps=me.depsTail=s,wi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=me.depsTail,s.nextDep=void 0,me.depsTail.nextDep=s,me.depsTail=s,me.deps===s&&(me.deps=n)}return s}trigger(t){this.version++,vn++,this.notify(t)}notify(t){Ks();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ws()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)wi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ln=new WeakMap,Dt=Symbol(""),xs=Symbol(""),_n=Symbol("");function Ie(e,t,s){if(Ze&&me){let n=Ln.get(e);n||Ln.set(e,n=new Map);let o=n.get(s);o||(n.set(s,o=new zs),o.map=n,o.key=s),o.track()}}function ft(e,t,s,n,o,i){const r=Ln.get(e);if(!r){vn++;return}const a=u=>{u&&u.trigger()};if(Ks(),t==="clear")r.forEach(a);else{const u=W(e),p=u&&Ns(s);if(u&&s==="length"){const f=Number(n);r.forEach((m,v)=>{(v==="length"||v===_n||!rt(v)&&v>=f)&&a(m)})}else switch((s!==void 0||r.has(void 0))&&a(r.get(s)),p&&a(r.get(_n)),t){case"add":u?p&&a(r.get("length")):(a(r.get(Dt)),Wt(e)&&a(r.get(xs)));break;case"delete":u||(a(r.get(Dt)),Wt(e)&&a(r.get(xs)));break;case"set":Wt(e)&&a(r.get(Dt));break}}Ws()}function Gr(e,t){const s=Ln.get(e);return s&&s.get(t)}function Lt(e){const t=se(e);return t===e?t:(Ie(t,"iterate",_n),Ge(e)?t:t.map(Pe))}function Xn(e){return Ie(e=se(e),"iterate",_n),e}const zr={__proto__:null,[Symbol.iterator](){return fs(this,Symbol.iterator,Pe)},concat(...e){return Lt(this).concat(...e.map(t=>W(t)?Lt(t):t))},entries(){return fs(this,"entries",e=>(e[1]=Pe(e[1]),e))},every(e,t){return at(this,"every",e,t,void 0,arguments)},filter(e,t){return at(this,"filter",e,t,s=>s.map(Pe),arguments)},find(e,t){return at(this,"find",e,t,Pe,arguments)},findIndex(e,t){return at(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return at(this,"findLast",e,t,Pe,arguments)},findLastIndex(e,t){return at(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return at(this,"forEach",e,t,void 0,arguments)},includes(...e){return hs(this,"includes",e)},indexOf(...e){return hs(this,"indexOf",e)},join(e){return Lt(this).join(e)},lastIndexOf(...e){return hs(this,"lastIndexOf",e)},map(e,t){return at(this,"map",e,t,void 0,arguments)},pop(){return tn(this,"pop")},push(...e){return tn(this,"push",e)},reduce(e,...t){return ao(this,"reduce",e,t)},reduceRight(e,...t){return ao(this,"reduceRight",e,t)},shift(){return tn(this,"shift")},some(e,t){return at(this,"some",e,t,void 0,arguments)},splice(...e){return tn(this,"splice",e)},toReversed(){return Lt(this).toReversed()},toSorted(e){return Lt(this).toSorted(e)},toSpliced(...e){return Lt(this).toSpliced(...e)},unshift(...e){return tn(this,"unshift",e)},values(){return fs(this,"values",Pe)}};function fs(e,t,s){const n=Xn(e),o=n[t]();return n!==e&&!Ge(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.value&&(i.value=s(i.value)),i}),o}const Jr=Array.prototype;function at(e,t,s,n,o,i){const r=Xn(e),a=r!==e&&!Ge(e),u=r[t];if(u!==Jr[t]){const m=u.apply(e,i);return a?Pe(m):m}let p=s;r!==e&&(a?p=function(m,v){return s.call(this,Pe(m),v,e)}:s.length>2&&(p=function(m,v){return s.call(this,m,v,e)}));const f=u.call(r,p,n);return a&&o?o(f):f}function ao(e,t,s,n){const o=Xn(e);let i=s;return o!==e&&(Ge(e)?s.length>3&&(i=function(r,a,u){return s.call(this,r,a,u,e)}):i=function(r,a,u){return s.call(this,r,Pe(a),u,e)}),o[t](i,...n)}function hs(e,t,s){const n=se(e);Ie(n,"iterate",_n);const o=n[t](...s);return(o===-1||o===!1)&&Qs(s[0])?(s[0]=se(s[0]),n[t](...s)):o}function tn(e,t,s=[]){mt(),Ks();const n=se(e)[t].apply(e,s);return Ws(),gt(),n}const Yr=Bs("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function Qr(e){rt(e)||(e=String(e));const t=se(this);return Ie(t,"has",e),t.hasOwnProperty(e)}class ki{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const o=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!o;if(s==="__v_isReadonly")return o;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(o?i?rl:Pi:i?Ei:Ci).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const r=W(t);if(!o){let u;if(r&&(u=zr[s]))return u;if(s==="hasOwnProperty")return Qr}const a=Reflect.get(t,s,ye(t)?t:n);return(rt(s)?Si.has(s):Yr(s))||(o||Ie(t,"get",s),i)?a:ye(a)?r&&Ns(s)?a:a.value:ge(a)?o?Ai(a):Pn(a):a}}class xi extends ki{constructor(t=!1){super(!1,t)}set(t,s,n,o){let i=t[s];if(!this._isShallow){const u=Rt(i);if(!Ge(n)&&!Rt(n)&&(i=se(i),n=se(n)),!W(t)&&ye(i)&&!ye(n))return u||(i.value=n),!0}const r=W(t)&&Ns(s)?Number(s)e,Tn=e=>Reflect.getPrototypeOf(e);function tl(e,t,s){return function(...n){const o=this.__v_raw,i=se(o),r=Wt(i),a=e==="entries"||e===Symbol.iterator&&r,u=e==="keys"&&r,p=o[e](...n),f=s?Cs:t?Hn:Pe;return!t&&Ie(i,"iterate",u?xs:Dt),{next(){const{value:m,done:v}=p.next();return v?{value:m,done:v}:{value:a?[f(m[0]),f(m[1])]:f(m),done:v}},[Symbol.iterator](){return this}}}}function On(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(e,t){const s={get(o){const i=this.__v_raw,r=se(i),a=se(o);e||(Et(o,a)&&Ie(r,"get",o),Ie(r,"get",a));const{has:u}=Tn(r),p=t?Cs:e?Hn:Pe;if(u.call(r,o))return p(i.get(o));if(u.call(r,a))return p(i.get(a));i!==r&&i.get(o)},get size(){const o=this.__v_raw;return!e&&Ie(se(o),"iterate",Dt),o.size},has(o){const i=this.__v_raw,r=se(i),a=se(o);return e||(Et(o,a)&&Ie(r,"has",o),Ie(r,"has",a)),o===a?i.has(o):i.has(o)||i.has(a)},forEach(o,i){const r=this,a=r.__v_raw,u=se(a),p=t?Cs:e?Hn:Pe;return!e&&Ie(u,"iterate",Dt),a.forEach((f,m)=>o.call(i,p(f),p(m),r))}};return De(s,e?{add:On("add"),set:On("set"),delete:On("delete"),clear:On("clear")}:{add(o){!t&&!Ge(o)&&!Rt(o)&&(o=se(o));const i=se(this);return Tn(i).has.call(i,o)||(i.add(o),ft(i,"add",o,o)),this},set(o,i){!t&&!Ge(i)&&!Rt(i)&&(i=se(i));const r=se(this),{has:a,get:u}=Tn(r);let p=a.call(r,o);p||(o=se(o),p=a.call(r,o));const f=u.call(r,o);return r.set(o,i),p?Et(i,f)&&ft(r,"set",o,i):ft(r,"add",o,i),this},delete(o){const i=se(this),{has:r,get:a}=Tn(i);let u=r.call(i,o);u||(o=se(o),u=r.call(i,o)),a&&a.call(i,o);const p=i.delete(o);return u&&ft(i,"delete",o,void 0),p},clear(){const o=se(this),i=o.size!==0,r=o.clear();return i&&ft(o,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(o=>{s[o]=tl(o,e,t)}),s}function Js(e,t){const s=nl(e,t);return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(ce(s,o)&&o in n?s:n,o,i)}const sl={get:Js(!1,!1)},ol={get:Js(!1,!0)},il={get:Js(!0,!1)};const Ci=new WeakMap,Ei=new WeakMap,Pi=new WeakMap,rl=new WeakMap;function ll(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function al(e){return e.__v_skip||!Object.isExtensible(e)?0:ll(Ir(e))}function Pn(e){return Rt(e)?e:Ys(e,!1,Xr,sl,Ci)}function Ri(e){return Ys(e,!1,el,ol,Ei)}function Ai(e){return Ys(e,!0,$r,il,Pi)}function Ys(e,t,s,n,o){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=al(e);if(i===0)return e;const r=o.get(e);if(r)return r;const a=new Proxy(e,i===2?n:s);return o.set(e,a),a}function Pt(e){return Rt(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Rt(e){return!!(e&&e.__v_isReadonly)}function Ge(e){return!!(e&&e.__v_isShallow)}function Qs(e){return e?!!e.__v_raw:!1}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function Zs(e){return!ce(e,"__v_skip")&&Object.isExtensible(e)&&li(e,"__v_skip",!0),e}const Pe=e=>ge(e)?Pn(e):e,Hn=e=>ge(e)?Ai(e):e;function ye(e){return e?e.__v_isRef===!0:!1}function Y(e){return Ti(e,!1)}function cl(e){return Ti(e,!0)}function Ti(e,t){return ye(e)?e:new ul(e,t)}class ul{constructor(t,s){this.dep=new zs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:se(t),this._value=s?t:Pe(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ge(t)||Rt(t);t=n?t:se(t),Et(t,s)&&(this._rawValue=t,this._value=n?t:Pe(t),this.dep.trigger())}}function Gt(e){return ye(e)?e.value:e}const dl={get:(e,t,s)=>t==="__v_raw"?e:Gt(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const o=e[t];return ye(o)&&!ye(s)?(o.value=s,!0):Reflect.set(e,t,s,n)}};function Oi(e){return Pt(e)?e:new Proxy(e,dl)}function fl(e){const t=W(e)?new Array(e.length):{};for(const s in e)t[s]=pl(e,s);return t}class hl{constructor(t,s,n){this._object=t,this._key=s,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Gr(se(this._object),this._key)}}function pl(e,t,s){const n=e[t];return ye(n)?n:new hl(e,t,s)}class ml{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new zs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=vn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return gi(this,!0),!0}get value(){const t=this.dep.track();return bi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function gl(e,t,s=!1){let n,o;return $(e)?n=e:(n=e.get,o=e.set),new ml(n,o,s)}const Mn={},Nn=new WeakMap;let jt;function vl(e,t=!1,s=jt){if(s){let n=Nn.get(s);n||Nn.set(s,n=[]),n.push(e)}}function _l(e,t,s=fe){const{immediate:n,deep:o,once:i,scheduler:r,augmentJob:a,call:u}=s,p=D=>o?D:Ge(D)||o===!1||o===0?ht(D,1):ht(D);let f,m,v,c,C=!1,O=!1;if(ye(e)?(m=()=>e.value,C=Ge(e)):Pt(e)?(m=()=>p(e),C=!0):W(e)?(O=!0,C=e.some(D=>Pt(D)||Ge(D)),m=()=>e.map(D=>{if(ye(D))return D.value;if(Pt(D))return p(D);if($(D))return u?u(D,2):D()})):$(e)?t?m=u?()=>u(e,2):e:m=()=>{if(v){mt();try{v()}finally{gt()}}const D=jt;jt=f;try{return u?u(e,3,[c]):e(c)}finally{jt=D}}:m=it,t&&o){const D=m,P=o===!0?1/0:o;m=()=>ht(D(),P)}const G=hi(),H=()=>{f.stop(),G&&G.active&&Hs(G.effects,f)};if(i&&t){const D=t;t=(...P)=>{D(...P),H()}}let x=O?new Array(e.length).fill(Mn):Mn;const F=D=>{if(!(!(f.flags&1)||!f.dirty&&!D))if(t){const P=f.run();if(o||C||(O?P.some((te,z)=>Et(te,x[z])):Et(P,x))){v&&v();const te=jt;jt=f;try{const z=[P,x===Mn?void 0:O&&x[0]===Mn?[]:x,c];x=P,u?u(t,3,z):t(...z)}finally{jt=te}}}else f.run()};return a&&a(F),f=new pi(m),f.scheduler=r?()=>r(F,!1):F,c=D=>vl(D,!1,f),v=f.onStop=()=>{const D=Nn.get(f);if(D){if(u)u(D,4);else for(const P of D)P();Nn.delete(f)}},t?n?F(!0):x=f.run():r?r(F.bind(null,!0),!0):f.run(),H.pause=f.pause.bind(f),H.resume=f.resume.bind(f),H.stop=H,H}function ht(e,t=1/0,s){if(t<=0||!ge(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,ye(e))ht(e.value,t,s);else if(W(e))for(let n=0;n{ht(n,t,s)});else if(ri(e)){for(const n in e)ht(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ht(e[n],t,s)}return e}/** +* @vue/runtime-core v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Rn(e,t,s,n){try{return n?e(...n):e()}catch(o){$n(o,t,s)}}function lt(e,t,s,n){if($(e)){const o=Rn(e,t,s,n);return o&&oi(o)&&o.catch(i=>{$n(i,t,s)}),o}if(W(e)){const o=[];for(let i=0;i>>1,o=Fe[n],i=bn(o);i=bn(s)?Fe.push(e):Fe.splice(yl(t),0,e),e.flags|=1,Ii()}}function Ii(){qn||(qn=Mi.then(Di))}function wl(e){W(e)?zt.push(...e):wt&&e.id===-1?wt.splice(qt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),Ii()}function co(e,t,s=nt+1){for(;sbn(s)-bn(n));if(zt.length=0,wt){wt.push(...t);return}for(wt=t,qt=0;qte.id==null?e.flags&2?-1:1/0:e.id;function Di(e){try{for(nt=0;nt{n._d&&yo(-1);const i=Un(t);let r;try{r=e(...o)}finally{Un(i),n._d&&yo(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function le(e,t){if(Ne===null)return e;const s=os(Ne),n=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,xl=Symbol("_leaveCb");function $s(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$s(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function Fi(e,t){return $(e)?De({name:e.name},t,{setup:e}):e}function Bi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function cn(e,t,s,n,o=!1){if(W(e)){e.forEach((C,O)=>cn(C,t&&(W(t)?t[O]:t),s,n,o));return}if(un(n)&&!o){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&cn(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?os(n.component):n.el,r=o?null:i,{i:a,r:u}=e,p=t&&t.r,f=a.refs===fe?a.refs={}:a.refs,m=a.setupState,v=se(m),c=m===fe?si:C=>ce(v,C);if(p!=null&&p!==u){if(we(p))f[p]=null,c(p)&&(m[p]=null);else if(ye(p)){p.value=null;const C=t;C.k&&(f[C.k]=null)}}if($(u))Rn(u,a,12,[r,f]);else{const C=we(u),O=ye(u);if(C||O){const G=()=>{if(e.f){const H=C?c(u)?m[u]:f[u]:u.value;if(o)W(H)&&Hs(H,i);else if(W(H))H.includes(i)||H.push(i);else if(C)f[u]=[i],c(u)&&(m[u]=f[u]);else{const x=[i];u.value=x,e.k&&(f[e.k]=x)}}else C?(f[u]=r,c(u)&&(m[u]=r)):O&&(u.value=r,e.k&&(f[e.k]=r))};r?(G.id=-1,He(G,s)):G()}}}Zn().requestIdleCallback;Zn().cancelIdleCallback;const un=e=>!!e.type.__asyncLoader,Li=e=>e.type.__isKeepAlive;function Cl(e,t){Hi(e,"a",t)}function El(e,t){Hi(e,"da",t)}function Hi(e,t,s=je){const n=e.__wdc||(e.__wdc=()=>{let o=s;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ts(t,n,s),s){let o=s.parent;for(;o&&o.parent;)Li(o.parent.vnode)&&Pl(n,t,s,o),o=o.parent}}function Pl(e,t,s,n){const o=ts(t,e,n,!0);Ni(()=>{Hs(n[t],o)},s)}function ts(e,t,s=je,n=!1){if(s){const o=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...r)=>{mt();const a=An(s),u=lt(t,s,e,r);return a(),gt(),u});return n?o.unshift(i):o.push(i),i}}const vt=e=>(t,s=je)=>{(!wn||e==="sp")&&ts(e,(...n)=>t(...n),s)},Rl=vt("bm"),$t=vt("m"),Al=vt("bu"),Tl=vt("u"),Ol=vt("bum"),Ni=vt("um"),Ml=vt("sp"),Il=vt("rtg"),jl=vt("rtc");function Dl(e,t=je){ts("ec",e,t)}const Vl="components";function Kn(e,t){return Bl(Vl,e,!0,t)||e}const Fl=Symbol.for("v-ndc");function Bl(e,t,s=!0,n=!1){const o=Ne||je;if(o){const i=o.type;{const a=Ca(i,!1);if(a&&(a===t||a===ze(t)||a===Qn(ze(t))))return i}const r=uo(o[e]||i[e],t)||uo(o.appContext[e],t);return!r&&n?i:r}}function uo(e,t){return e&&(e[t]||e[ze(t)]||e[Qn(ze(t))])}function xt(e,t,s,n){let o;const i=s,r=W(e);if(r||we(e)){const a=r&&Pt(e);let u=!1,p=!1;a&&(u=!Ge(e),p=Rt(e),e=Xn(e)),o=new Array(e.length);for(let f=0,m=e.length;ft(a,u,void 0,i));else{const a=Object.keys(e);o=new Array(a.length);for(let u=0,p=a.length;ue?ar(e)?os(e):Es(e.parent):null,dn=De(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Es(e.parent),$root:e=>Es(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ui(e),$forceUpdate:e=>e.f||(e.f=()=>{Xs(e.update)}),$nextTick:e=>e.n||(e.n=es.bind(e.proxy)),$watch:e=>ra.bind(e)}),ps=(e,t)=>e!==fe&&!e.__isScriptSetup&&ce(e,t),Ll={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:o,props:i,accessCache:r,type:a,appContext:u}=e;let p;if(t[0]!=="$"){const c=r[t];if(c!==void 0)switch(c){case 1:return n[t];case 2:return o[t];case 4:return s[t];case 3:return i[t]}else{if(ps(n,t))return r[t]=1,n[t];if(o!==fe&&ce(o,t))return r[t]=2,o[t];if((p=e.propsOptions[0])&&ce(p,t))return r[t]=3,i[t];if(s!==fe&&ce(s,t))return r[t]=4,s[t];Ps&&(r[t]=0)}}const f=dn[t];let m,v;if(f)return t==="$attrs"&&Ie(e.attrs,"get",""),f(e);if((m=a.__cssModules)&&(m=m[t]))return m;if(s!==fe&&ce(s,t))return r[t]=4,s[t];if(v=u.config.globalProperties,ce(v,t))return v[t]},set({_:e},t,s){const{data:n,setupState:o,ctx:i}=e;return ps(o,t)?(o[t]=s,!0):n!==fe&&ce(n,t)?(n[t]=s,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:o,propsOptions:i,type:r}},a){let u,p;return!!(s[a]||e!==fe&&a[0]!=="$"&&ce(e,a)||ps(t,a)||(u=i[0])&&ce(u,a)||ce(n,a)||ce(dn,a)||ce(o.config.globalProperties,a)||(p=r.__cssModules)&&p[a])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:ce(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function fo(e){return W(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Ps=!0;function Hl(e){const t=Ui(e),s=e.proxy,n=e.ctx;Ps=!1,t.beforeCreate&&ho(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:r,watch:a,provide:u,inject:p,created:f,beforeMount:m,mounted:v,beforeUpdate:c,updated:C,activated:O,deactivated:G,beforeDestroy:H,beforeUnmount:x,destroyed:F,unmounted:D,render:P,renderTracked:te,renderTriggered:z,errorCaptured:Q,serverPrefetch:Z,expose:oe,inheritAttrs:he,components:ie,directives:ve,filters:Je}=t;if(p&&Nl(p,n,null),r)for(const X in r){const ne=r[X];$(ne)&&(n[X]=ne.bind(s))}if(o){const X=o.call(s,s);ge(X)&&(e.data=Pn(X))}if(Ps=!0,i)for(const X in i){const ne=i[X],Qe=$(ne)?ne.bind(s,s):$(ne.get)?ne.get.bind(s,s):it,Ce=!$(ne)&&$(ne.set)?ne.set.bind(s):it,Be=xe({get:Qe,set:Ce});Object.defineProperty(n,X,{enumerable:!0,configurable:!0,get:()=>Be.value,set:Ae=>Be.value=Ae})}if(a)for(const X in a)qi(a[X],n,s,X);if(u){const X=$(u)?u.call(s):u;Reflect.ownKeys(X).forEach(ne=>{jn(ne,X[ne])})}f&&ho(f,e,"c");function pe(X,ne){W(ne)?ne.forEach(Qe=>X(Qe.bind(s))):ne&&X(ne.bind(s))}if(pe(Rl,m),pe($t,v),pe(Al,c),pe(Tl,C),pe(Cl,O),pe(El,G),pe(Dl,Q),pe(jl,te),pe(Il,z),pe(Ol,x),pe(Ni,D),pe(Ml,Z),W(oe))if(oe.length){const X=e.exposed||(e.exposed={});oe.forEach(ne=>{Object.defineProperty(X,ne,{get:()=>s[ne],set:Qe=>s[ne]=Qe,enumerable:!0})})}else e.exposed||(e.exposed={});P&&e.render===it&&(e.render=P),he!=null&&(e.inheritAttrs=he),ie&&(e.components=ie),ve&&(e.directives=ve),Z&&Bi(e)}function Nl(e,t,s=it){W(e)&&(e=Rs(e));for(const n in e){const o=e[n];let i;ge(o)?"default"in o?i=Xe(o.from||n,o.default,!0):i=Xe(o.from||n):i=Xe(o),ye(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:r=>i.value=r}):t[n]=i}}function ho(e,t,s){lt(W(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function qi(e,t,s,n){let o=n.includes(".")?nr(s,n):()=>s[n];if(we(e)){const i=t[e];$(i)&&fn(o,i)}else if($(e))fn(o,e.bind(s));else if(ge(e))if(W(e))e.forEach(i=>qi(i,t,s,n));else{const i=$(e.handler)?e.handler.bind(s):t[e.handler];$(i)&&fn(o,i,e)}}function Ui(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:r}}=e.appContext,a=i.get(t);let u;return a?u=a:!o.length&&!s&&!n?u=t:(u={},o.length&&o.forEach(p=>Wn(u,p,r,!0)),Wn(u,t,r)),ge(t)&&i.set(t,u),u}function Wn(e,t,s,n=!1){const{mixins:o,extends:i}=t;i&&Wn(e,i,s,!0),o&&o.forEach(r=>Wn(e,r,s,!0));for(const r in t)if(!(n&&r==="expose")){const a=ql[r]||s&&s[r];e[r]=a?a(e[r],t[r]):t[r]}return e}const ql={data:po,props:mo,emits:mo,methods:on,computed:on,beforeCreate:Ve,created:Ve,beforeMount:Ve,mounted:Ve,beforeUpdate:Ve,updated:Ve,beforeDestroy:Ve,beforeUnmount:Ve,destroyed:Ve,unmounted:Ve,activated:Ve,deactivated:Ve,errorCaptured:Ve,serverPrefetch:Ve,components:on,directives:on,watch:Kl,provide:po,inject:Ul};function po(e,t){return t?e?function(){return De($(e)?e.call(this,this):e,$(t)?t.call(this,this):t)}:t:e}function Ul(e,t){return on(Rs(e),Rs(t))}function Rs(e){if(W(e)){const t={};for(let s=0;s1)return s&&$(t)?t.call(n&&n.proxy):t}}function zl(){return!!(lr()||Vt)}const Wi={},Gi=()=>Object.create(Wi),zi=e=>Object.getPrototypeOf(e)===Wi;function Jl(e,t,s,n=!1){const o={},i=Gi();e.propsDefaults=Object.create(null),Ji(e,t,o,i);for(const r in e.propsOptions[0])r in o||(o[r]=void 0);s?e.props=n?o:Ri(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function Yl(e,t,s,n){const{props:o,attrs:i,vnode:{patchFlag:r}}=e,a=se(o),[u]=e.propsOptions;let p=!1;if((n||r>0)&&!(r&16)){if(r&8){const f=e.vnode.dynamicProps;for(let m=0;m{u=!0;const[v,c]=Yi(m,t,!0);De(r,v),c&&a.push(...c)};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!u)return ge(e)&&n.set(e,Kt),Kt;if(W(i))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",to=e=>W(e)?e.map(st):[st(e)],Zl=(e,t,s)=>{if(t._n)return t;const n=ot((...o)=>to(t(...o)),s);return n._c=!1,n},Qi=(e,t,s)=>{const n=e._ctx;for(const o in e){if(eo(o))continue;const i=e[o];if($(i))t[o]=Zl(o,i,n);else if(i!=null){const r=to(i);t[o]=()=>r}}},Zi=(e,t)=>{const s=to(t);e.slots.default=()=>s},Xi=(e,t,s)=>{for(const n in t)(s||!eo(n))&&(e[n]=t[n])},Xl=(e,t,s)=>{const n=e.slots=Gi();if(e.vnode.shapeFlag&32){const o=t._;o?(Xi(n,t,s),s&&li(n,"_",o,!0)):Qi(t,n)}else t&&Zi(e,t)},$l=(e,t,s)=>{const{vnode:n,slots:o}=e;let i=!0,r=fe;if(n.shapeFlag&32){const a=t._;a?s&&a===1?i=!1:Xi(o,t,s):(i=!t.$stable,Qi(t,o)),r=t}else t&&(Zi(e,t),r={default:1});if(i)for(const a in o)!eo(a)&&r[a]==null&&delete o[a]},He=ha;function ea(e){return ta(e)}function ta(e,t){const s=Zn();s.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:r,createText:a,createComment:u,setText:p,setElementText:f,parentNode:m,nextSibling:v,setScopeId:c=it,insertStaticContent:C}=e,O=(d,h,g,b=null,S=null,_=null,T=void 0,R=null,E=!!h.dynamicChildren)=>{if(d===h)return;d&&!nn(d,h)&&(b=y(d),Ae(d,S,_,!0),d=null),h.patchFlag===-2&&(E=!1,h.dynamicChildren=null);const{type:k,ref:U,shapeFlag:M}=h;switch(k){case ss:G(d,h,g,b);break;case At:H(d,h,g,b);break;case Dn:d==null&&x(h,g,b,T);break;case Re:ie(d,h,g,b,S,_,T,R,E);break;default:M&1?P(d,h,g,b,S,_,T,R,E):M&6?ve(d,h,g,b,S,_,T,R,E):(M&64||M&128)&&k.process(d,h,g,b,S,_,T,R,E,B)}U!=null&&S?cn(U,d&&d.ref,_,h||d,!h):U==null&&d&&d.ref!=null&&cn(d.ref,null,_,d,!0)},G=(d,h,g,b)=>{if(d==null)n(h.el=a(h.children),g,b);else{const S=h.el=d.el;h.children!==d.children&&p(S,h.children)}},H=(d,h,g,b)=>{d==null?n(h.el=u(h.children||""),g,b):h.el=d.el},x=(d,h,g,b)=>{[d.el,d.anchor]=C(d.children,h,g,b,d.el,d.anchor)},F=({el:d,anchor:h},g,b)=>{let S;for(;d&&d!==h;)S=v(d),n(d,g,b),d=S;n(h,g,b)},D=({el:d,anchor:h})=>{let g;for(;d&&d!==h;)g=v(d),o(d),d=g;o(h)},P=(d,h,g,b,S,_,T,R,E)=>{h.type==="svg"?T="svg":h.type==="math"&&(T="mathml"),d==null?te(h,g,b,S,_,T,R,E):Z(d,h,S,_,T,R,E)},te=(d,h,g,b,S,_,T,R)=>{let E,k;const{props:U,shapeFlag:M,transition:q,dirs:J}=d;if(E=d.el=r(d.type,_,U&&U.is,U),M&8?f(E,d.children):M&16&&Q(d.children,E,null,b,S,ms(d,_),T,R),J&&Mt(d,null,b,"created"),z(E,d,d.scopeId,T,b),U){for(const de in U)de!=="value"&&!rn(de)&&i(E,de,null,U[de],_,b);"value"in U&&i(E,"value",null,U.value,_),(k=U.onVnodeBeforeMount)&&tt(k,b,d)}J&&Mt(d,null,b,"beforeMount");const ee=na(S,q);ee&&q.beforeEnter(E),n(E,h,g),((k=U&&U.onVnodeMounted)||ee||J)&&He(()=>{k&&tt(k,b,d),ee&&q.enter(E),J&&Mt(d,null,b,"mounted")},S)},z=(d,h,g,b,S)=>{if(g&&c(d,g),b)for(let _=0;_{for(let k=E;k{const R=h.el=d.el;let{patchFlag:E,dynamicChildren:k,dirs:U}=h;E|=d.patchFlag&16;const M=d.props||fe,q=h.props||fe;let J;if(g&&It(g,!1),(J=q.onVnodeBeforeUpdate)&&tt(J,g,h,d),U&&Mt(h,d,g,"beforeUpdate"),g&&It(g,!0),(M.innerHTML&&q.innerHTML==null||M.textContent&&q.textContent==null)&&f(R,""),k?oe(d.dynamicChildren,k,R,g,b,ms(h,S),_):T||ne(d,h,R,null,g,b,ms(h,S),_,!1),E>0){if(E&16)he(R,M,q,g,S);else if(E&2&&M.class!==q.class&&i(R,"class",null,q.class,S),E&4&&i(R,"style",M.style,q.style,S),E&8){const ee=h.dynamicProps;for(let de=0;de{J&&tt(J,g,h,d),U&&Mt(h,d,g,"updated")},b)},oe=(d,h,g,b,S,_,T)=>{for(let R=0;R{if(h!==g){if(h!==fe)for(const _ in h)!rn(_)&&!(_ in g)&&i(d,_,h[_],null,S,b);for(const _ in g){if(rn(_))continue;const T=g[_],R=h[_];T!==R&&_!=="value"&&i(d,_,R,T,S,b)}"value"in g&&i(d,"value",h.value,g.value,S)}},ie=(d,h,g,b,S,_,T,R,E)=>{const k=h.el=d?d.el:a(""),U=h.anchor=d?d.anchor:a("");let{patchFlag:M,dynamicChildren:q,slotScopeIds:J}=h;J&&(R=R?R.concat(J):J),d==null?(n(k,g,b),n(U,g,b),Q(h.children||[],g,U,S,_,T,R,E)):M>0&&M&64&&q&&d.dynamicChildren?(oe(d.dynamicChildren,q,g,S,_,T,R),(h.key!=null||S&&h===S.subTree)&&$i(d,h,!0)):ne(d,h,g,U,S,_,T,R,E)},ve=(d,h,g,b,S,_,T,R,E)=>{h.slotScopeIds=R,d==null?h.shapeFlag&512?S.ctx.activate(h,g,b,T,E):Je(h,g,b,S,_,T,E):Ye(d,h,E)},Je=(d,h,g,b,S,_,T)=>{const R=d.component=ya(d,b,S);if(Li(d)&&(R.ctx.renderer=B),wa(R,!1,T),R.asyncDep){if(S&&S.registerDep(R,pe,T),!d.el){const E=R.subTree=be(At);H(null,E,h,g),d.placeholder=E.el}}else pe(R,d,h,g,S,_,T)},Ye=(d,h,g)=>{const b=h.component=d.component;if(da(d,h,g))if(b.asyncDep&&!b.asyncResolved){X(b,h,g);return}else b.next=h,b.update();else h.el=d.el,b.vnode=h},pe=(d,h,g,b,S,_,T)=>{const R=()=>{if(d.isMounted){let{next:M,bu:q,u:J,parent:ee,vnode:de}=d;{const Ke=er(d);if(Ke){M&&(M.el=de.el,X(d,M,T)),Ke.asyncDep.then(()=>{d.isUnmounted||R()});return}}let re=M,Te;It(d,!1),M?(M.el=de.el,X(d,M,T)):M=de,q&&In(q),(Te=M.props&&M.props.onVnodeBeforeUpdate)&&tt(Te,ee,M,de),It(d,!0);const Oe=_o(d),Ue=d.subTree;d.subTree=Oe,O(Ue,Oe,m(Ue.el),y(Ue),d,S,_),M.el=Oe.el,re===null&&fa(d,Oe.el),J&&He(J,S),(Te=M.props&&M.props.onVnodeUpdated)&&He(()=>tt(Te,ee,M,de),S)}else{let M;const{el:q,props:J}=h,{bm:ee,m:de,parent:re,root:Te,type:Oe}=d,Ue=un(h);It(d,!1),ee&&In(ee),!Ue&&(M=J&&J.onVnodeBeforeMount)&&tt(M,re,h),It(d,!0);{Te.ce&&Te.ce._def.shadowRoot!==!1&&Te.ce._injectChildStyle(Oe);const Ke=d.subTree=_o(d);O(null,Ke,g,b,d,S,_),h.el=Ke.el}if(de&&He(de,S),!Ue&&(M=J&&J.onVnodeMounted)){const Ke=h;He(()=>tt(M,re,Ke),S)}(h.shapeFlag&256||re&&un(re.vnode)&&re.vnode.shapeFlag&256)&&d.a&&He(d.a,S),d.isMounted=!0,h=g=b=null}};d.scope.on();const E=d.effect=new pi(R);d.scope.off();const k=d.update=E.run.bind(E),U=d.job=E.runIfDirty.bind(E);U.i=d,U.id=d.uid,E.scheduler=()=>Xs(U),It(d,!0),k()},X=(d,h,g)=>{h.component=d;const b=d.vnode.props;d.vnode=h,d.next=null,Yl(d,h.props,b,g),$l(d,h.children,g),mt(),co(d),gt()},ne=(d,h,g,b,S,_,T,R,E=!1)=>{const k=d&&d.children,U=d?d.shapeFlag:0,M=h.children,{patchFlag:q,shapeFlag:J}=h;if(q>0){if(q&128){Ce(k,M,g,b,S,_,T,R,E);return}else if(q&256){Qe(k,M,g,b,S,_,T,R,E);return}}J&8?(U&16&&Le(k,S,_),M!==k&&f(g,M)):U&16?J&16?Ce(k,M,g,b,S,_,T,R,E):Le(k,S,_,!0):(U&8&&f(g,""),J&16&&Q(M,g,b,S,_,T,R,E))},Qe=(d,h,g,b,S,_,T,R,E)=>{d=d||Kt,h=h||Kt;const k=d.length,U=h.length,M=Math.min(k,U);let q;for(q=0;qU?Le(d,S,_,!0,!1,M):Q(h,g,b,S,_,T,R,E,M)},Ce=(d,h,g,b,S,_,T,R,E)=>{let k=0;const U=h.length;let M=d.length-1,q=U-1;for(;k<=M&&k<=q;){const J=d[k],ee=h[k]=E?St(h[k]):st(h[k]);if(nn(J,ee))O(J,ee,g,null,S,_,T,R,E);else break;k++}for(;k<=M&&k<=q;){const J=d[M],ee=h[q]=E?St(h[q]):st(h[q]);if(nn(J,ee))O(J,ee,g,null,S,_,T,R,E);else break;M--,q--}if(k>M){if(k<=q){const J=q+1,ee=Jq)for(;k<=M;)Ae(d[k],S,_,!0),k++;else{const J=k,ee=k,de=new Map;for(k=ee;k<=q;k++){const V=h[k]=E?St(h[k]):st(h[k]);V.key!=null&&de.set(V.key,k)}let re,Te=0;const Oe=q-ee+1;let Ue=!1,Ke=0;const Tt=new Array(Oe);for(k=0;k=Oe){Ae(V,S,_,!0);continue}let L;if(V.key!=null)L=de.get(V.key);else for(re=ee;re<=q;re++)if(Tt[re-ee]===0&&nn(V,h[re])){L=re;break}L===void 0?Ae(V,S,_,!0):(Tt[L-ee]=k+1,L>=Ke?Ke=L:Ue=!0,O(V,h[L],g,null,S,_,T,R,E),Te++)}const w=Ue?sa(Tt):Kt;for(re=w.length-1,k=Oe-1;k>=0;k--){const V=ee+k,L=h[V],Ee=h[V+1],Ot=V+1{const{el:_,type:T,transition:R,children:E,shapeFlag:k}=d;if(k&6){Be(d.component.subTree,h,g,b);return}if(k&128){d.suspense.move(h,g,b);return}if(k&64){T.move(d,h,g,B);return}if(T===Re){n(_,h,g);for(let M=0;MR.enter(_),S);else{const{leave:M,delayLeave:q,afterLeave:J}=R,ee=()=>{d.ctx.isUnmounted?o(_):n(_,h,g)},de=()=>{_._isLeaving&&_[xl](!0),M(_,()=>{ee(),J&&J()})};q?q(_,ee,de):de()}else n(_,h,g)},Ae=(d,h,g,b=!1,S=!1)=>{const{type:_,props:T,ref:R,children:E,dynamicChildren:k,shapeFlag:U,patchFlag:M,dirs:q,cacheIndex:J}=d;if(M===-2&&(S=!1),R!=null&&(mt(),cn(R,null,g,d,!0),gt()),J!=null&&(h.renderCache[J]=void 0),U&256){h.ctx.deactivate(d);return}const ee=U&1&&q,de=!un(d);let re;if(de&&(re=T&&T.onVnodeBeforeUnmount)&&tt(re,h,d),U&6)Bt(d.component,g,b);else{if(U&128){d.suspense.unmount(g,b);return}ee&&Mt(d,null,h,"beforeUnmount"),U&64?d.type.remove(d,h,g,B,b):k&&!k.hasOnce&&(_!==Re||M>0&&M&64)?Le(k,h,g,!1,!0):(_===Re&&M&384||!S&&U&16)&&Le(E,h,g),b&&et(d)}(de&&(re=T&&T.onVnodeUnmounted)||ee)&&He(()=>{re&&tt(re,h,d),ee&&Mt(d,null,h,"unmounted")},g)},et=d=>{const{type:h,el:g,anchor:b,transition:S}=d;if(h===Re){_t(g,b);return}if(h===Dn){D(d);return}const _=()=>{o(g),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(d.shapeFlag&1&&S&&!S.persisted){const{leave:T,delayLeave:R}=S,E=()=>T(g,_);R?R(d.el,_,E):E()}else _()},_t=(d,h)=>{let g;for(;d!==h;)g=v(d),o(d),d=g;o(h)},Bt=(d,h,g)=>{const{bum:b,scope:S,job:_,subTree:T,um:R,m:E,a:k}=d;vo(E),vo(k),b&&In(b),S.stop(),_&&(_.flags|=8,Ae(T,d,h,g)),R&&He(R,h),He(()=>{d.isUnmounted=!0},h)},Le=(d,h,g,b=!1,S=!1,_=0)=>{for(let T=_;T{if(d.shapeFlag&6)return y(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=v(d.anchor||d.el),g=h&&h[Sl];return g?v(g):h};let j=!1;const A=(d,h,g)=>{d==null?h._vnode&&Ae(h._vnode,null,null,!0):O(h._vnode||null,d,h,null,null,null,g),h._vnode=d,j||(j=!0,co(),ji(),j=!1)},B={p:O,um:Ae,m:Be,r:et,mt:Je,mc:Q,pc:ne,pbc:oe,n:y,o:e};return{render:A,hydrate:void 0,createApp:Gl(A)}}function ms({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function It({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function na(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $i(e,t,s=!1){const n=e.children,o=t.children;if(W(n)&&W(o))for(let i=0;i>1,e[s[a]]0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,r=s[i-1];i-- >0;)s[i]=r,r=t[r];return s}function er(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:er(t)}function vo(e){if(e)for(let t=0;tXe(oa);function fn(e,t,s){return tr(e,t,s)}function tr(e,t,s=fe){const{immediate:n,deep:o,flush:i,once:r}=s,a=De({},s),u=t&&n||!t&&i!=="post";let p;if(wn){if(i==="sync"){const c=ia();p=c.__watcherHandles||(c.__watcherHandles=[])}else if(!u){const c=()=>{};return c.stop=it,c.resume=it,c.pause=it,c}}const f=je;a.call=(c,C,O)=>lt(c,f,C,O);let m=!1;i==="post"?a.scheduler=c=>{He(c,f&&f.suspense)}:i!=="sync"&&(m=!0,a.scheduler=(c,C)=>{C?c():Xs(c)}),a.augmentJob=c=>{t&&(c.flags|=4),m&&(c.flags|=2,f&&(c.id=f.uid,c.i=f))};const v=_l(e,t,a);return wn&&(p?p.push(v):u&&v()),v}function ra(e,t,s){const n=this.proxy,o=we(e)?e.includes(".")?nr(n,e):()=>n[e]:e.bind(n,n);let i;$(t)?i=t:(i=t.handler,s=t);const r=An(this),a=tr(o,i.bind(n),s);return r(),a}function nr(e,t){const s=t.split(".");return()=>{let n=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ze(t)}Modifiers`]||e[`${Ft(t)}Modifiers`];function aa(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||fe;let o=s;const i=t.startsWith("update:"),r=i&&la(n,t.slice(7));r&&(r.trim&&(o=s.map(f=>we(f)?f.trim():f)),r.number&&(o=s.map(Bn)));let a,u=n[a=cs(t)]||n[a=cs(ze(t))];!u&&i&&(u=n[a=cs(Ft(t))]),u&<(u,e,6,o);const p=n[a+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,lt(p,e,6,o)}}function sr(e,t,s=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let r={},a=!1;if(!$(e)){const u=p=>{const f=sr(p,t,!0);f&&(a=!0,De(r,f))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!a?(ge(e)&&n.set(e,null),null):(W(i)?i.forEach(u=>r[u]=null):De(r,i),ge(e)&&n.set(e,r),r)}function ns(e,t){return!e||!Jn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Ft(t))||ce(e,t))}function _o(e){const{type:t,vnode:s,proxy:n,withProxy:o,propsOptions:[i],slots:r,attrs:a,emit:u,render:p,renderCache:f,props:m,data:v,setupState:c,ctx:C,inheritAttrs:O}=e,G=Un(e);let H,x;try{if(s.shapeFlag&4){const D=o||n,P=D;H=st(p.call(P,D,f,m,c,v,C)),x=a}else{const D=t;H=st(D.length>1?D(m,{attrs:a,slots:r,emit:u}):D(m,null)),x=t.props?a:ca(a)}}catch(D){hn.length=0,$n(D,e,1),H=be(At)}let F=H;if(x&&O!==!1){const D=Object.keys(x),{shapeFlag:P}=F;D.length&&P&7&&(i&&D.some(Ls)&&(x=ua(x,i)),F=Jt(F,x,!1,!0))}return s.dirs&&(F=Jt(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(s.dirs):s.dirs),s.transition&&$s(F,s.transition),H=F,Un(G),H}const ca=e=>{let t;for(const s in e)(s==="class"||s==="style"||Jn(s))&&((t||(t={}))[s]=e[s]);return t},ua=(e,t)=>{const s={};for(const n in e)(!Ls(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function da(e,t,s){const{props:n,children:o,component:i}=e,{props:r,children:a,patchFlag:u}=t,p=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?bo(n,r,p):!!r;if(u&8){const f=t.dynamicProps;for(let m=0;me.__isSuspense;function ha(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):wl(e)}const Re=Symbol.for("v-fgt"),ss=Symbol.for("v-txt"),At=Symbol.for("v-cmt"),Dn=Symbol.for("v-stc"),hn=[];let qe=null;function N(e=!1){hn.push(qe=e?null:[])}function pa(){hn.pop(),qe=hn[hn.length-1]||null}let yn=1;function yo(e,t=!1){yn+=e,e<0&&qe&&t&&(qe.hasOnce=!0)}function ir(e){return e.dynamicChildren=yn>0?qe||Kt:null,pa(),yn>0&&qe&&qe.push(e),e}function K(e,t,s,n,o,i){return ir(l(e,t,s,n,o,i,!0))}function Ts(e,t,s,n,o){return ir(be(e,t,s,n,o,!0))}function Gn(e){return e?e.__v_isVNode===!0:!1}function nn(e,t){return e.type===t.type&&e.key===t.key}const rr=({key:e})=>e??null,Vn=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||ye(e)||$(e)?{i:Ne,r:e,k:t,f:!!s}:e:null);function l(e,t=null,s=null,n=0,o=null,i=e===Re?0:1,r=!1,a=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rr(t),ref:t&&Vn(t),scopeId:Vi,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ne};return a?(no(u,s),i&128&&e.normalize(u)):s&&(u.shapeFlag|=we(s)?8:16),yn>0&&!r&&qe&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&qe.push(u),u}const be=ma;function ma(e,t=null,s=null,n=0,o=null,i=!1){if((!e||e===Fl)&&(e=At),Gn(e)){const a=Jt(e,t,!0);return s&&no(a,s),yn>0&&!i&&qe&&(a.shapeFlag&6?qe[qe.indexOf(e)]=a:qe.push(a)),a.patchFlag=-2,a}if(Ea(e)&&(e=e.__vccOpts),t){t=ga(t);let{class:a,style:u}=t;a&&!we(a)&&(t.class=We(a)),ge(u)&&(Qs(u)&&!W(u)&&(u=De({},u)),t.style=qs(u))}const r=we(e)?1:or(e)?128:kl(e)?64:ge(e)?4:$(e)?2:0;return l(e,t,s,n,o,r,i,!0)}function ga(e){return e?Qs(e)||zi(e)?De({},e):e:null}function Jt(e,t,s=!1,n=!1){const{props:o,ref:i,patchFlag:r,children:a,transition:u}=e,p=t?va(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&rr(p),ref:t&&t.ref?s&&i?W(i)?i.concat(Vn(t)):[i,Vn(t)]:Vn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Jt(e.ssContent),ssFallback:e.ssFallback&&Jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&$s(f,u.clone(f)),f}function ke(e=" ",t=0){return be(ss,null,e,t)}function gs(e,t){const s=be(Dn,null,e);return s.staticCount=t,s}function Se(e="",t=!1){return t?(N(),Ts(At,null,e)):be(At,null,e)}function st(e){return e==null||typeof e=="boolean"?be(At):W(e)?be(Re,null,e.slice()):Gn(e)?St(e):be(ss,null,String(e))}function St(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Jt(e)}function no(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(W(t))s=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),no(e,o()),o._c&&(o._d=!0));return}else{s=32;const o=t._;!o&&!zi(t)?t._ctx=Ne:o===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else $(t)?(t={default:t,_ctx:Ne},s=32):(t=String(t),n&64?(s=16,t=[ke(t)]):s=8);e.children=t,e.shapeFlag|=s}function va(...e){const t={};for(let s=0;sje||Ne;let zn,Os;{const e=Zn(),t=(s,n)=>{let o;return(o=e[s])||(o=e[s]=[]),o.push(n),i=>{o.length>1?o.forEach(r=>r(i)):o[0](i)}};zn=t("__VUE_INSTANCE_SETTERS__",s=>je=s),Os=t("__VUE_SSR_SETTERS__",s=>wn=s)}const An=e=>{const t=je;return zn(e),e.scope.on(),()=>{e.scope.off(),zn(t)}},wo=()=>{je&&je.scope.off(),zn(null)};function ar(e){return e.vnode.shapeFlag&4}let wn=!1;function wa(e,t=!1,s=!1){t&&Os(t);const{props:n,children:o}=e.vnode,i=ar(e);Jl(e,n,i,t),Xl(e,o,s||t);const r=i?Sa(e,t):void 0;return t&&Os(!1),r}function Sa(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ll);const{setup:n}=s;if(n){mt();const o=e.setupContext=n.length>1?xa(e):null,i=An(e),r=Rn(n,e,0,[e.props,o]),a=oi(r);if(gt(),i(),(a||e.sp)&&!un(e)&&Bi(e),a){if(r.then(wo,wo),t)return r.then(u=>{So(e,u)}).catch(u=>{$n(u,e,0)});e.asyncDep=r}else So(e,r)}else cr(e)}function So(e,t,s){$(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=Oi(t)),cr(e)}function cr(e,t,s){const n=e.type;e.render||(e.render=n.render||it);{const o=An(e);mt();try{Hl(e)}finally{gt(),o()}}}const ka={get(e,t){return Ie(e,"get",""),e[t]}};function xa(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,ka),slots:e.slots,emit:e.emit,expose:t}}function os(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Oi(Zs(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in dn)return dn[s](e)},has(t,s){return s in t||s in dn}})):e.proxy}function Ca(e,t=!0){return $(e)?e.displayName||e.name:e.name||t&&e.__name}function Ea(e){return $(e)&&"__vccOpts"in e}const xe=(e,t)=>gl(e,t,wn);function ur(e,t,s){const n=arguments.length;return n===2?ge(t)&&!W(t)?Gn(t)?be(e,null,[t]):be(e,t):be(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&Gn(s)&&(s=[s]),be(e,t,s))}const Pa="3.5.20";/** +* @vue/runtime-dom v3.5.20 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ms;const ko=typeof window<"u"&&window.trustedTypes;if(ko)try{Ms=ko.createPolicy("vue",{createHTML:e=>e})}catch{}const dr=Ms?e=>Ms.createHTML(e):e=>e,Ra="http://www.w3.org/2000/svg",Aa="http://www.w3.org/1998/Math/MathML",ut=typeof document<"u"?document:null,xo=ut&&ut.createElement("template"),Ta={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const o=t==="svg"?ut.createElementNS(Ra,e):t==="mathml"?ut.createElementNS(Aa,e):s?ut.createElement(e,{is:s}):ut.createElement(e);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>ut.createTextNode(e),createComment:e=>ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,o,i){const r=s?s.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),s),!(o===i||!(o=o.nextSibling)););else{xo.innerHTML=dr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const a=xo.content;if(n==="svg"||n==="mathml"){const u=a.firstChild;for(;u.firstChild;)a.appendChild(u.firstChild);a.removeChild(u)}t.insertBefore(a,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Oa=Symbol("_vtc");function Ma(e,t,s){const n=e[Oa];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Co=Symbol("_vod"),Ia=Symbol("_vsh"),ja=Symbol(""),Da=/(^|;)\s*display\s*:/;function Va(e,t,s){const n=e.style,o=we(s);let i=!1;if(s&&!o){if(t)if(we(t))for(const r of t.split(";")){const a=r.slice(0,r.indexOf(":")).trim();s[a]==null&&Fn(n,a,"")}else for(const r in t)s[r]==null&&Fn(n,r,"");for(const r in s)r==="display"&&(i=!0),Fn(n,r,s[r])}else if(o){if(t!==s){const r=n[ja];r&&(s+=";"+r),n.cssText=s,i=Da.test(s)}}else t&&e.removeAttribute("style");Co in e&&(e[Co]=i?n.display:"",e[Ia]&&(n.display="none"))}const Eo=/\s*!important$/;function Fn(e,t,s){if(W(s))s.forEach(n=>Fn(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Fa(e,t);Eo.test(s)?e.setProperty(Ft(n),s.replace(Eo,""),"important"):e[n]=s}}const Po=["Webkit","Moz","ms"],vs={};function Fa(e,t){const s=vs[t];if(s)return s;let n=ze(t);if(n!=="filter"&&n in e)return vs[t]=n;n=Qn(n);for(let o=0;o_s||(Na.then(()=>_s=0),_s=Date.now());function Ua(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;lt(Ka(n,s.value),t,5,[n])};return s.value=e,s.attached=qa(),s}function Ka(e,t){if(W(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const Io=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wa=(e,t,s,n,o,i)=>{const r=o==="svg";t==="class"?Ma(e,n,r):t==="style"?Va(e,s,n):Jn(t)?Ls(t)||La(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ga(e,t,n,r))?(To(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ao(e,t,n,r,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!we(n))?To(e,ze(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Ao(e,t,n,r))};function Ga(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Io(t)&&$(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Io(t)&&we(s)?!1:t in e}const Yt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?s=>In(t,s):t};function za(e){e.target.composing=!0}function jo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const pt=Symbol("_assign"),_e={created(e,{modifiers:{lazy:t,trim:s,number:n}},o){e[pt]=Yt(o);const i=n||o.props&&o.props.type==="number";Ct(e,t?"change":"input",r=>{if(r.target.composing)return;let a=e.value;s&&(a=a.trim()),i&&(a=Bn(a)),e[pt](a)}),s&&Ct(e,"change",()=>{e.value=e.value.trim()}),t||(Ct(e,"compositionstart",za),Ct(e,"compositionend",jo),Ct(e,"change",jo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:o,number:i}},r){if(e[pt]=Yt(r),e.composing)return;const a=(i||e.type==="number")&&!/^0\d/.test(e.value)?Bn(e.value):e.value,u=t??"";a!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||o&&e.value.trim()===u)||(e.value=u))}},Ht={deep:!0,created(e,t,s){e[pt]=Yt(s),Ct(e,"change",()=>{const n=e._modelValue,o=Sn(e),i=e.checked,r=e[pt];if(W(n)){const a=Us(n,o),u=a!==-1;if(i&&!u)r(n.concat(o));else if(!i&&u){const p=[...n];p.splice(a,1),r(p)}}else if(Xt(n)){const a=new Set(n);i?a.add(o):a.delete(o),r(a)}else r(fr(e,i))})},mounted:Do,beforeUpdate(e,t,s){e[pt]=Yt(s),Do(e,t,s)}};function Do(e,{value:t,oldValue:s},n){e._modelValue=t;let o;if(W(t))o=Us(t,n.props.value)>-1;else if(Xt(t))o=t.has(n.props.value);else{if(t===s)return;o=En(t,fr(e,!0))}e.checked!==o&&(e.checked=o)}const Ja={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const o=Xt(t);Ct(e,"change",()=>{const i=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>s?Bn(Sn(r)):Sn(r));e[pt](e.multiple?o?new Set(i):i:i[0]),e._assigning=!0,es(()=>{e._assigning=!1})}),e[pt]=Yt(n)},mounted(e,{value:t}){Vo(e,t)},beforeUpdate(e,t,s){e[pt]=Yt(s)},updated(e,{value:t}){e._assigning||Vo(e,t)}};function Vo(e,t){const s=e.multiple,n=W(t);if(!(s&&!n&&!Xt(t))){for(let o=0,i=e.options.length;oString(p)===String(a)):r.selected=Us(t,a)>-1}else r.selected=t.has(a);else if(En(Sn(r),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Sn(e){return"_value"in e?e._value:e.value}function fr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Ya=["ctrl","shift","alt","meta"],Qa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ya.some(s=>e[`${s}Key`]&&!t.includes(s))},dt=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(o,...i)=>{for(let r=0;r{const t=Xa().createApp(...e),{mount:s}=t;return t.mount=n=>{const o=tc(n);if(!o)return;const i=t._component;!$(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const r=s(o,!1,ec(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),r},t};function ec(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function tc(e){return we(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let hr;const is=e=>hr=e,pr=Symbol();function Is(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(pn||(pn={}));function nc(){const e=fi(!0),t=e.run(()=>Y({}));let s=[],n=[];const o=Zs({install(i){is(o),o._a=i,i.provide(pr,o),i.config.globalProperties.$pinia=o,n.forEach(r=>s.push(r)),n=[]},use(i){return this._a?s.push(i):n.push(i),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return o}const mr=()=>{};function Bo(e,t,s,n=mr){e.push(t);const o=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),n())};return!s&&hi()&&Ur(o),o}function Nt(e,...t){e.slice().forEach(s=>{s(...t)})}const sc=e=>e(),Lo=Symbol(),bs=Symbol();function js(e,t){e instanceof Map&&t instanceof Map?t.forEach((s,n)=>e.set(n,s)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const s in t){if(!t.hasOwnProperty(s))continue;const n=t[s],o=e[s];Is(o)&&Is(n)&&e.hasOwnProperty(s)&&!ye(n)&&!Pt(n)?e[s]=js(o,n):e[s]=n}return e}const oc=Symbol();function ic(e){return!Is(e)||!e.hasOwnProperty(oc)}const{assign:yt}=Object;function rc(e){return!!(ye(e)&&e.effect)}function lc(e,t,s,n){const{state:o,actions:i,getters:r}=t,a=s.state.value[e];let u;function p(){a||(s.state.value[e]=o?o():{});const f=fl(s.state.value[e]);return yt(f,i,Object.keys(r||{}).reduce((m,v)=>(m[v]=Zs(xe(()=>{is(s);const c=s._s.get(e);return r[v].call(c,c)})),m),{}))}return u=gr(e,p,t,s,n,!0),u}function gr(e,t,s={},n,o,i){let r;const a=yt({actions:{}},s),u={deep:!0};let p,f,m=[],v=[],c;const C=n.state.value[e];!i&&!C&&(n.state.value[e]={}),Y({});let O;function G(Q){let Z;p=f=!1,typeof Q=="function"?(Q(n.state.value[e]),Z={type:pn.patchFunction,storeId:e,events:c}):(js(n.state.value[e],Q),Z={type:pn.patchObject,payload:Q,storeId:e,events:c});const oe=O=Symbol();es().then(()=>{O===oe&&(p=!0)}),f=!0,Nt(m,Z,n.state.value[e])}const H=i?function(){const{state:Z}=s,oe=Z?Z():{};this.$patch(he=>{yt(he,oe)})}:mr;function x(){r.stop(),m=[],v=[],n._s.delete(e)}const F=(Q,Z="")=>{if(Lo in Q)return Q[bs]=Z,Q;const oe=function(){is(n);const he=Array.from(arguments),ie=[],ve=[];function Je(X){ie.push(X)}function Ye(X){ve.push(X)}Nt(v,{args:he,name:oe[bs],store:P,after:Je,onError:Ye});let pe;try{pe=Q.apply(this&&this.$id===e?this:P,he)}catch(X){throw Nt(ve,X),X}return pe instanceof Promise?pe.then(X=>(Nt(ie,X),X)).catch(X=>(Nt(ve,X),Promise.reject(X))):(Nt(ie,pe),pe)};return oe[Lo]=!0,oe[bs]=Z,oe},D={_p:n,$id:e,$onAction:Bo.bind(null,v),$patch:G,$reset:H,$subscribe(Q,Z={}){const oe=Bo(m,Q,Z.detached,()=>he()),he=r.run(()=>fn(()=>n.state.value[e],ie=>{(Z.flush==="sync"?f:p)&&Q({storeId:e,type:pn.direct,events:c},ie)},yt({},u,Z)));return oe},$dispose:x},P=Pn(D);n._s.set(e,P);const z=(n._a&&n._a.runWithContext||sc)(()=>n._e.run(()=>(r=fi()).run(()=>t({action:F}))));for(const Q in z){const Z=z[Q];if(ye(Z)&&!rc(Z)||Pt(Z))i||(C&&ic(Z)&&(ye(Z)?Z.value=C[Q]:js(Z,C[Q])),n.state.value[e][Q]=Z);else if(typeof Z=="function"){const oe=F(Z,Q);z[Q]=oe,a.actions[Q]=Z}}return yt(P,z),yt(se(P),z),Object.defineProperty(P,"$state",{get:()=>n.state.value[e],set:Q=>{G(Z=>{yt(Z,Q)})}}),n._p.forEach(Q=>{yt(P,r.run(()=>Q({store:P,app:n._a,pinia:n,options:a})))}),C&&i&&s.hydrate&&s.hydrate(P.$state,C),p=!0,f=!0,P}/*! #__NO_SIDE_EFFECTS__ */function ac(e,t,s){let n,o;const i=typeof t=="function";n=e,o=i?s:t;function r(a,u){const p=zl();return a=a||(p?Xe(pr,null):null),a&&is(a),a=hr,a._s.has(n)||(i?gr(n,t,o,a):lc(n,o,a)),a._s.get(n)}return r.$id=n,r}/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Ut=typeof document<"u";function vr(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function cc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&vr(e.default)}const ae=Object.assign;function ys(e,t){const s={};for(const n in t){const o=t[n];s[n]=$e(o)?o.map(e):e(o)}return s}const mn=()=>{},$e=Array.isArray,_r=/#/g,uc=/&/g,dc=/\//g,fc=/=/g,hc=/\?/g,br=/\+/g,pc=/%5B/g,mc=/%5D/g,yr=/%5E/g,gc=/%60/g,wr=/%7B/g,vc=/%7C/g,Sr=/%7D/g,_c=/%20/g;function so(e){return encodeURI(""+e).replace(vc,"|").replace(pc,"[").replace(mc,"]")}function bc(e){return so(e).replace(wr,"{").replace(Sr,"}").replace(yr,"^")}function Ds(e){return so(e).replace(br,"%2B").replace(_c,"+").replace(_r,"%23").replace(uc,"%26").replace(gc,"`").replace(wr,"{").replace(Sr,"}").replace(yr,"^")}function yc(e){return Ds(e).replace(fc,"%3D")}function wc(e){return so(e).replace(_r,"%23").replace(hc,"%3F")}function Sc(e){return e==null?"":wc(e).replace(dc,"%2F")}function kn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const kc=/\/$/,xc=e=>e.replace(kc,"");function ws(e,t,s="/"){let n,o={},i="",r="";const a=t.indexOf("#");let u=t.indexOf("?");return a=0&&(u=-1),u>-1&&(n=t.slice(0,u),i=t.slice(u+1,a>-1?a:t.length),o=e(i)),a>-1&&(n=n||t.slice(0,a),r=t.slice(a,t.length)),n=Rc(n??t,s),{fullPath:n+(i&&"?")+i+r,path:n,query:o,hash:kn(r)}}function Cc(e,t){const s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function Ho(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Ec(e,t,s){const n=t.matched.length-1,o=s.matched.length-1;return n>-1&&n===o&&Qt(t.matched[n],s.matched[o])&&kr(t.params,s.params)&&e(t.query)===e(s.query)&&t.hash===s.hash}function Qt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function kr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(!Pc(e[s],t[s]))return!1;return!0}function Pc(e,t){return $e(e)?No(e,t):$e(t)?No(t,e):e===t}function No(e,t){return $e(t)?e.length===t.length&&e.every((s,n)=>s===t[n]):e.length===1&&e[0]===t}function Rc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const s=t.split("/"),n=e.split("/"),o=n[n.length-1];(o===".."||o===".")&&n.push("");let i=s.length-1,r,a;for(r=0;r1&&i--;else break;return s.slice(0,i).join("/")+"/"+n.slice(r).join("/")}const bt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var xn;(function(e){e.pop="pop",e.push="push"})(xn||(xn={}));var gn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(gn||(gn={}));function Ac(e){if(!e)if(Ut){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xc(e)}const Tc=/^[^#]+#/;function Oc(e,t){return e.replace(Tc,"#")+t}function Mc(e,t){const s=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-s.left-(t.left||0),top:n.top-s.top-(t.top||0)}}const rs=()=>({left:window.scrollX,top:window.scrollY});function Ic(e){let t;if("el"in e){const s=e.el,n=typeof s=="string"&&s.startsWith("#"),o=typeof s=="string"?n?document.getElementById(s.slice(1)):document.querySelector(s):s;if(!o)return;t=Mc(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function qo(e,t){return(history.state?history.state.position-t:-1)+e}const Vs=new Map;function jc(e,t){Vs.set(e,t)}function Dc(e){const t=Vs.get(e);return Vs.delete(e),t}let Vc=()=>location.protocol+"//"+location.host;function xr(e,t){const{pathname:s,search:n,hash:o}=t,i=e.indexOf("#");if(i>-1){let a=o.includes(e.slice(i))?e.slice(i).length:1,u=o.slice(a);return u[0]!=="/"&&(u="/"+u),Ho(u,"")}return Ho(s,e)+n+o}function Fc(e,t,s,n){let o=[],i=[],r=null;const a=({state:v})=>{const c=xr(e,location),C=s.value,O=t.value;let G=0;if(v){if(s.value=c,t.value=v,r&&r===C){r=null;return}G=O?v.position-O.position:0}else n(c);o.forEach(H=>{H(s.value,C,{delta:G,type:xn.pop,direction:G?G>0?gn.forward:gn.back:gn.unknown})})};function u(){r=s.value}function p(v){o.push(v);const c=()=>{const C=o.indexOf(v);C>-1&&o.splice(C,1)};return i.push(c),c}function f(){const{history:v}=window;v.state&&v.replaceState(ae({},v.state,{scroll:rs()}),"")}function m(){for(const v of i)v();i=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:u,listen:p,destroy:m}}function Uo(e,t,s,n=!1,o=!1){return{back:e,current:t,forward:s,replaced:n,position:window.history.length,scroll:o?rs():null}}function Bc(e){const{history:t,location:s}=window,n={value:xr(e,s)},o={value:t.state};o.value||i(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(u,p,f){const m=e.indexOf("#"),v=m>-1?(s.host&&document.querySelector("base")?e:e.slice(m))+u:Vc()+e+u;try{t[f?"replaceState":"pushState"](p,"",v),o.value=p}catch(c){console.error(c),s[f?"replace":"assign"](v)}}function r(u,p){const f=ae({},t.state,Uo(o.value.back,u,o.value.forward,!0),p,{position:o.value.position});i(u,f,!0),n.value=u}function a(u,p){const f=ae({},o.value,t.state,{forward:u,scroll:rs()});i(f.current,f,!0);const m=ae({},Uo(n.value,u,null),{position:f.position+1},p);i(u,m,!1),n.value=u}return{location:n,state:o,push:a,replace:r}}function Lc(e){e=Ac(e);const t=Bc(e),s=Fc(e,t.state,t.location,t.replace);function n(i,r=!0){r||s.pauseListeners(),history.go(i)}const o=ae({location:"",base:e,go:n,createHref:Oc.bind(null,e)},t,s);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Hc(e){return typeof e=="string"||e&&typeof e=="object"}function Cr(e){return typeof e=="string"||typeof e=="symbol"}const Er=Symbol("");var Ko;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ko||(Ko={}));function Zt(e,t){return ae(new Error,{type:e,[Er]:!0},t)}function ct(e,t){return e instanceof Error&&Er in e&&(t==null||!!(e.type&t))}const Wo="[^/]+?",Nc={sensitive:!1,strict:!1,start:!0,end:!0},qc=/[.+*?^${}()[\]/\\]/g;function Uc(e,t){const s=ae({},Nc,t),n=[];let o=s.start?"^":"";const i=[];for(const p of e){const f=p.length?[]:[90];s.strict&&!p.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===80?1:-1:0}function Pr(e,t){let s=0;const n=e.score,o=t.score;for(;s0&&t[t.length-1]<0}const Wc={type:0,value:""},Gc=/[a-zA-Z0-9_]/;function zc(e){if(!e)return[[]];if(e==="/")return[[Wc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(c){throw new Error(`ERR (${s})/"${p}": ${c}`)}let s=0,n=s;const o=[];let i;function r(){i&&o.push(i),i=[]}let a=0,u,p="",f="";function m(){p&&(s===0?i.push({type:0,value:p}):s===1||s===2||s===3?(i.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:p,regexp:f,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),p="")}function v(){p+=u}for(;a{r(F)}:mn}function r(m){if(Cr(m)){const v=n.get(m);v&&(n.delete(m),s.splice(s.indexOf(v),1),v.children.forEach(r),v.alias.forEach(r))}else{const v=s.indexOf(m);v>-1&&(s.splice(v,1),m.record.name&&n.delete(m.record.name),m.children.forEach(r),m.alias.forEach(r))}}function a(){return s}function u(m){const v=Xc(m,s);s.splice(v,0,m),m.record.name&&!Yo(m)&&n.set(m.record.name,m)}function p(m,v){let c,C={},O,G;if("name"in m&&m.name){if(c=n.get(m.name),!c)throw Zt(1,{location:m});G=c.record.name,C=ae(zo(v.params,c.keys.filter(F=>!F.optional).concat(c.parent?c.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),m.params&&zo(m.params,c.keys.map(F=>F.name))),O=c.stringify(C)}else if(m.path!=null)O=m.path,c=s.find(F=>F.re.test(O)),c&&(C=c.parse(O),G=c.record.name);else{if(c=v.name?n.get(v.name):s.find(F=>F.re.test(v.path)),!c)throw Zt(1,{location:m,currentLocation:v});G=c.record.name,C=ae({},v.params,m.params),O=c.stringify(C)}const H=[];let x=c;for(;x;)H.unshift(x.record),x=x.parent;return{name:G,path:O,params:C,matched:H,meta:Zc(H)}}e.forEach(m=>i(m));function f(){s.length=0,n.clear()}return{addRoute:i,resolve:p,removeRoute:r,clearRoutes:f,getRoutes:a,getRecordMatcher:o}}function zo(e,t){const s={};for(const n of t)n in e&&(s[n]=e[n]);return s}function Jo(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Qc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Qc(e){const t={},s=e.props||!1;if("component"in e)t.default=s;else for(const n in e.components)t[n]=typeof s=="object"?s[n]:s;return t}function Yo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zc(e){return e.reduce((t,s)=>ae(t,s.meta),{})}function Qo(e,t){const s={};for(const n in e)s[n]=n in t?t[n]:e[n];return s}function Xc(e,t){let s=0,n=t.length;for(;s!==n;){const i=s+n>>1;Pr(e,t[i])<0?n=i:s=i+1}const o=$c(e);return o&&(n=t.lastIndexOf(o,n-1)),n}function $c(e){let t=e;for(;t=t.parent;)if(Rr(t)&&Pr(e,t)===0)return t}function Rr({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function eu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oi&&Ds(i)):[n&&Ds(n)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+s,i!=null&&(t+="="+i))})}return t}function tu(e){const t={};for(const s in e){const n=e[s];n!==void 0&&(t[s]=$e(n)?n.map(o=>o==null?null:""+o):n==null?n:""+n)}return t}const nu=Symbol(""),Xo=Symbol(""),ls=Symbol(""),Ar=Symbol(""),Fs=Symbol("");function sn(){let e=[];function t(n){return e.push(n),()=>{const o=e.indexOf(n);o>-1&&e.splice(o,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function kt(e,t,s,n,o,i=r=>r()){const r=n&&(n.enterCallbacks[o]=n.enterCallbacks[o]||[]);return()=>new Promise((a,u)=>{const p=v=>{v===!1?u(Zt(4,{from:s,to:t})):v instanceof Error?u(v):Hc(v)?u(Zt(2,{from:t,to:v})):(r&&n.enterCallbacks[o]===r&&typeof v=="function"&&r.push(v),a())},f=i(()=>e.call(n&&n.instances[o],t,s,p));let m=Promise.resolve(f);e.length<3&&(m=m.then(p)),m.catch(v=>u(v))})}function Ss(e,t,s,n,o=i=>i()){const i=[];for(const r of e)for(const a in r.components){let u=r.components[a];if(!(t!=="beforeRouteEnter"&&!r.instances[a]))if(vr(u)){const f=(u.__vccOpts||u)[t];f&&i.push(kt(f,s,n,r,a,o))}else{let p=u();i.push(()=>p.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${r.path}"`);const m=cc(f)?f.default:f;r.mods[a]=f,r.components[a]=m;const c=(m.__vccOpts||m)[t];return c&&kt(c,s,n,r,a,o)()}))}}return i}function $o(e){const t=Xe(ls),s=Xe(Ar),n=xe(()=>{const u=Gt(e.to);return t.resolve(u)}),o=xe(()=>{const{matched:u}=n.value,{length:p}=u,f=u[p-1],m=s.matched;if(!f||!m.length)return-1;const v=m.findIndex(Qt.bind(null,f));if(v>-1)return v;const c=ei(u[p-2]);return p>1&&ei(f)===c&&m[m.length-1].path!==c?m.findIndex(Qt.bind(null,u[p-2])):v}),i=xe(()=>o.value>-1&&lu(s.params,n.value.params)),r=xe(()=>o.value>-1&&o.value===s.matched.length-1&&kr(s.params,n.value.params));function a(u={}){if(ru(u)){const p=t[Gt(e.replace)?"replace":"push"](Gt(e.to)).catch(mn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>p),p}return Promise.resolve()}return{route:n,href:xe(()=>n.value.href),isActive:i,isExactActive:r,navigate:a}}function su(e){return e.length===1?e[0]:e}const ou=Fi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:$o,setup(e,{slots:t}){const s=Pn($o(e)),{options:n}=Xe(ls),o=xe(()=>({[ti(e.activeClass,n.linkActiveClass,"router-link-active")]:s.isActive,[ti(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:s.isExactActive}));return()=>{const i=t.default&&su(t.default(s));return e.custom?i:ur("a",{"aria-current":s.isExactActive?e.ariaCurrentValue:null,href:s.href,onClick:s.navigate,class:o.value},i)}}}),iu=ou;function ru(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function lu(e,t){for(const s in t){const n=t[s],o=e[s];if(typeof n=="string"){if(n!==o)return!1}else if(!$e(o)||o.length!==n.length||n.some((i,r)=>i!==o[r]))return!1}return!0}function ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ti=(e,t,s)=>e??t??s,au=Fi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:s}){const n=Xe(Fs),o=xe(()=>e.route||n.value),i=Xe(Xo,0),r=xe(()=>{let p=Gt(i);const{matched:f}=o.value;let m;for(;(m=f[p])&&!m.components;)p++;return p}),a=xe(()=>o.value.matched[r.value]);jn(Xo,xe(()=>r.value+1)),jn(nu,a),jn(Fs,o);const u=Y();return fn(()=>[u.value,a.value,e.name],([p,f,m],[v,c,C])=>{f&&(f.instances[m]=p,c&&c!==f&&p&&p===v&&(f.leaveGuards.size||(f.leaveGuards=c.leaveGuards),f.updateGuards.size||(f.updateGuards=c.updateGuards))),p&&f&&(!c||!Qt(f,c)||!v)&&(f.enterCallbacks[m]||[]).forEach(O=>O(p))},{flush:"post"}),()=>{const p=o.value,f=e.name,m=a.value,v=m&&m.components[f];if(!v)return ni(s.default,{Component:v,route:p});const c=m.props[f],C=c?c===!0?p.params:typeof c=="function"?c(p):c:null,G=ur(v,ae({},C,t,{onVnodeUnmounted:H=>{H.component.isUnmounted&&(m.instances[f]=null)},ref:u}));return ni(s.default,{Component:G,route:p})||G}}});function ni(e,t){if(!e)return null;const s=e(t);return s.length===1?s[0]:s}const cu=au;function uu(e){const t=Yc(e.routes,e),s=e.parseQuery||eu,n=e.stringifyQuery||Zo,o=e.history,i=sn(),r=sn(),a=sn(),u=cl(bt);let p=bt;Ut&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=ys.bind(null,y=>""+y),m=ys.bind(null,Sc),v=ys.bind(null,kn);function c(y,j){let A,B;return Cr(y)?(A=t.getRecordMatcher(y),B=j):B=y,t.addRoute(B,A)}function C(y){const j=t.getRecordMatcher(y);j&&t.removeRoute(j)}function O(){return t.getRoutes().map(y=>y.record)}function G(y){return!!t.getRecordMatcher(y)}function H(y,j){if(j=ae({},j||u.value),typeof y=="string"){const g=ws(s,y,j.path),b=t.resolve({path:g.path},j),S=o.createHref(g.fullPath);return ae(g,b,{params:v(b.params),hash:kn(g.hash),redirectedFrom:void 0,href:S})}let A;if(y.path!=null)A=ae({},y,{path:ws(s,y.path,j.path).path});else{const g=ae({},y.params);for(const b in g)g[b]==null&&delete g[b];A=ae({},y,{params:m(g)}),j.params=m(j.params)}const B=t.resolve(A,j),ue=y.hash||"";B.params=f(v(B.params));const d=Cc(n,ae({},y,{hash:bc(ue),path:B.path})),h=o.createHref(d);return ae({fullPath:d,hash:ue,query:n===Zo?tu(y.query):y.query||{}},B,{redirectedFrom:void 0,href:h})}function x(y){return typeof y=="string"?ws(s,y,u.value.path):ae({},y)}function F(y,j){if(p!==y)return Zt(8,{from:j,to:y})}function D(y){return z(y)}function P(y){return D(ae(x(y),{replace:!0}))}function te(y){const j=y.matched[y.matched.length-1];if(j&&j.redirect){const{redirect:A}=j;let B=typeof A=="function"?A(y):A;return typeof B=="string"&&(B=B.includes("?")||B.includes("#")?B=x(B):{path:B},B.params={}),ae({query:y.query,hash:y.hash,params:B.path!=null?{}:y.params},B)}}function z(y,j){const A=p=H(y),B=u.value,ue=y.state,d=y.force,h=y.replace===!0,g=te(A);if(g)return z(ae(x(g),{state:typeof g=="object"?ae({},ue,g.state):ue,force:d,replace:h}),j||A);const b=A;b.redirectedFrom=j;let S;return!d&&Ec(n,B,A)&&(S=Zt(16,{to:b,from:B}),Be(B,B,!0,!1)),(S?Promise.resolve(S):oe(b,B)).catch(_=>ct(_)?ct(_,2)?_:Ce(_):ne(_,b,B)).then(_=>{if(_){if(ct(_,2))return z(ae({replace:h},x(_.to),{state:typeof _.to=="object"?ae({},ue,_.to.state):ue,force:d}),j||b)}else _=ie(b,B,!0,h,ue);return he(b,B,_),_})}function Q(y,j){const A=F(y,j);return A?Promise.reject(A):Promise.resolve()}function Z(y){const j=_t.values().next().value;return j&&typeof j.runWithContext=="function"?j.runWithContext(y):y()}function oe(y,j){let A;const[B,ue,d]=du(y,j);A=Ss(B.reverse(),"beforeRouteLeave",y,j);for(const g of B)g.leaveGuards.forEach(b=>{A.push(kt(b,y,j))});const h=Q.bind(null,y,j);return A.push(h),Le(A).then(()=>{A=[];for(const g of i.list())A.push(kt(g,y,j));return A.push(h),Le(A)}).then(()=>{A=Ss(ue,"beforeRouteUpdate",y,j);for(const g of ue)g.updateGuards.forEach(b=>{A.push(kt(b,y,j))});return A.push(h),Le(A)}).then(()=>{A=[];for(const g of d)if(g.beforeEnter)if($e(g.beforeEnter))for(const b of g.beforeEnter)A.push(kt(b,y,j));else A.push(kt(g.beforeEnter,y,j));return A.push(h),Le(A)}).then(()=>(y.matched.forEach(g=>g.enterCallbacks={}),A=Ss(d,"beforeRouteEnter",y,j,Z),A.push(h),Le(A))).then(()=>{A=[];for(const g of r.list())A.push(kt(g,y,j));return A.push(h),Le(A)}).catch(g=>ct(g,8)?g:Promise.reject(g))}function he(y,j,A){a.list().forEach(B=>Z(()=>B(y,j,A)))}function ie(y,j,A,B,ue){const d=F(y,j);if(d)return d;const h=j===bt,g=Ut?history.state:{};A&&(B||h?o.replace(y.fullPath,ae({scroll:h&&g&&g.scroll},ue)):o.push(y.fullPath,ue)),u.value=y,Be(y,j,A,h),Ce()}let ve;function Je(){ve||(ve=o.listen((y,j,A)=>{if(!Bt.listening)return;const B=H(y),ue=te(B);if(ue){z(ae(ue,{replace:!0,force:!0}),B).catch(mn);return}p=B;const d=u.value;Ut&&jc(qo(d.fullPath,A.delta),rs()),oe(B,d).catch(h=>ct(h,12)?h:ct(h,2)?(z(ae(x(h.to),{force:!0}),B).then(g=>{ct(g,20)&&!A.delta&&A.type===xn.pop&&o.go(-1,!1)}).catch(mn),Promise.reject()):(A.delta&&o.go(-A.delta,!1),ne(h,B,d))).then(h=>{h=h||ie(B,d,!1),h&&(A.delta&&!ct(h,8)?o.go(-A.delta,!1):A.type===xn.pop&&ct(h,20)&&o.go(-1,!1)),he(B,d,h)}).catch(mn)}))}let Ye=sn(),pe=sn(),X;function ne(y,j,A){Ce(y);const B=pe.list();return B.length?B.forEach(ue=>ue(y,j,A)):console.error(y),Promise.reject(y)}function Qe(){return X&&u.value!==bt?Promise.resolve():new Promise((y,j)=>{Ye.add([y,j])})}function Ce(y){return X||(X=!y,Je(),Ye.list().forEach(([j,A])=>y?A(y):j()),Ye.reset()),y}function Be(y,j,A,B){const{scrollBehavior:ue}=e;if(!Ut||!ue)return Promise.resolve();const d=!A&&Dc(qo(y.fullPath,0))||(B||!A)&&history.state&&history.state.scroll||null;return es().then(()=>ue(y,j,d)).then(h=>h&&Ic(h)).catch(h=>ne(h,y,j))}const Ae=y=>o.go(y);let et;const _t=new Set,Bt={currentRoute:u,listening:!0,addRoute:c,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:G,getRoutes:O,resolve:H,options:e,push:D,replace:P,go:Ae,back:()=>Ae(-1),forward:()=>Ae(1),beforeEach:i.add,beforeResolve:r.add,afterEach:a.add,onError:pe.add,isReady:Qe,install(y){const j=this;y.component("RouterLink",iu),y.component("RouterView",cu),y.config.globalProperties.$router=j,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>Gt(u)}),Ut&&!et&&u.value===bt&&(et=!0,D(o.location).catch(ue=>{}));const A={};for(const ue in bt)Object.defineProperty(A,ue,{get:()=>u.value[ue],enumerable:!0});y.provide(ls,j),y.provide(Ar,Ri(A)),y.provide(Fs,u);const B=y.unmount;_t.add(y),y.unmount=function(){_t.delete(y),_t.size<1&&(p=bt,ve&&ve(),ve=null,u.value=bt,et=!1,X=!1),B()}}};function Le(y){return y.reduce((j,A)=>j.then(()=>Z(A)),Promise.resolve())}return Bt}function du(e,t){const s=[],n=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let r=0;rQt(p,a))?n.push(a):s.push(a));const u=e.matched[r];u&&(t.matched.find(p=>Qt(p,u))||o.push(u))}return[s,n,o]}function Tr(){return Xe(ls)}const as=ac("auth",()=>{const e=Y(null),t=Y(null),s=Y(!1),n=(a,u)=>{e.value=a,t.value=u,s.value=!0,localStorage.setItem("auth_token",u),localStorage.setItem("user",JSON.stringify(a))},o=()=>{e.value=null,t.value=null,s.value=!1,localStorage.removeItem("auth_token"),localStorage.removeItem("user")};return{user:e,token:t,isAuthenticated:s,login:n,logout:o,checkAuth:()=>{const a=localStorage.getItem("auth_token"),u=localStorage.getItem("user");a&&u?(t.value=a,e.value=JSON.parse(u),s.value=!0):o()},getAuthHeaders:()=>t.value?{"Content-Type":"application/json",Authorization:`Bearer ${t.value}`}:{}}}),en=(e,t)=>{const s=e.__vccOpts||e;for(const[n,o]of t)s[n]=o;return s},fu={name:"Home",setup(){const e=Y({}),t=async()=>{try{const s=await fetch("/api/public/page-content");s.ok&&(e.value=await s.json())}catch(s){console.error("Failed to fetch page content:",s)}};return $t(()=>{t()}),{content:e}}},hu={class:"home"},pu={class:"hero"},mu={class:"features"},gu={class:"feature-card"},vu={class:"feature-card"},_u={class:"feature-card"},bu={class:"feature-card"},yu={class:"cta"},wu={class:"cta-buttons"},Su={class:"contact-section"},ku={class:"contact-subtitle"},xu={class:"contact-info"},Cu={key:0,class:"contact-item"},Eu={class:"contact-details"},Pu=["href"],Ru={key:1,class:"contact-item"},Au={class:"contact-details"},Tu=["href"],Ou={key:2,class:"contact-item"},Mu={class:"contact-details"};function Iu(e,t,s,n,o,i){const r=Kn("router-link");return N(),K("div",hu,[l("div",pu,[l("h1",null,I(n.content.home_hero_title||"Welkom bij Fiets Service Centrum"),1),l("p",null,I(n.content.home_hero_subtitle||"Professionele fietsreparatie en onderhoudsdiensten"),1)]),l("div",mu,[l("div",gu,[l("h3",null,I(n.content.home_feature_1_title||"🔧 Deskundige Reparaties"),1),l("p",null,I(n.content.home_feature_1_text||"Professionele fietsmonteurs met jarenlange ervaring"),1)]),l("div",vu,[l("h3",null,I(n.content.home_feature_2_title||"⚡ Snelle Service"),1),l("p",null,I(n.content.home_feature_2_text||"Snelle doorlooptijden voor de meeste reparaties"),1)]),l("div",_u,[l("h3",null,I(n.content.home_feature_3_title||"💰 Eerlijke Prijzen"),1),l("p",null,I(n.content.home_feature_3_text||"Concurrerende tarieven zonder verborgen kosten"),1)]),l("div",bu,[l("h3",null,I(n.content.home_feature_4_title||"📅 Eenvoudig Boeken"),1),l("p",null,I(n.content.home_feature_4_text||"Eenvoudig online boekingssysteem"),1)])]),l("div",yu,[l("h2",null,I(n.content.home_cta_title||"Klaar om je fiets te laten repareren?"),1),l("p",null,I(n.content.home_cta_subtitle||"Boek je afspraak online en krijg je fiets weer in topconditie."),1),l("div",wu,[be(r,{to:"/booking",class:"cta-button"},{default:ot(()=>[ke(I(n.content.home_cta_button_1_text||"Nu Service Boeken"),1)]),_:1}),be(r,{to:"/pricelist",class:"cta-button secondary"},{default:ot(()=>[ke(I(n.content.home_cta_button_2_text||"💰 Prijslijst Bekijken"),1)]),_:1})])]),l("div",Su,[l("h2",null,I(n.content.home_contact_title||"Neem Contact Op"),1),l("p",ku,I(n.content.home_contact_subtitle||"Heeft u vragen of wilt u meer informatie? Neem gerust contact met ons op!"),1),l("div",xu,[n.content.home_contact_phone?(N(),K("div",Cu,[t[1]||(t[1]=l("div",{class:"contact-icon"},"📞",-1)),l("div",Eu,[t[0]||(t[0]=l("h4",null,"Telefoon",-1)),l("a",{href:"tel:"+n.content.home_contact_phone.replace(/\s/g,"")},I(n.content.home_contact_phone),9,Pu)])])):Se("",!0),n.content.home_contact_email?(N(),K("div",Ru,[t[3]||(t[3]=l("div",{class:"contact-icon"},"📧",-1)),l("div",Au,[t[2]||(t[2]=l("h4",null,"Email",-1)),l("a",{href:"mailto:"+n.content.home_contact_email},I(n.content.home_contact_email),9,Tu)])])):Se("",!0),n.content.home_contact_address?(N(),K("div",Ou,[t[5]||(t[5]=l("div",{class:"contact-icon"},"📍",-1)),l("div",Mu,[t[4]||(t[4]=l("h4",null,"Adres",-1)),l("p",null,I(n.content.home_contact_address),1)])])):Se("",!0)])])])}const ju=en(fu,[["render",Iu],["__scopeId","data-v-1cfd578a"]]),Du={name:"Booking",setup(){const e=Y({name:"",address:"",place:"",email:"",phone:"",repair_description:"",requested_date:"",requested_time:""}),t=Y(!1),s=Y(""),n=Y(!1),o=Y(null),i=Y({}),r=Y(new Date),a=Y([]),u=["Zo","Ma","Di","Wo","Do","Vr","Za"],p=xe(()=>{const P=new Date;return P.setDate(P.getDate()+1),P.toISOString().split("T")[0]}),f=xe(()=>r.value.toLocaleDateString("nl-NL",{month:"long",year:"numeric"})),m=xe(()=>{const P=r.value.getFullYear(),te=r.value.getMonth(),z=new Date(P,te,1),Q=new Date(P,te+1,0),Z=z.getDay(),oe=Q.getDay(),he=[];for(let ie=Z-1;ie>=0;ie--){const ve=new Date(P,te,-ie);he.push(v(ve,!1))}for(let ie=1;ie<=Q.getDate();ie++){const ve=new Date(P,te,ie);he.push(v(ve,!0))}for(let ie=1;ie<=6-oe;ie++){const ve=new Date(P,te+1,ie);he.push(v(ve,!1))}return he}),v=(P,te)=>{const z=P.toISOString().split("T")[0],Q=new Date,Z=new Date;Z.setDate(Z.getDate()+1);const oe=z===Q.toISOString().split("T")[0],he=znew Date(Je.date).toISOString().split("T")[0]===z),ve=z===e.value.requested_date;return{date:z,day:P.getDate(),key:z,isCurrentMonth:te,isToday:oe,isDisabled:he,isBlocked:ie,isSelected:ve}},c=async()=>{try{const P=await fetch("/api/public/blocked-dates");P.ok&&(a.value=await P.json())}catch(P){console.error("Failed to fetch blocked dates:",P)}},C=async()=>{try{const P=await fetch("/api/public/page-content");P.ok&&(i.value=await P.json())}catch(P){console.error("Failed to fetch page content:",P)}},O=()=>{r.value=new Date(r.value.getFullYear(),r.value.getMonth()-1,1)},G=()=>{r.value=new Date(r.value.getFullYear(),r.value.getMonth()+1,1)},H=P=>{P.isDisabled||P.isBlocked||(e.value.requested_date=P.date)},x=()=>!e.value.email&&!e.value.phone?(s.value="Geef alstublieft een e-mailadres of telefoonnummer op",!1):(s.value="",!0),F=async()=>{if(x()){t.value=!0,s.value="";try{const P=await fetch("/api/public/service-requests",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.value)});if(!P.ok){const z=await P.json();throw new Error(z.message||"Aanvraag versturen mislukt")}const te=await P.json();o.value=te,n.value=!0,Object.keys(e.value).forEach(z=>{e.value[z]=""})}catch(P){s.value=P.message}finally{t.value=!1}}},D=()=>{n.value=!1,o.value=null};return $t(()=>{const P=new Date;P.setDate(P.getDate()+1),e.value.requested_date=P.toISOString().split("T")[0],c(),C()}),{form:e,loading:t,formError:s,showSuccessModal:n,submittedRequest:o,content:i,minDate:p,submitForm:F,closeSuccessModal:D,currentDate:r,blockedDates:a,weekdays:u,calendarDates:m,currentMonthYear:f,previousMonth:O,nextMonth:G,selectDate:H}}},Vu={class:"booking"},Fu={class:"booking-header"},Bu={class:"booking-form-container"},Lu={class:"form-row"},Hu={class:"form-group"},Nu={class:"form-row"},qu={class:"form-group"},Uu={class:"form-row"},Ku={class:"form-group"},Wu={class:"form-row"},Gu={class:"form-group"},zu={class:"form-group"},Ju={class:"form-row"},Yu={class:"form-group full-width"},Qu={class:"form-row"},Zu={class:"form-group"},Xu={class:"custom-date-picker"},$u={class:"date-picker-header"},ed={class:"current-month"},td={class:"date-picker-grid"},nd=["onClick"],sd={class:"form-group"},od={key:0,class:"form-error"},id={class:"form-actions"},rd=["disabled"],ld={class:"modal-body"},ad={class:"modal-footer"};function cd(e,t,s,n,o,i){return N(),K("div",Vu,[l("div",Fu,[l("h1",null,I(n.content.booking_header_title||"🚲 Boek Je Fiets Service"),1),l("p",null,I(n.content.booking_header_subtitle||"Vul het onderstaande formulier in om je fietsreparatie of onderhoud in te plannen"),1)]),l("div",Bu,[l("form",{onSubmit:t[10]||(t[10]=dt((...r)=>n.submitForm&&n.submitForm(...r),["prevent"])),class:"booking-form"},[l("div",Lu,[l("div",Hu,[t[14]||(t[14]=l("label",{for:"name"},"Volledige Naam *",-1)),le(l("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=r=>n.form.name=r),required:"",placeholder:"Voer je volledige naam in"},null,512),[[_e,n.form.name]])])]),l("div",Nu,[l("div",qu,[t[15]||(t[15]=l("label",{for:"address"},"Adres *",-1)),le(l("textarea",{id:"address","onUpdate:modelValue":t[1]||(t[1]=r=>n.form.address=r),required:"",placeholder:"Voer je volledige adres in",rows:"3"},null,512),[[_e,n.form.address]])])]),l("div",Uu,[l("div",Ku,[t[16]||(t[16]=l("label",{for:"place"},"Plaats *",-1)),le(l("input",{type:"text",id:"place","onUpdate:modelValue":t[2]||(t[2]=r=>n.form.place=r),required:"",placeholder:"Voer je plaats in"},null,512),[[_e,n.form.place]])])]),l("div",Wu,[l("div",Gu,[t[17]||(t[17]=l("label",{for:"email"},"E-mail",-1)),le(l("input",{type:"email",id:"email","onUpdate:modelValue":t[3]||(t[3]=r=>n.form.email=r),placeholder:"Voer je e-mailadres in"},null,512),[[_e,n.form.email]])]),l("div",zu,[t[18]||(t[18]=l("label",{for:"phone"},"Telefoon",-1)),le(l("input",{type:"tel",id:"phone","onUpdate:modelValue":t[4]||(t[4]=r=>n.form.phone=r),placeholder:"Voer je telefoonnummer in"},null,512),[[_e,n.form.phone]])])]),l("div",Ju,[l("div",Yu,[t[19]||(t[19]=l("label",{for:"repair_description"},"Wat moet er gerepareerd worden? *",-1)),le(l("textarea",{id:"repair_description","onUpdate:modelValue":t[5]||(t[5]=r=>n.form.repair_description=r),required:"",placeholder:"Beschrijf het probleem met je fiets of welke service je nodig hebt",rows:"4"},null,512),[[_e,n.form.repair_description]])])]),l("div",Qu,[l("div",Zu,[t[20]||(t[20]=l("label",{for:"requested_date"},"Gewenste Datum *",-1)),l("div",Xu,[l("div",$u,[l("button",{type:"button",onClick:t[6]||(t[6]=(...r)=>n.previousMonth&&n.previousMonth(...r)),class:"nav-btn"},"‹"),l("span",ed,I(n.currentMonthYear),1),l("button",{type:"button",onClick:t[7]||(t[7]=(...r)=>n.nextMonth&&n.nextMonth(...r)),class:"nav-btn"},"›")]),l("div",td,[(N(!0),K(Re,null,xt(n.weekdays,r=>(N(),K("div",{class:"weekday-header",key:r},I(r),1))),128)),(N(!0),K(Re,null,xt(n.calendarDates,r=>(N(),K("div",{key:r.key,class:We(["calendar-date",{"other-month":!r.isCurrentMonth,disabled:r.isDisabled,blocked:r.isBlocked,selected:r.isSelected,today:r.isToday}]),onClick:a=>n.selectDate(r)},I(r.day),11,nd))),128))]),le(l("input",{type:"hidden",id:"requested_date","onUpdate:modelValue":t[8]||(t[8]=r=>n.form.requested_date=r),required:""},null,512),[[_e,n.form.requested_date]])])]),l("div",sd,[t[21]||(t[21]=l("label",{for:"requested_time"},"Gewenste Tijd *",-1)),le(l("input",{type:"time",id:"requested_time","onUpdate:modelValue":t[9]||(t[9]=r=>n.form.requested_time=r),required:"",min:"08:00",max:"18:00"},null,512),[[_e,n.form.requested_time]])])]),n.formError?(N(),K("div",od,I(n.formError),1)):Se("",!0),l("div",id,[l("button",{type:"submit",class:"submit-btn",disabled:n.loading},I(n.loading?"Versturen...":"Service Aanvraag Versturen"),9,rd)])],32)]),n.showSuccessModal?(N(),K("div",{key:0,class:"modal-overlay",onClick:t[13]||(t[13]=(...r)=>n.closeSuccessModal&&n.closeSuccessModal(...r))},[l("div",{class:"modal-content",onClick:t[12]||(t[12]=dt(()=>{},["stop"]))},[t[24]||(t[24]=l("div",{class:"modal-header"},[l("h3",null,"✅ Service Aanvraag Verzonden!")],-1)),l("div",ld,[t[23]||(t[23]=l("p",null,"Bedankt voor je service aanvraag. We nemen binnenkort contact met je op om je afspraak te bevestigen.",-1)),l("p",null,[t[22]||(t[22]=l("strong",null,"Aanvraag ID:",-1)),ke(" "+I(n.submittedRequest.id),1)])]),l("div",ad,[l("button",{onClick:t[11]||(t[11]=(...r)=>n.closeSuccessModal&&n.closeSuccessModal(...r)),class:"btn-primary"},"Sluiten")])])])):Se("",!0)])}const ud=en(Du,[["render",cd],["__scopeId","data-v-3d2c946f"]]),dd={name:"Admin",setup(){const e=Tr(),t=as(),s=Y("requests"),n=Y(!1),o=Y([]),i=Y([]),r=Y({}),a=Y([]),u=Y([]),p=Y({pending:!0,confirmed:!0,mail_sent:!0,completed:!0,cancelled:!0}),f=Y(!1),m=Y(!1),v=Y(!1),c=Y(!1),C=Y(!1),O=Y(!1),G=Y(!1),H=Y(!1),x=Y(null),F=Y(null),D=Y(null),P=Y({date:"",reason:""}),te=Y({title:"",description:"",price:"",sort_order:0,is_active:!0}),z=Y({message:""}),Q=Y({message:""}),Z=Y([]),oe=Y(!1),he=Y(!1),ie=Y(!1),ve=[{id:"requests",label:"Service Aanvragen"},{id:"blocked",label:"Geblokkeerde Data"},{id:"pricelist",label:"Prijslijst"},{id:"content",label:"Pagina Teksten"},{id:"settings",label:"Instellingen"}],Je=xe(()=>{const w=new Date;return w.setDate(w.getDate()+1),w.toISOString().split("T")[0]}),Ye=xe(()=>o.value.filter(w=>p.value[w.status]===!0)),pe=w=>({pending:"In afwachting",confirmed:"Bevestigd",mail_sent:"Bevestigd mail verstuurd",completed:"Voltooid",cancelled:"Geannuleerd"})[w]||w,X=w=>({email:"E-MAIL",sms:"SMS"})[w]||w.toUpperCase(),ne=w=>({admin_to_customer:"Naar Klant",customer_to_admin:"Van Klant"})[w]||w,Qe=async()=>{try{await fetch("/api/logout",{method:"POST",headers:t.getAuthHeaders()})}catch(w){console.error("Logout error:",w)}finally{t.logout(),e.push("/login")}},Ce=async()=>{try{const w=await fetch("/api/service-requests",{headers:t.getAuthHeaders()});w.ok&&(o.value=await w.json())}catch(w){console.error("Failed to fetch requests:",w)}},Be=async()=>{try{const w=await fetch("/api/blocked-dates",{headers:t.getAuthHeaders()});w.ok&&(i.value=await w.json())}catch(w){console.error("Failed to fetch blocked dates:",w)}},Ae=async()=>{try{const w=await fetch("/api/settings",{headers:t.getAuthHeaders()});w.ok&&(await w.json()).forEach(L=>{r.value[L.key]=L.value})}catch(w){console.error("Failed to fetch settings:",w)}},et=async()=>{try{const w=await fetch("/api/admin/pricelist",{headers:t.getAuthHeaders()});w.ok&&(a.value=await w.json())}catch(w){console.error("Failed to fetch pricelist:",w)}},_t=async()=>{try{const w=await fetch("/api/page-content",{headers:t.getAuthHeaders()});w.ok&&(u.value=await w.json())}catch(w){console.error("Failed to fetch page content:",w)}},Bt=async()=>{n.value=!0,await Ce(),n.value=!1},Le=async w=>{G.value=!0,f.value=!0;try{const V=await fetch(`/api/service-requests/${w.id}`,{headers:t.getAuthHeaders()});if(V.ok){const L=await V.json();L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value={...L}}else{const L=o.value.find(Ee=>Ee.id===w.id);L&&L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value=L?{...L}:{...w}}}catch(V){console.error("Failed to fetch latest request data:",V);const L=o.value.find(Ee=>Ee.id===w.id);L&&L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value=L?{...L}:{...w}}finally{G.value=!1}},y=()=>{f.value=!1,x.value=null},j=()=>{m.value=!1,F.value=null,P.value={date:"",reason:""}},A=()=>{v.value=!1,z.value.message=""},B=()=>{c.value=!1,Q.value.message=""},ue=()=>{C.value=!1,Z.value=[]},d=()=>{O.value=!1,D.value=null,te.value={title:"",description:"",price:"",sort_order:0,is_active:!0}},h=w=>{x.value=w,v.value=!0},g=w=>{x.value=w,c.value=!0},b=async w=>{x.value=w;try{const V=await fetch(`/api/service-requests/${w.id}/communications`,{headers:t.getAuthHeaders()});V.ok&&(Z.value=await V.json())}catch(V){console.error("Failed to fetch communications:",V)}C.value=!0},S=async()=>{if(z.value.message.trim()){oe.value=!0;try{(await fetch(`/api/service-requests/${x.value.id}/send-email`,{method:"POST",headers:t.getAuthHeaders(),body:JSON.stringify({message:z.value.message})})).ok&&(A(),await Ce())}catch(w){console.error("Failed to send email:",w)}finally{oe.value=!1}}},_=async()=>{if(Q.value.message.trim()){he.value=!0;try{(await fetch(`/api/service-requests/${x.value.id}/send-sms`,{method:"POST",headers:t.getAuthHeaders(),body:JSON.stringify({message:Q.value.message})})).ok&&(B(),await Ce())}catch(w){console.error("Failed to send SMS:",w)}finally{he.value=!1}}},T=async()=>{var w,V,L;if(!((w=x.value)!=null&&w.email)){alert("Geen e-mailadres beschikbaar voor deze klant");return}if(!((V=x.value)!=null&&V.actual_repair_date)||!((L=x.value)!=null&&L.actual_repair_time)){alert("Vul eerst de werkelijke ophaaldatum en tijd in");return}if(confirm("Weet u zeker dat u de ophaalbevestiging wilt versturen naar "+x.value.email+"?")){ie.value=!0;try{const Ee=await fetch(`/api/service-requests/${x.value.id}/send-pickup-confirmation`,{method:"POST",headers:t.getAuthHeaders()});if(Ee.ok){const Ot=await Ee.json();alert("Ophaalbevestiging succesvol verzonden!"),Ot.service_request&&(x.value=Ot.service_request),await Ce()}else{const Ot=await Ee.json();alert("Fout bij versturen: "+(Ot.message||"Onbekende fout"))}}catch(Ee){console.error("Failed to send pickup confirmation:",Ee),alert("Fout bij versturen van ophaalbevestiging")}finally{ie.value=!1}}},R=w=>{F.value=w,P.value={date:w.date,reason:w.reason||""},m.value=!0},E=async()=>{try{const w=F.value?`/api/blocked-dates/${F.value.id}`:"/api/blocked-dates",V=F.value?"PUT":"POST";(await fetch(w,{method:V,headers:t.getAuthHeaders(),body:JSON.stringify(P.value)})).ok&&(j(),await Be())}catch(w){console.error("Failed to save blocked date:",w)}},k=async w=>{if(confirm("Weet je zeker dat je deze geblokkeerde datum wilt verwijderen?"))try{(await fetch(`/api/blocked-dates/${w}`,{method:"DELETE",headers:t.getAuthHeaders()})).ok&&await Be()}catch(V){console.error("Failed to delete blocked date:",V)}},U=async(w,V)=>{try{(await fetch(`/api/settings/key/${w}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({value:V,description:""})})).ok&&console.log(`Setting ${w} updated successfully`)}catch(L){console.error("Failed to update setting:",L)}},M=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({status:x.value.status})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].status=x.value.status),await Ce()}}catch(w){console.error("Failed to update request status:",w)}},q=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({actual_repair_date:x.value.actual_repair_date})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].actual_repair_date=x.value.actual_repair_date),await Ce()}}catch(w){console.error("Failed to update request date:",w)}},J=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({actual_repair_date:x.value.actual_repair_date,actual_repair_time:x.value.actual_repair_time})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].actual_repair_date=x.value.actual_repair_date,o.value[V].actual_repair_time=x.value.actual_repair_time),await Ce()}}catch(w){console.error("Failed to update request time:",w)}},ee=w=>{D.value=w,te.value={...w},O.value=!0},de=async()=>{try{const w=D.value?`/api/pricelist/${D.value.id}`:"/api/pricelist",V=D.value?"PUT":"POST";(await fetch(w,{method:V,headers:t.getAuthHeaders(),body:JSON.stringify(te.value)})).ok&&(d(),await et())}catch(w){console.error("Failed to save pricelist item:",w)}},re=async w=>{if(confirm("Weet je zeker dat je dit prijslijst item wilt verwijderen?"))try{(await fetch(`/api/pricelist/${w}`,{method:"DELETE",headers:t.getAuthHeaders()})).ok&&await et()}catch(V){console.error("Failed to delete pricelist item:",V)}},Te=w=>{const V=u.value.find(L=>L.key===w);return V?V.value:""},Oe=(w,V)=>{const L=u.value.find(Ee=>Ee.key===w);L&&(L.value=V)},Ue=async w=>{const V=u.value.find(L=>L.key===w);if(V)try{(await fetch(`/api/page-content/key/${w}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({value:V.value,description:V.description})})).ok&&console.log(`Content ${w} updated successfully`)}catch(L){console.error("Failed to update page content:",L)}},Ke=(w,V)=>{if(!w)return"N/A";const Ee=new Date(w).toLocaleDateString("nl-NL");return V?`${Ee} ${V}`:Ee},Tt=w=>new Date(w).toISOString().split("T")[0];return $t(()=>{t.checkAuth(),Ce(),Be(),et(),_t(),Ae()}),{activeTab:s,tabs:ve,loading:n,requests:o,filteredRequests:Ye,statusFilters:p,blockedDates:i,settings:r,pricelist:a,pageContent:u,user:xe(()=>t.user),showRequestModal:f,showAddBlockedDate:m,showEmailModal:v,showSmsModal:c,showCommunicationsModal:C,showAddPricelistItem:O,requestModalLoading:G,pricelistLoading:H,selectedRequest:x,editingBlockedDate:F,editingPricelistItem:D,blockedDateForm:P,pricelistForm:te,emailForm:z,smsForm:Q,communications:Z,emailLoading:oe,smsLoading:he,pickupConfirmationLoading:ie,minDate:Je,getStatusText:pe,getCommTypeText:X,getCommDirectionText:ne,handleLogout:Qe,refreshRequests:Bt,viewRequest:Le,closeRequestModal:y,closeBlockedDateModal:j,closePricelistModal:d,closeEmailModal:A,closeSmsModal:B,closeCommunicationsModal:ue,sendEmail:h,sendSms:g,viewCommunications:b,submitEmail:S,submitSms:_,sendPickupConfirmation:T,editBlockedDate:R,saveBlockedDate:E,deleteBlockedDate:k,editPricelistItem:ee,savePricelistItem:de,deletePricelistItem:re,updateSetting:U,updateRequestStatus:M,updateRequestDate:q,updateRequestTime:J,getContentValue:Te,updateContentValue:Oe,savePageContent:Ue,formatDateTime:Ke,formatDate:Tt}}},fd={class:"admin"},hd={class:"admin-header"},pd={class:"admin-user-info"},md={class:"admin-tabs"},gd=["onClick"],vd={key:0,class:"tab-content"},_d={class:"section-header"},bd=["disabled","title"],yd={class:"status-filter"},wd={class:"filter-checkboxes"},Sd={class:"filter-checkbox"},kd={class:"checkbox-label"},xd={class:We(["status-badge","pending"])},Cd={class:"filter-checkbox"},Ed={class:"checkbox-label"},Pd={class:We(["status-badge","confirmed"])},Rd={class:"filter-checkbox"},Ad={class:"checkbox-label"},Td={class:We(["status-badge","mail_sent"])},Od={class:"filter-checkbox"},Md={class:"checkbox-label"},Id={class:We(["status-badge","completed"])},jd={class:"filter-checkbox"},Dd={class:"checkbox-label"},Vd={class:We(["status-badge","cancelled"])},Fd={class:"requests-table"},Bd={key:0,class:"loading-row"},Ld={key:1,class:"empty-row"},Hd={class:"cell"},Nd={class:"cell"},qd={class:"cell"},Ud={class:"cell"},Kd={class:"cell actions"},Wd=["onClick"],Gd=["onClick","disabled"],zd=["onClick","disabled"],Jd=["onClick"],Yd={key:1,class:"tab-content"},Qd={class:"section-header"},Zd={class:"blocked-dates-list"},Xd={class:"date-info"},$d={class:"date"},ef={key:0,class:"reason"},tf={class:"date-actions"},nf=["onClick"],sf=["onClick"],of={key:2,class:"tab-content"},rf={class:"section-header"},lf={class:"pricelist-table"},af={key:0,class:"loading-row"},cf={key:1,class:"empty-row"},uf={class:"cell"},df={class:"cell"},ff={class:"cell"},hf={class:"cell"},pf={class:"cell"},mf={class:"cell actions"},gf=["onClick"],vf=["onClick"],_f={key:3,class:"tab-content"},bf={class:"content-sections"},yf={class:"content-section"},wf={class:"content-form"},Sf={class:"form-group"},kf=["value"],xf={class:"form-group"},Cf=["value"],Ef={class:"content-section"},Pf={class:"content-form"},Rf={class:"feature-group"},Af={class:"form-group"},Tf=["value"],Of={class:"form-group"},Mf=["value"],If={class:"feature-group"},jf={class:"form-group"},Df=["value"],Vf={class:"form-group"},Ff=["value"],Bf={class:"feature-group"},Lf={class:"form-group"},Hf=["value"],Nf={class:"form-group"},qf=["value"],Uf={class:"feature-group"},Kf={class:"form-group"},Wf=["value"],Gf={class:"form-group"},zf=["value"],Jf={class:"content-section"},Yf={class:"content-form"},Qf={class:"form-group"},Zf=["value"],Xf={class:"form-group"},$f=["value"],eh={class:"form-group"},th=["value"],nh={class:"form-group"},sh=["value"],oh={class:"content-section"},ih={class:"content-form"},rh={class:"form-group"},lh=["value"],ah={class:"form-group"},ch=["value"],uh={class:"content-section"},dh={class:"content-form"},fh={class:"form-group"},hh=["value"],ph={class:"form-group"},mh=["value"],gh={class:"form-group"},vh=["value"],_h={class:"form-group"},bh=["value"],yh={class:"form-group"},wh=["value"],Sh={key:4,class:"tab-content"},kh={class:"settings-form"},xh={class:"setting-group"},Ch={class:"setting-group"},Eh={class:"setting-group"},Ph={class:"modal-header"},Rh={key:0,class:"modal-body"},Ah={key:0,class:"loading-state"},Th={key:1,class:"request-details"},Oh={class:"detail-row"},Mh={class:"detail-row"},Ih={class:"detail-row"},jh={class:"detail-row"},Dh={class:"detail-row"},Vh={class:"detail-row"},Fh={class:"detail-row"},Bh={class:"detail-row"},Lh={class:"detail-row"},Hh={class:"detail-row"},Nh={class:"modal-footer"},qh=["disabled"],Uh={class:"modal-header"},Kh={class:"modal-body"},Wh={class:"form-group"},Gh=["min"],zh={class:"form-group"},Jh={class:"modal-footer"},Yh={class:"modal-header"},Qh={class:"modal-body"},Zh={class:"form-group"},Xh={class:"modal-footer"},$h=["disabled"],ep={class:"modal-header"},tp={class:"modal-body"},np={class:"form-group"},sp={class:"modal-footer"},op=["disabled"],ip={class:"modal-header"},rp={class:"modal-body"},lp={key:0,class:"no-communications"},ap={key:1,class:"communications-list"},cp={class:"comm-header"},up={class:"comm-type"},dp={class:"comm-direction"},fp={class:"comm-date"},hp={class:"comm-message"},pp={class:"modal-footer"},mp={class:"modal-header"},gp={class:"modal-body"},vp={class:"form-group"},_p={class:"form-group"},bp={class:"form-group"},yp={class:"form-group"},wp={class:"form-group"},Sp={class:"modal-footer"};function kp(e,t,s,n,o,i){var r,a,u,p,f,m,v;return N(),K("div",fd,[l("div",hd,[t[101]||(t[101]=l("h1",null,"🔧 Beheer Dashboard",-1)),t[102]||(t[102]=l("p",null,"Beheer fiets service aanvragen, geblokkeerde data en instellingen",-1)),l("div",pd,[l("span",null,"Ingelogd als: "+I((r=n.user)==null?void 0:r.name),1),l("button",{onClick:t[0]||(t[0]=(...c)=>n.handleLogout&&n.handleLogout(...c)),class:"logout-btn"},"Uitloggen")])]),l("div",md,[(N(!0),K(Re,null,xt(n.tabs,c=>(N(),K("button",{key:c.id,onClick:C=>n.activeTab=c.id,class:We(["tab-button",{active:n.activeTab===c.id}])},I(c.label),11,gd))),128))]),n.activeTab==="requests"?(N(),K("div",vd,[l("div",_d,[t[103]||(t[103]=l("h2",null,"Service Aanvragen",-1)),l("button",{onClick:t[1]||(t[1]=(...c)=>n.refreshRequests&&n.refreshRequests(...c)),class:"refresh-btn",disabled:n.loading,title:n.loading?"Verversen...":"Verversen"},I((n.loading,"🔄")),9,bd)]),l("div",yd,[t[104]||(t[104]=l("div",{class:"filter-title"},"Filter op status:",-1)),l("div",wd,[l("label",Sd,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[2]||(t[2]=c=>n.statusFilters.pending=c)},null,512),[[Ht,n.statusFilters.pending]]),l("span",kd,[l("span",xd,I(n.getStatusText("pending")),1)])]),l("label",Cd,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=c=>n.statusFilters.confirmed=c)},null,512),[[Ht,n.statusFilters.confirmed]]),l("span",Ed,[l("span",Pd,I(n.getStatusText("confirmed")),1)])]),l("label",Rd,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=c=>n.statusFilters.mail_sent=c)},null,512),[[Ht,n.statusFilters.mail_sent]]),l("span",Ad,[l("span",Td,I(n.getStatusText("mail_sent")),1)])]),l("label",Od,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[5]||(t[5]=c=>n.statusFilters.completed=c)},null,512),[[Ht,n.statusFilters.completed]]),l("span",Md,[l("span",Id,I(n.getStatusText("completed")),1)])]),l("label",jd,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[6]||(t[6]=c=>n.statusFilters.cancelled=c)},null,512),[[Ht,n.statusFilters.cancelled]]),l("span",Dd,[l("span",Vd,I(n.getStatusText("cancelled")),1)])])])]),l("div",Fd,[t[107]||(t[107]=gs('
ID
Naam
Datum/Tijd
Status
Acties
',1)),n.loading?(N(),K("div",Bd,[...t[105]||(t[105]=[l("div",{class:"loading-text"},"Aanvragen laden...",-1)])])):n.filteredRequests.length===0?(N(),K("div",Ld,[...t[106]||(t[106]=[l("div",{class:"empty-text"},"Geen service aanvragen gevonden met de geselecteerde filters",-1)])])):(N(!0),K(Re,{key:2},xt(n.filteredRequests,c=>(N(),K("div",{class:"table-row",key:c.id},[l("div",Hd,I(c.id),1),l("div",Nd,I(c.name),1),l("div",qd,I(n.formatDateTime(c.requested_date,c.requested_time)),1),l("div",Ud,[l("span",{class:We(["status-badge",c.status])},I(n.getStatusText(c.status)),3)]),l("div",Kd,[l("button",{onClick:C=>n.viewRequest(c),class:"action-btn view",title:"Bekijken"}," 👁️ ",8,Wd),l("button",{onClick:C=>n.sendEmail(c),class:"action-btn email",disabled:!c.email,title:"E-mail versturen"}," 📧 ",8,Gd),l("button",{onClick:C=>n.sendSms(c),class:"action-btn sms",disabled:!c.phone,title:"SMS versturen"}," 📱 ",8,zd),l("button",{onClick:C=>n.viewCommunications(c),class:"action-btn comm",title:"Communicatie bekijken"}," 💬 ",8,Jd)])]))),128))])])):Se("",!0),n.activeTab==="blocked"?(N(),K("div",Yd,[l("div",Qd,[t[108]||(t[108]=l("h2",null,"Geblokkeerde Data",-1)),l("button",{onClick:t[7]||(t[7]=c=>n.showAddBlockedDate=!0),class:"add-btn",title:"Geblokkeerde Datum Toevoegen"},"➕")]),l("div",Zd,[(N(!0),K(Re,null,xt(n.blockedDates,c=>(N(),K("div",{key:c.id,class:"blocked-date-item"},[l("div",Xd,[l("span",$d,I(n.formatDate(c.date)),1),c.reason?(N(),K("span",ef,I(c.reason),1)):Se("",!0)]),l("div",tf,[l("button",{onClick:C=>n.editBlockedDate(c),class:"edit-btn",title:"Bewerken"},"✏️",8,nf),l("button",{onClick:C=>n.deleteBlockedDate(c.id),class:"delete-btn",title:"Verwijderen"},"🗑️",8,sf)])]))),128))])])):Se("",!0),n.activeTab==="pricelist"?(N(),K("div",of,[l("div",rf,[t[109]||(t[109]=l("h2",null,"Prijslijst Beheer",-1)),l("button",{onClick:t[8]||(t[8]=c=>n.showAddPricelistItem=!0),class:"add-btn",title:"Prijslijst Item Toevoegen"},"➕")]),l("div",lf,[t[112]||(t[112]=gs('
Titel
Beschrijving
Prijs
Volgorde
Status
Acties
',1)),n.pricelistLoading?(N(),K("div",af,[...t[110]||(t[110]=[l("div",{class:"loading-text"},"Prijslijst laden...",-1)])])):n.pricelist.length===0?(N(),K("div",cf,[...t[111]||(t[111]=[l("div",{class:"empty-text"},"Geen prijslijst items gevonden",-1)])])):(N(!0),K(Re,{key:2},xt(n.pricelist,c=>(N(),K("div",{class:"table-row",key:c.id},[l("div",uf,I(c.title),1),l("div",df,I(c.description),1),l("div",ff,"€"+I(c.price),1),l("div",hf,I(c.sort_order),1),l("div",pf,[l("span",{class:We(["status-badge",c.is_active?"active":"inactive"])},I(c.is_active?"Actief":"Inactief"),3)]),l("div",mf,[l("button",{onClick:C=>n.editPricelistItem(c),class:"action-btn edit",title:"Bewerken"},"✏️",8,gf),l("button",{onClick:C=>n.deletePricelistItem(c.id),class:"action-btn delete",title:"Verwijderen"},"🗑️",8,vf)])]))),128))])])):Se("",!0),n.activeTab==="content"?(N(),K("div",_f,[t[143]||(t[143]=l("div",{class:"section-header"},[l("h2",null,"Pagina Teksten Beheer")],-1)),l("div",bf,[l("div",yf,[t[115]||(t[115]=l("h3",null,"Openingspagina - Hero Sectie",-1)),l("div",wf,[l("div",Sf,[t[113]||(t[113]=l("label",null,"Hoofdtekst (Header)",-1)),l("input",{type:"text",value:n.getContentValue("home_hero_title"),onInput:t[9]||(t[9]=c=>n.updateContentValue("home_hero_title",c.target.value)),onBlur:t[10]||(t[10]=c=>n.savePageContent("home_hero_title"))},null,40,kf)]),l("div",xf,[t[114]||(t[114]=l("label",null,"Subtekst (Subheader)",-1)),l("input",{type:"text",value:n.getContentValue("home_hero_subtitle"),onInput:t[11]||(t[11]=c=>n.updateContentValue("home_hero_subtitle",c.target.value)),onBlur:t[12]||(t[12]=c=>n.savePageContent("home_hero_subtitle"))},null,40,Cf)])])]),l("div",Ef,[t[128]||(t[128]=l("h3",null,"Openingspagina - Panelen",-1)),l("div",Pf,[l("div",Rf,[t[118]||(t[118]=l("h4",null,"Paneel 1",-1)),l("div",Af,[t[116]||(t[116]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_1_title"),onInput:t[13]||(t[13]=c=>n.updateContentValue("home_feature_1_title",c.target.value)),onBlur:t[14]||(t[14]=c=>n.savePageContent("home_feature_1_title"))},null,40,Tf)]),l("div",Of,[t[117]||(t[117]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_1_text"),onInput:t[15]||(t[15]=c=>n.updateContentValue("home_feature_1_text",c.target.value)),onBlur:t[16]||(t[16]=c=>n.savePageContent("home_feature_1_text")),rows:"2"},null,40,Mf)])]),l("div",If,[t[121]||(t[121]=l("h4",null,"Paneel 2",-1)),l("div",jf,[t[119]||(t[119]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_2_title"),onInput:t[17]||(t[17]=c=>n.updateContentValue("home_feature_2_title",c.target.value)),onBlur:t[18]||(t[18]=c=>n.savePageContent("home_feature_2_title"))},null,40,Df)]),l("div",Vf,[t[120]||(t[120]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_2_text"),onInput:t[19]||(t[19]=c=>n.updateContentValue("home_feature_2_text",c.target.value)),onBlur:t[20]||(t[20]=c=>n.savePageContent("home_feature_2_text")),rows:"2"},null,40,Ff)])]),l("div",Bf,[t[124]||(t[124]=l("h4",null,"Paneel 3",-1)),l("div",Lf,[t[122]||(t[122]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_3_title"),onInput:t[21]||(t[21]=c=>n.updateContentValue("home_feature_3_title",c.target.value)),onBlur:t[22]||(t[22]=c=>n.savePageContent("home_feature_3_title"))},null,40,Hf)]),l("div",Nf,[t[123]||(t[123]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_3_text"),onInput:t[23]||(t[23]=c=>n.updateContentValue("home_feature_3_text",c.target.value)),onBlur:t[24]||(t[24]=c=>n.savePageContent("home_feature_3_text")),rows:"2"},null,40,qf)])]),l("div",Uf,[t[127]||(t[127]=l("h4",null,"Paneel 4",-1)),l("div",Kf,[t[125]||(t[125]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_4_title"),onInput:t[25]||(t[25]=c=>n.updateContentValue("home_feature_4_title",c.target.value)),onBlur:t[26]||(t[26]=c=>n.savePageContent("home_feature_4_title"))},null,40,Wf)]),l("div",Gf,[t[126]||(t[126]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_4_text"),onInput:t[27]||(t[27]=c=>n.updateContentValue("home_feature_4_text",c.target.value)),onBlur:t[28]||(t[28]=c=>n.savePageContent("home_feature_4_text")),rows:"2"},null,40,zf)])])])]),l("div",Jf,[t[133]||(t[133]=l("h3",null,"Openingspagina - Knoppen Container",-1)),l("div",Yf,[l("div",Qf,[t[129]||(t[129]=l("label",null,"Hoofdtekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_title"),onInput:t[29]||(t[29]=c=>n.updateContentValue("home_cta_title",c.target.value)),onBlur:t[30]||(t[30]=c=>n.savePageContent("home_cta_title"))},null,40,Zf)]),l("div",Xf,[t[130]||(t[130]=l("label",null,"Subtekst",-1)),l("textarea",{value:n.getContentValue("home_cta_subtitle"),onInput:t[31]||(t[31]=c=>n.updateContentValue("home_cta_subtitle",c.target.value)),onBlur:t[32]||(t[32]=c=>n.savePageContent("home_cta_subtitle")),rows:"2"},null,40,$f)]),l("div",eh,[t[131]||(t[131]=l("label",null,"Knop 1 Tekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_button_1_text"),onInput:t[33]||(t[33]=c=>n.updateContentValue("home_cta_button_1_text",c.target.value)),onBlur:t[34]||(t[34]=c=>n.savePageContent("home_cta_button_1_text"))},null,40,th)]),l("div",nh,[t[132]||(t[132]=l("label",null,"Knop 2 Tekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_button_2_text"),onInput:t[35]||(t[35]=c=>n.updateContentValue("home_cta_button_2_text",c.target.value)),onBlur:t[36]||(t[36]=c=>n.savePageContent("home_cta_button_2_text"))},null,40,sh)])])]),l("div",oh,[t[136]||(t[136]=l("h3",null,"Boekingspagina - Header",-1)),l("div",ih,[l("div",rh,[t[134]||(t[134]=l("label",null,"Hoofdtekst (Header)",-1)),l("input",{type:"text",value:n.getContentValue("booking_header_title"),onInput:t[37]||(t[37]=c=>n.updateContentValue("booking_header_title",c.target.value)),onBlur:t[38]||(t[38]=c=>n.savePageContent("booking_header_title"))},null,40,lh)]),l("div",ah,[t[135]||(t[135]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("booking_header_subtitle"),onInput:t[39]||(t[39]=c=>n.updateContentValue("booking_header_subtitle",c.target.value)),onBlur:t[40]||(t[40]=c=>n.savePageContent("booking_header_subtitle")),rows:"2"},null,40,ch)])])]),l("div",uh,[t[142]||(t[142]=l("h3",null,"Openingspagina - Contact Sectie",-1)),l("div",dh,[l("div",fh,[t[137]||(t[137]=l("label",null,"Hoofdtekst (Header)",-1)),l("input",{type:"text",value:n.getContentValue("home_contact_title"),onInput:t[41]||(t[41]=c=>n.updateContentValue("home_contact_title",c.target.value)),onBlur:t[42]||(t[42]=c=>n.savePageContent("home_contact_title"))},null,40,hh)]),l("div",ph,[t[138]||(t[138]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_contact_subtitle"),onInput:t[43]||(t[43]=c=>n.updateContentValue("home_contact_subtitle",c.target.value)),onBlur:t[44]||(t[44]=c=>n.savePageContent("home_contact_subtitle")),rows:"2"},null,40,mh)]),l("div",gh,[t[139]||(t[139]=l("label",null,"Telefoonnummer",-1)),l("input",{type:"text",value:n.getContentValue("home_contact_phone"),onInput:t[45]||(t[45]=c=>n.updateContentValue("home_contact_phone",c.target.value)),onBlur:t[46]||(t[46]=c=>n.savePageContent("home_contact_phone")),placeholder:"+31 6 12345678"},null,40,vh)]),l("div",_h,[t[140]||(t[140]=l("label",null,"E-mailadres",-1)),l("input",{type:"email",value:n.getContentValue("home_contact_email"),onInput:t[47]||(t[47]=c=>n.updateContentValue("home_contact_email",c.target.value)),onBlur:t[48]||(t[48]=c=>n.savePageContent("home_contact_email")),placeholder:"info@fiet-service.nl"},null,40,bh)]),l("div",yh,[t[141]||(t[141]=l("label",null,"Adres",-1)),l("input",{type:"text",value:n.getContentValue("home_contact_address"),onInput:t[49]||(t[49]=c=>n.updateContentValue("home_contact_address",c.target.value)),onBlur:t[50]||(t[50]=c=>n.savePageContent("home_contact_address")),placeholder:"Fietsstraat 123, 1234 AB Amsterdam"},null,40,wh)])])])])])):Se("",!0),n.activeTab==="settings"?(N(),K("div",Sh,[t[147]||(t[147]=l("div",{class:"section-header"},[l("h2",null,"Applicatie Instellingen")],-1)),l("div",kh,[l("div",xh,[t[144]||(t[144]=l("label",{for:"admin_email"},"Beheer Notificatie E-mail",-1)),le(l("input",{type:"email",id:"admin_email","onUpdate:modelValue":t[51]||(t[51]=c=>n.settings.admin_notification_email=c),placeholder:"admin@voorbeeld.com"},null,512),[[_e,n.settings.admin_notification_email]]),l("button",{onClick:t[52]||(t[52]=c=>n.updateSetting("admin_notification_email",n.settings.admin_notification_email)),class:"save-btn",title:"Opslaan"}," 💾 ")]),l("div",Ch,[t[145]||(t[145]=l("label",{for:"business_name"},"Bedrijfsnaam",-1)),le(l("input",{type:"text",id:"business_name","onUpdate:modelValue":t[53]||(t[53]=c=>n.settings.business_name=c),placeholder:"Fiets Service Centrum"},null,512),[[_e,n.settings.business_name]]),l("button",{onClick:t[54]||(t[54]=c=>n.updateSetting("business_name",n.settings.business_name)),class:"save-btn",title:"Opslaan"}," 💾 ")]),l("div",Eh,[t[146]||(t[146]=l("label",{for:"pickup_confirmation_email_text"},"Ophaalbevestiging E-mail Tekst",-1)),le(l("textarea",{id:"pickup_confirmation_email_text","onUpdate:modelValue":t[55]||(t[55]=c=>n.settings.pickup_confirmation_email_text=c),rows:"8",placeholder:"Standaard tekst voor ophaalbevestiging e-mail"},null,512),[[_e,n.settings.pickup_confirmation_email_text]]),l("button",{onClick:t[56]||(t[56]=c=>n.updateSetting("pickup_confirmation_email_text",n.settings.pickup_confirmation_email_text)),class:"save-btn",title:"Opslaan"}," 💾 ")])])])):Se("",!0),n.showRequestModal?(N(),K("div",{key:5,class:"modal-overlay",onClick:t[67]||(t[67]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c))},[l("div",{class:"modal-content large",onClick:t[66]||(t[66]=dt(()=>{},["stop"]))},[l("div",Ph,[t[148]||(t[148]=l("h3",null,"Service Aanvraag Details",-1)),l("button",{onClick:t[57]||(t[57]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),n.selectedRequest?(N(),K("div",Rh,[n.requestModalLoading?(N(),K("div",Ah,[...t[149]||(t[149]=[l("div",{class:"loading-spinner"},null,-1),l("p",null,"Gegevens laden...",-1)])])):(N(),K("div",Th,[l("div",Oh,[t[150]||(t[150]=l("strong",null,"Naam:",-1)),ke(" "+I(n.selectedRequest.name),1)]),l("div",Mh,[t[151]||(t[151]=l("strong",null,"Adres:",-1)),ke(" "+I(n.selectedRequest.address),1)]),l("div",Ih,[t[152]||(t[152]=l("strong",null,"Plaats:",-1)),ke(" "+I(n.selectedRequest.place),1)]),l("div",jh,[t[153]||(t[153]=l("strong",null,"E-mail:",-1)),ke(" "+I(n.selectedRequest.email||"Niet opgegeven"),1)]),l("div",Dh,[t[154]||(t[154]=l("strong",null,"Telefoon:",-1)),ke(" "+I(n.selectedRequest.phone||"Niet opgegeven"),1)]),l("div",Vh,[t[155]||(t[155]=l("strong",null,"Reparatie Beschrijving:",-1)),ke(" "+I(n.selectedRequest.repair_description),1)]),l("div",Fh,[t[156]||(t[156]=l("strong",null,"Gewenste Datum/Tijd:",-1)),ke(" "+I(n.formatDateTime(n.selectedRequest.requested_date,n.selectedRequest.requested_time)),1)]),l("div",Bh,[t[158]||(t[158]=l("strong",null,"Status:",-1)),le(l("select",{"onUpdate:modelValue":t[58]||(t[58]=c=>n.selectedRequest.status=c),onChange:t[59]||(t[59]=(...c)=>n.updateRequestStatus&&n.updateRequestStatus(...c))},[...t[157]||(t[157]=[gs('',5)])],544),[[Ja,n.selectedRequest.status]])]),l("div",Lh,[t[159]||(t[159]=l("strong",null,"Werkelijke ophaalDatum:",-1)),le(l("input",{type:"date","onUpdate:modelValue":t[60]||(t[60]=c=>n.selectedRequest.actual_repair_date=c),onChange:t[61]||(t[61]=(...c)=>n.updateRequestDate&&n.updateRequestDate(...c))},null,544),[[_e,n.selectedRequest.actual_repair_date]])]),l("div",Hh,[t[160]||(t[160]=l("strong",null,"Werkelijke ophaaltijd:",-1)),le(l("input",{type:"time","onUpdate:modelValue":t[62]||(t[62]=c=>n.selectedRequest.actual_repair_time=c),onChange:t[63]||(t[63]=(...c)=>n.updateRequestTime&&n.updateRequestTime(...c))},null,544),[[_e,n.selectedRequest.actual_repair_time]])])]))])):Se("",!0),l("div",Nh,[l("button",{onClick:t[64]||(t[64]=(...c)=>n.sendPickupConfirmation&&n.sendPickupConfirmation(...c)),class:"btn-pickup-confirmation",disabled:!((a=n.selectedRequest)!=null&&a.email)||!((u=n.selectedRequest)!=null&&u.actual_repair_date)||!((p=n.selectedRequest)!=null&&p.actual_repair_time)||n.pickupConfirmationLoading,title:"Verstuur ophaalbevestiging e-mail naar klant"},I(n.pickupConfirmationLoading?"📧 Versturen...":"📧 Ophaalbevestiging Versturen"),9,qh),l("button",{onClick:t[65]||(t[65]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c)),class:"btn-primary"},"Sluiten")])])])):Se("",!0),n.showAddBlockedDate?(N(),K("div",{key:6,class:"modal-overlay",onClick:t[74]||(t[74]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c))},[l("div",{class:"modal-content",onClick:t[73]||(t[73]=dt(()=>{},["stop"]))},[l("div",Uh,[l("h3",null,I(n.editingBlockedDate?"Bewerken":"Toevoegen")+" Geblokkeerde Datum",1),l("button",{onClick:t[68]||(t[68]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",Kh,[l("div",Wh,[t[161]||(t[161]=l("label",{for:"blocked_date"},"Datum",-1)),le(l("input",{type:"date",id:"blocked_date","onUpdate:modelValue":t[69]||(t[69]=c=>n.blockedDateForm.date=c),min:n.minDate},null,8,Gh),[[_e,n.blockedDateForm.date]])]),l("div",zh,[t[162]||(t[162]=l("label",{for:"blocked_reason"},"Reden (Optioneel)",-1)),le(l("textarea",{id:"blocked_reason","onUpdate:modelValue":t[70]||(t[70]=c=>n.blockedDateForm.reason=c),rows:"3"},null,512),[[_e,n.blockedDateForm.reason]])])]),l("div",Jh,[l("button",{onClick:t[71]||(t[71]=(...c)=>n.saveBlockedDate&&n.saveBlockedDate(...c)),class:"btn-primary"},"Opslaan"),l("button",{onClick:t[72]||(t[72]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Se("",!0),n.showEmailModal?(N(),K("div",{key:7,class:"modal-overlay",onClick:t[80]||(t[80]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c))},[l("div",{class:"modal-content",onClick:t[79]||(t[79]=dt(()=>{},["stop"]))},[l("div",Yh,[l("h3",null,"E-mail Versturen naar "+I((f=n.selectedRequest)==null?void 0:f.name),1),l("button",{onClick:t[75]||(t[75]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",Qh,[l("div",Zh,[t[163]||(t[163]=l("label",{for:"email_message"},"Bericht",-1)),le(l("textarea",{id:"email_message","onUpdate:modelValue":t[76]||(t[76]=c=>n.emailForm.message=c),rows:"6",placeholder:"Voer je bericht in..."},null,512),[[_e,n.emailForm.message]])])]),l("div",Xh,[l("button",{onClick:t[77]||(t[77]=(...c)=>n.submitEmail&&n.submitEmail(...c)),class:"btn-primary",disabled:n.emailLoading},I(n.emailLoading?"Versturen...":"E-mail Versturen"),9,$h),l("button",{onClick:t[78]||(t[78]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Se("",!0),n.showSmsModal?(N(),K("div",{key:8,class:"modal-overlay",onClick:t[86]||(t[86]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c))},[l("div",{class:"modal-content",onClick:t[85]||(t[85]=dt(()=>{},["stop"]))},[l("div",ep,[l("h3",null,"SMS Versturen naar "+I((m=n.selectedRequest)==null?void 0:m.name),1),l("button",{onClick:t[81]||(t[81]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",tp,[l("div",np,[t[164]||(t[164]=l("label",{for:"sms_message"},"Bericht",-1)),le(l("textarea",{id:"sms_message","onUpdate:modelValue":t[82]||(t[82]=c=>n.smsForm.message=c),rows:"6",placeholder:"Voer je bericht in..."},null,512),[[_e,n.smsForm.message]])])]),l("div",sp,[l("button",{onClick:t[83]||(t[83]=(...c)=>n.submitSms&&n.submitSms(...c)),class:"btn-primary",disabled:n.smsLoading},I(n.smsLoading?"Versturen...":"SMS Versturen"),9,op),l("button",{onClick:t[84]||(t[84]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Se("",!0),n.showCommunicationsModal?(N(),K("div",{key:9,class:"modal-overlay",onClick:t[90]||(t[90]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c))},[l("div",{class:"modal-content large",onClick:t[89]||(t[89]=dt(()=>{},["stop"]))},[l("div",ip,[l("h3",null,"Communicatie Geschiedenis - "+I((v=n.selectedRequest)==null?void 0:v.name),1),l("button",{onClick:t[87]||(t[87]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",rp,[n.communications.length===0?(N(),K("div",lp," Geen communicatie gevonden voor deze aanvraag. ")):(N(),K("div",ap,[(N(!0),K(Re,null,xt(n.communications,c=>(N(),K("div",{key:c.id,class:"communication-item"},[l("div",cp,[l("span",up,I(n.getCommTypeText(c.type)),1),l("span",dp,I(n.getCommDirectionText(c.direction)),1),l("span",fp,I(n.formatDateTime(c.created_at)),1)]),l("div",hp,I(c.message),1)]))),128))]))]),l("div",pp,[l("button",{onClick:t[88]||(t[88]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c)),class:"btn-primary"},"Sluiten")])])])):Se("",!0),n.showAddPricelistItem?(N(),K("div",{key:10,class:"modal-overlay",onClick:t[100]||(t[100]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c))},[l("div",{class:"modal-content",onClick:t[99]||(t[99]=dt(()=>{},["stop"]))},[l("div",mp,[l("h3",null,I(n.editingPricelistItem?"Bewerken":"Toevoegen")+" Prijslijst Item",1),l("button",{onClick:t[91]||(t[91]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",gp,[l("div",vp,[t[165]||(t[165]=l("label",{for:"pricelist_title"},"Titel",-1)),le(l("input",{type:"text",id:"pricelist_title","onUpdate:modelValue":t[92]||(t[92]=c=>n.pricelistForm.title=c),placeholder:"Bijv. Banden vervangen"},null,512),[[_e,n.pricelistForm.title]])]),l("div",_p,[t[166]||(t[166]=l("label",{for:"pricelist_description"},"Beschrijving",-1)),le(l("textarea",{id:"pricelist_description","onUpdate:modelValue":t[93]||(t[93]=c=>n.pricelistForm.description=c),rows:"3",placeholder:"Beschrijving van de service"},null,512),[[_e,n.pricelistForm.description]])]),l("div",bp,[t[167]||(t[167]=l("label",{for:"pricelist_price"},"Prijs (€)",-1)),le(l("input",{type:"number",id:"pricelist_price","onUpdate:modelValue":t[94]||(t[94]=c=>n.pricelistForm.price=c),step:"0.01",min:"0",placeholder:"25.00"},null,512),[[_e,n.pricelistForm.price]])]),l("div",yp,[t[168]||(t[168]=l("label",{for:"pricelist_sort_order"},"Volgorde",-1)),le(l("input",{type:"number",id:"pricelist_sort_order","onUpdate:modelValue":t[95]||(t[95]=c=>n.pricelistForm.sort_order=c),min:"0",placeholder:"1"},null,512),[[_e,n.pricelistForm.sort_order]])]),l("div",wp,[l("label",null,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[96]||(t[96]=c=>n.pricelistForm.is_active=c)},null,512),[[Ht,n.pricelistForm.is_active]]),t[169]||(t[169]=ke(" Actief ",-1))])])]),l("div",Sp,[l("button",{onClick:t[97]||(t[97]=(...c)=>n.savePricelistItem&&n.savePricelistItem(...c)),class:"btn-primary"},"Opslaan"),l("button",{onClick:t[98]||(t[98]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Se("",!0)])}const xp=en(dd,[["render",kp],["__scopeId","data-v-ed1f8971"]]),Cp={name:"Login",setup(){const e=Tr(),t=as(),s=Y({email:"",password:""}),n=Y(!1),o=Y("");return{form:s,loading:n,error:o,handleLogin:async()=>{n.value=!0,o.value="";try{const r=await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s.value)});if(!r.ok){const u=await r.json();throw new Error(u.message||"Inloggen mislukt")}const a=await r.json();t.login(a.user,a.token),e.push("/admin")}catch(r){o.value=r.message}finally{n.value=!1}}}}},Ep={class:"login"},Pp={class:"login-container"},Rp={class:"form-group"},Ap=["disabled"],Tp={class:"form-group"},Op=["disabled"],Mp={key:0,class:"form-error"},Ip=["disabled"];function jp(e,t,s,n,o,i){return N(),K("div",Ep,[l("div",Pp,[t[5]||(t[5]=l("div",{class:"login-header"},[l("h1",null,"🔐 Beheerder Login"),l("p",null,"Log in om toegang te krijgen tot het beheerpaneel")],-1)),l("form",{onSubmit:t[2]||(t[2]=dt((...r)=>n.handleLogin&&n.handleLogin(...r),["prevent"])),class:"login-form"},[l("div",Rp,[t[3]||(t[3]=l("label",{for:"email"},"E-mail",-1)),le(l("input",{type:"email",id:"email","onUpdate:modelValue":t[0]||(t[0]=r=>n.form.email=r),required:"",placeholder:"admin@fietservice.nl",disabled:n.loading},null,8,Ap),[[_e,n.form.email]])]),l("div",Tp,[t[4]||(t[4]=l("label",{for:"password"},"Wachtwoord",-1)),le(l("input",{type:"password",id:"password","onUpdate:modelValue":t[1]||(t[1]=r=>n.form.password=r),required:"",placeholder:"Voer je wachtwoord in",disabled:n.loading},null,8,Op),[[_e,n.form.password]])]),n.error?(N(),K("div",Mp,I(n.error),1)):Se("",!0),l("button",{type:"submit",class:"login-btn",disabled:n.loading},I(n.loading?"Inloggen...":"Inloggen"),9,Ip)],32)])])}const Dp=en(Cp,[["render",jp],["__scopeId","data-v-2b41928d"]]),Vp={name:"Pricelist",setup(){const e=Y([]),t=Y(!0),s=async()=>{try{const n=await fetch("/api/pricelist");n.ok&&(e.value=await n.json())}catch(n){console.error("Failed to fetch pricelist:",n)}finally{t.value=!1}};return $t(()=>{s()}),{pricelist:e,loading:t}}},Fp={class:"pricelist"},Bp={class:"pricelist-header"},Lp={key:0,class:"loading-state"},Hp={key:1,class:"empty-state"},Np={key:2,class:"pricelist-grid"},qp={class:"price-header"},Up={class:"price"},Kp={class:"description"},Wp={class:"cta-section"};function Gp(e,t,s,n,o,i){const r=Kn("router-link");return N(),K("div",Fp,[l("div",Bp,[t[1]||(t[1]=l("h1",null,"💰 Prijslijst",-1)),t[2]||(t[2]=l("p",null,"Transparante prijzen voor al onze fiets service diensten",-1)),be(r,{to:"/",class:"back-btn"},{default:ot(()=>[...t[0]||(t[0]=[ke("← Terug naar Home",-1)])]),_:1})]),n.loading?(N(),K("div",Lp,[...t[3]||(t[3]=[l("div",{class:"loading-spinner"},null,-1),l("p",null,"Prijzen laden...",-1)])])):n.pricelist.length===0?(N(),K("div",Hp,[...t[4]||(t[4]=[l("p",null,"Geen prijzen beschikbaar op dit moment.",-1)])])):(N(),K("div",Np,[(N(!0),K(Re,null,xt(n.pricelist,a=>(N(),K("div",{key:a.id,class:"price-card"},[l("div",qp,[l("h3",null,I(a.title),1),l("div",Up,"€"+I(a.price),1)]),l("p",Kp,I(a.description),1)]))),128))])),l("div",Wp,[t[6]||(t[6]=l("h2",null,"Klaar om je afspraak te boeken?",-1)),t[7]||(t[7]=l("p",null,"Boek nu je service afspraak online!",-1)),be(r,{to:"/booking",class:"cta-button"},{default:ot(()=>[...t[5]||(t[5]=[ke("Nu Boeken",-1)])]),_:1})])])}const zp=en(Vp,[["render",Gp],["__scopeId","data-v-a4add45b"]]),Jp=[{path:"/",name:"Home",component:ju},{path:"/pricelist",name:"Pricelist",component:zp},{path:"/booking",name:"Booking",component:ud},{path:"/login",name:"Login",component:Dp},{path:"/admin",name:"Admin",component:xp,meta:{requiresAuth:!0}}],Or=uu({history:Lc(),routes:Jp});Or.beforeEach((e,t,s)=>{if(e.meta.requiresAuth&&!as().isAuthenticated){s("/login");return}s()});const Yp="/images/bikeservice_logo_navbar.svg",Qp={name:"App",setup(){const e=as();return $t(()=>{e.checkAuth()}),{isAuthenticated:e.isAuthenticated}}},Zp={id:"app"},Xp={class:"navbar"},$p={class:"nav-container"},em={class:"nav-menu"},tm={class:"main-content"};function nm(e,t,s,n,o,i){const r=Kn("router-link"),a=Kn("router-view");return N(),K("div",Zp,[l("nav",Xp,[l("div",$p,[be(r,{to:"/",class:"nav-logo"},{default:ot(()=>[...t[0]||(t[0]=[l("img",{src:Yp,alt:"Bike Service Logo",class:"logo-image"},null,-1)])]),_:1}),l("div",em,[be(r,{to:"/",class:"nav-link"},{default:ot(()=>[...t[1]||(t[1]=[ke("Home",-1)])]),_:1}),be(r,{to:"/booking",class:"nav-link"},{default:ot(()=>[...t[2]||(t[2]=[ke("Service Boeken",-1)])]),_:1}),n.isAuthenticated?(N(),Ts(r,{key:0,to:"/admin",class:"nav-link"},{default:ot(()=>[...t[3]||(t[3]=[ke("Beheer",-1)])]),_:1})):(N(),Ts(r,{key:1,to:"/login",class:"nav-link"},{default:ot(()=>[...t[4]||(t[4]=[ke("Beheer Login",-1)])]),_:1}))])])]),l("main",tm,[be(a)])])}const sm=en(Qp,[["render",nm]]),oo=$a(sm),om=nc();oo.use(om);oo.use(Or);oo.mount("#app"); diff --git a/backend/public/assets/index-DIJ8YzP7.js b/backend/public/assets/index-DIJ8YzP7.js deleted file mode 100644 index b86077f..0000000 --- a/backend/public/assets/index-DIJ8YzP7.js +++ /dev/null @@ -1,25 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const r of i.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function s(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(o){if(o.ep)return;o.ep=!0;const i=s(o);fetch(o.href,i)}})();/** -* @vue/shared v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function Bs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const de={},Kt=[],it=()=>{},si=()=>!1,Jn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ls=e=>e.startsWith("onUpdate:"),De=Object.assign,Ns=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Mr=Object.prototype.hasOwnProperty,ce=(e,t)=>Mr.call(e,t),K=Array.isArray,Wt=e=>Cn(e)==="[object Map]",Xt=e=>Cn(e)==="[object Set]",io=e=>Cn(e)==="[object Date]",$=e=>typeof e=="function",we=e=>typeof e=="string",rt=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",oi=e=>(ge(e)||$(e))&&$(e.then)&&$(e.catch),ii=Object.prototype.toString,Cn=e=>ii.call(e),Ir=e=>Cn(e).slice(8,-1),ri=e=>Cn(e)==="[object Object]",Hs=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,rn=Bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Yn=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},jr=/-(\w)/g,ze=Yn(e=>e.replace(jr,(t,s)=>s?s.toUpperCase():"")),Dr=/\B([A-Z])/g,Ft=Yn(e=>e.replace(Dr,"-$1").toLowerCase()),Qn=Yn(e=>e.charAt(0).toUpperCase()+e.slice(1)),cs=Yn(e=>e?`on${Qn(e)}`:""),Et=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Bn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ro;const Zn=()=>ro||(ro=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function qs(e){if(K(e)){const t={};for(let s=0;s{if(s){const n=s.split(Fr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function We(e){let t="";if(we(e))t=e;else if(K(e))for(let s=0;sEn(s,t))}const ci=e=>!!(e&&e.__v_isRef===!0),D=e=>we(e)?e:e==null?"":K(e)||ge(e)&&(e.toString===ii||!$(e.toString))?ci(e)?D(e.value):JSON.stringify(e,ui,2):String(e),ui=(e,t)=>ci(t)?ui(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,o],i)=>(s[us(n,i)+" =>"]=o,s),{})}:Xt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>us(s))}:rt(t)?us(t):ge(t)&&!K(t)&&!ri(t)?String(t):t,us=(e,t="")=>{var s;return rt(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** -* @vue/reactivity v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Me;class fi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Me,!t&&Me&&(this.index=(Me.scopes||(Me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t0&&--this._on===0&&(Me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(an){let t=an;for(an=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;ln;){let t=ln;for(ln=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function vi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function _i(e){let t,s=e.depsTail,n=s;for(;n;){const o=n.prevDep;n.version===-1?(n===s&&(s=o),Gs(n),Kr(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=o}e.deps=t,e.depsTail=s}function ks(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(bi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function bi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===vn)||(e.globalVersion=vn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ks(e))))return;e.flags|=2;const t=e.dep,s=me,n=Ze;me=e,Ze=!0;try{vi(e);const o=e.fn(e._value);(t.version===0||Et(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{me=s,Ze=n,_i(e),e.flags&=-3}}function Gs(e,t=!1){const{dep:s,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let i=s.computed.deps;i;i=i.nextDep)Gs(i,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Kr(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ze=!0;const yi=[];function mt(){yi.push(Ze),Ze=!1}function gt(){const e=yi.pop();Ze=e===void 0?!0:e}function lo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=me;me=void 0;try{t()}finally{me=s}}}let vn=0;class Wr{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class zs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!me||!Ze||me===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==me)s=this.activeLink=new Wr(me,this),me.deps?(s.prevDep=me.depsTail,me.depsTail.nextDep=s,me.depsTail=s):me.deps=me.depsTail=s,wi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=me.depsTail,s.nextDep=void 0,me.depsTail.nextDep=s,me.depsTail=s,me.deps===s&&(me.deps=n)}return s}trigger(t){this.version++,vn++,this.notify(t)}notify(t){Ks();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ws()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)wi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Ln=new WeakMap,Dt=Symbol(""),xs=Symbol(""),_n=Symbol("");function Ie(e,t,s){if(Ze&&me){let n=Ln.get(e);n||Ln.set(e,n=new Map);let o=n.get(s);o||(n.set(s,o=new zs),o.map=n,o.key=s),o.track()}}function dt(e,t,s,n,o,i){const r=Ln.get(e);if(!r){vn++;return}const a=u=>{u&&u.trigger()};if(Ks(),t==="clear")r.forEach(a);else{const u=K(e),p=u&&Hs(s);if(u&&s==="length"){const d=Number(n);r.forEach((m,v)=>{(v==="length"||v===_n||!rt(v)&&v>=d)&&a(m)})}else switch((s!==void 0||r.has(void 0))&&a(r.get(s)),p&&a(r.get(_n)),t){case"add":u?p&&a(r.get("length")):(a(r.get(Dt)),Wt(e)&&a(r.get(xs)));break;case"delete":u||(a(r.get(Dt)),Wt(e)&&a(r.get(xs)));break;case"set":Wt(e)&&a(r.get(Dt));break}}Ws()}function Gr(e,t){const s=Ln.get(e);return s&&s.get(t)}function Lt(e){const t=se(e);return t===e?t:(Ie(t,"iterate",_n),Ge(e)?t:t.map(Ee))}function Xn(e){return Ie(e=se(e),"iterate",_n),e}const zr={__proto__:null,[Symbol.iterator](){return ds(this,Symbol.iterator,Ee)},concat(...e){return Lt(this).concat(...e.map(t=>K(t)?Lt(t):t))},entries(){return ds(this,"entries",e=>(e[1]=Ee(e[1]),e))},every(e,t){return at(this,"every",e,t,void 0,arguments)},filter(e,t){return at(this,"filter",e,t,s=>s.map(Ee),arguments)},find(e,t){return at(this,"find",e,t,Ee,arguments)},findIndex(e,t){return at(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return at(this,"findLast",e,t,Ee,arguments)},findLastIndex(e,t){return at(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return at(this,"forEach",e,t,void 0,arguments)},includes(...e){return hs(this,"includes",e)},indexOf(...e){return hs(this,"indexOf",e)},join(e){return Lt(this).join(e)},lastIndexOf(...e){return hs(this,"lastIndexOf",e)},map(e,t){return at(this,"map",e,t,void 0,arguments)},pop(){return tn(this,"pop")},push(...e){return tn(this,"push",e)},reduce(e,...t){return ao(this,"reduce",e,t)},reduceRight(e,...t){return ao(this,"reduceRight",e,t)},shift(){return tn(this,"shift")},some(e,t){return at(this,"some",e,t,void 0,arguments)},splice(...e){return tn(this,"splice",e)},toReversed(){return Lt(this).toReversed()},toSorted(e){return Lt(this).toSorted(e)},toSpliced(...e){return Lt(this).toSpliced(...e)},unshift(...e){return tn(this,"unshift",e)},values(){return ds(this,"values",Ee)}};function ds(e,t,s){const n=Xn(e),o=n[t]();return n!==e&&!Ge(e)&&(o._next=o.next,o.next=()=>{const i=o._next();return i.value&&(i.value=s(i.value)),i}),o}const Jr=Array.prototype;function at(e,t,s,n,o,i){const r=Xn(e),a=r!==e&&!Ge(e),u=r[t];if(u!==Jr[t]){const m=u.apply(e,i);return a?Ee(m):m}let p=s;r!==e&&(a?p=function(m,v){return s.call(this,Ee(m),v,e)}:s.length>2&&(p=function(m,v){return s.call(this,m,v,e)}));const d=u.call(r,p,n);return a&&o?o(d):d}function ao(e,t,s,n){const o=Xn(e);let i=s;return o!==e&&(Ge(e)?s.length>3&&(i=function(r,a,u){return s.call(this,r,a,u,e)}):i=function(r,a,u){return s.call(this,r,Ee(a),u,e)}),o[t](i,...n)}function hs(e,t,s){const n=se(e);Ie(n,"iterate",_n);const o=n[t](...s);return(o===-1||o===!1)&&Qs(s[0])?(s[0]=se(s[0]),n[t](...s)):o}function tn(e,t,s=[]){mt(),Ks();const n=se(e)[t].apply(e,s);return Ws(),gt(),n}const Yr=Bs("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(rt));function Qr(e){rt(e)||(e=String(e));const t=se(this);return Ie(t,"has",e),t.hasOwnProperty(e)}class ki{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const o=this._isReadonly,i=this._isShallow;if(s==="__v_isReactive")return!o;if(s==="__v_isReadonly")return o;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(o?i?rl:Pi:i?Ei:Ci).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const r=K(t);if(!o){let u;if(r&&(u=zr[s]))return u;if(s==="hasOwnProperty")return Qr}const a=Reflect.get(t,s,ye(t)?t:n);return(rt(s)?Si.has(s):Yr(s))||(o||Ie(t,"get",s),i)?a:ye(a)?r&&Hs(s)?a:a.value:ge(a)?o?Ai(a):Pn(a):a}}class xi extends ki{constructor(t=!1){super(!1,t)}set(t,s,n,o){let i=t[s];if(!this._isShallow){const u=Rt(i);if(!Ge(n)&&!Rt(n)&&(i=se(i),n=se(n)),!K(t)&&ye(i)&&!ye(n))return u||(i.value=n),!0}const r=K(t)&&Hs(s)?Number(s)e,Tn=e=>Reflect.getPrototypeOf(e);function tl(e,t,s){return function(...n){const o=this.__v_raw,i=se(o),r=Wt(i),a=e==="entries"||e===Symbol.iterator&&r,u=e==="keys"&&r,p=o[e](...n),d=s?Cs:t?Nn:Ee;return!t&&Ie(i,"iterate",u?xs:Dt),{next(){const{value:m,done:v}=p.next();return v?{value:m,done:v}:{value:a?[d(m[0]),d(m[1])]:d(m),done:v}},[Symbol.iterator](){return this}}}}function On(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(e,t){const s={get(o){const i=this.__v_raw,r=se(i),a=se(o);e||(Et(o,a)&&Ie(r,"get",o),Ie(r,"get",a));const{has:u}=Tn(r),p=t?Cs:e?Nn:Ee;if(u.call(r,o))return p(i.get(o));if(u.call(r,a))return p(i.get(a));i!==r&&i.get(o)},get size(){const o=this.__v_raw;return!e&&Ie(se(o),"iterate",Dt),o.size},has(o){const i=this.__v_raw,r=se(i),a=se(o);return e||(Et(o,a)&&Ie(r,"has",o),Ie(r,"has",a)),o===a?i.has(o):i.has(o)||i.has(a)},forEach(o,i){const r=this,a=r.__v_raw,u=se(a),p=t?Cs:e?Nn:Ee;return!e&&Ie(u,"iterate",Dt),a.forEach((d,m)=>o.call(i,p(d),p(m),r))}};return De(s,e?{add:On("add"),set:On("set"),delete:On("delete"),clear:On("clear")}:{add(o){!t&&!Ge(o)&&!Rt(o)&&(o=se(o));const i=se(this);return Tn(i).has.call(i,o)||(i.add(o),dt(i,"add",o,o)),this},set(o,i){!t&&!Ge(i)&&!Rt(i)&&(i=se(i));const r=se(this),{has:a,get:u}=Tn(r);let p=a.call(r,o);p||(o=se(o),p=a.call(r,o));const d=u.call(r,o);return r.set(o,i),p?Et(i,d)&&dt(r,"set",o,i):dt(r,"add",o,i),this},delete(o){const i=se(this),{has:r,get:a}=Tn(i);let u=r.call(i,o);u||(o=se(o),u=r.call(i,o)),a&&a.call(i,o);const p=i.delete(o);return u&&dt(i,"delete",o,void 0),p},clear(){const o=se(this),i=o.size!==0,r=o.clear();return i&&dt(o,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(o=>{s[o]=tl(o,e,t)}),s}function Js(e,t){const s=nl(e,t);return(n,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?n:Reflect.get(ce(s,o)&&o in n?s:n,o,i)}const sl={get:Js(!1,!1)},ol={get:Js(!1,!0)},il={get:Js(!0,!1)};const Ci=new WeakMap,Ei=new WeakMap,Pi=new WeakMap,rl=new WeakMap;function ll(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function al(e){return e.__v_skip||!Object.isExtensible(e)?0:ll(Ir(e))}function Pn(e){return Rt(e)?e:Ys(e,!1,Xr,sl,Ci)}function Ri(e){return Ys(e,!1,el,ol,Ei)}function Ai(e){return Ys(e,!0,$r,il,Pi)}function Ys(e,t,s,n,o){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=al(e);if(i===0)return e;const r=o.get(e);if(r)return r;const a=new Proxy(e,i===2?n:s);return o.set(e,a),a}function Pt(e){return Rt(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Rt(e){return!!(e&&e.__v_isReadonly)}function Ge(e){return!!(e&&e.__v_isShallow)}function Qs(e){return e?!!e.__v_raw:!1}function se(e){const t=e&&e.__v_raw;return t?se(t):e}function Zs(e){return!ce(e,"__v_skip")&&Object.isExtensible(e)&&li(e,"__v_skip",!0),e}const Ee=e=>ge(e)?Pn(e):e,Nn=e=>ge(e)?Ai(e):e;function ye(e){return e?e.__v_isRef===!0:!1}function Y(e){return Ti(e,!1)}function cl(e){return Ti(e,!0)}function Ti(e,t){return ye(e)?e:new ul(e,t)}class ul{constructor(t,s){this.dep=new zs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:se(t),this._value=s?t:Ee(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ge(t)||Rt(t);t=n?t:se(t),Et(t,s)&&(this._rawValue=t,this._value=n?t:Ee(t),this.dep.trigger())}}function Gt(e){return ye(e)?e.value:e}const fl={get:(e,t,s)=>t==="__v_raw"?e:Gt(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const o=e[t];return ye(o)&&!ye(s)?(o.value=s,!0):Reflect.set(e,t,s,n)}};function Oi(e){return Pt(e)?e:new Proxy(e,fl)}function dl(e){const t=K(e)?new Array(e.length):{};for(const s in e)t[s]=pl(e,s);return t}class hl{constructor(t,s,n){this._object=t,this._key=s,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Gr(se(this._object),this._key)}}function pl(e,t,s){const n=e[t];return ye(n)?n:new hl(e,t,s)}class ml{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new zs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=vn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&me!==this)return gi(this,!0),!0}get value(){const t=this.dep.track();return bi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function gl(e,t,s=!1){let n,o;return $(e)?n=e:(n=e.get,o=e.set),new ml(n,o,s)}const Mn={},Hn=new WeakMap;let jt;function vl(e,t=!1,s=jt){if(s){let n=Hn.get(s);n||Hn.set(s,n=[]),n.push(e)}}function _l(e,t,s=de){const{immediate:n,deep:o,once:i,scheduler:r,augmentJob:a,call:u}=s,p=j=>o?j:Ge(j)||o===!1||o===0?ht(j,1):ht(j);let d,m,v,c,C=!1,O=!1;if(ye(e)?(m=()=>e.value,C=Ge(e)):Pt(e)?(m=()=>p(e),C=!0):K(e)?(O=!0,C=e.some(j=>Pt(j)||Ge(j)),m=()=>e.map(j=>{if(ye(j))return j.value;if(Pt(j))return p(j);if($(j))return u?u(j,2):j()})):$(e)?t?m=u?()=>u(e,2):e:m=()=>{if(v){mt();try{v()}finally{gt()}}const j=jt;jt=d;try{return u?u(e,3,[c]):e(c)}finally{jt=j}}:m=it,t&&o){const j=m,P=o===!0?1/0:o;m=()=>ht(j(),P)}const W=hi(),N=()=>{d.stop(),W&&W.active&&Ns(W.effects,d)};if(i&&t){const j=t;t=(...P)=>{j(...P),N()}}let x=O?new Array(e.length).fill(Mn):Mn;const F=j=>{if(!(!(d.flags&1)||!d.dirty&&!j))if(t){const P=d.run();if(o||C||(O?P.some((te,z)=>Et(te,x[z])):Et(P,x))){v&&v();const te=jt;jt=d;try{const z=[P,x===Mn?void 0:O&&x[0]===Mn?[]:x,c];x=P,u?u(t,3,z):t(...z)}finally{jt=te}}}else d.run()};return a&&a(F),d=new pi(m),d.scheduler=r?()=>r(F,!1):F,c=j=>vl(j,!1,d),v=d.onStop=()=>{const j=Hn.get(d);if(j){if(u)u(j,4);else for(const P of j)P();Hn.delete(d)}},t?n?F(!0):x=d.run():r?r(F.bind(null,!0),!0):d.run(),N.pause=d.pause.bind(d),N.resume=d.resume.bind(d),N.stop=N,N}function ht(e,t=1/0,s){if(t<=0||!ge(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,ye(e))ht(e.value,t,s);else if(K(e))for(let n=0;n{ht(n,t,s)});else if(ri(e)){for(const n in e)ht(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ht(e[n],t,s)}return e}/** -* @vue/runtime-core v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Rn(e,t,s,n){try{return n?e(...n):e()}catch(o){$n(o,t,s)}}function lt(e,t,s,n){if($(e)){const o=Rn(e,t,s,n);return o&&oi(o)&&o.catch(i=>{$n(i,t,s)}),o}if(K(e)){const o=[];for(let i=0;i>>1,o=Fe[n],i=bn(o);i=bn(s)?Fe.push(e):Fe.splice(yl(t),0,e),e.flags|=1,Ii()}}function Ii(){qn||(qn=Mi.then(Di))}function wl(e){K(e)?zt.push(...e):wt&&e.id===-1?wt.splice(qt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),Ii()}function co(e,t,s=nt+1){for(;sbn(s)-bn(n));if(zt.length=0,wt){wt.push(...t);return}for(wt=t,qt=0;qte.id==null?e.flags&2?-1:1/0:e.id;function Di(e){try{for(nt=0;nt{n._d&&yo(-1);const i=Un(t);let r;try{r=e(...o)}finally{Un(i),n._d&&yo(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function le(e,t){if(He===null)return e;const s=os(He),n=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,xl=Symbol("_leaveCb");function $s(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$s(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function Fi(e,t){return $(e)?De({name:e.name},t,{setup:e}):e}function Bi(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function cn(e,t,s,n,o=!1){if(K(e)){e.forEach((C,O)=>cn(C,t&&(K(t)?t[O]:t),s,n,o));return}if(un(n)&&!o){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&cn(e,t,s,n.component.subTree);return}const i=n.shapeFlag&4?os(n.component):n.el,r=o?null:i,{i:a,r:u}=e,p=t&&t.r,d=a.refs===de?a.refs={}:a.refs,m=a.setupState,v=se(m),c=m===de?si:C=>ce(v,C);if(p!=null&&p!==u){if(we(p))d[p]=null,c(p)&&(m[p]=null);else if(ye(p)){p.value=null;const C=t;C.k&&(d[C.k]=null)}}if($(u))Rn(u,a,12,[r,d]);else{const C=we(u),O=ye(u);if(C||O){const W=()=>{if(e.f){const N=C?c(u)?m[u]:d[u]:u.value;if(o)K(N)&&Ns(N,i);else if(K(N))N.includes(i)||N.push(i);else if(C)d[u]=[i],c(u)&&(m[u]=d[u]);else{const x=[i];u.value=x,e.k&&(d[e.k]=x)}}else C?(d[u]=r,c(u)&&(m[u]=r)):O&&(u.value=r,e.k&&(d[e.k]=r))};r?(W.id=-1,Ne(W,s)):W()}}}Zn().requestIdleCallback;Zn().cancelIdleCallback;const un=e=>!!e.type.__asyncLoader,Li=e=>e.type.__isKeepAlive;function Cl(e,t){Ni(e,"a",t)}function El(e,t){Ni(e,"da",t)}function Ni(e,t,s=je){const n=e.__wdc||(e.__wdc=()=>{let o=s;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ts(t,n,s),s){let o=s.parent;for(;o&&o.parent;)Li(o.parent.vnode)&&Pl(n,t,s,o),o=o.parent}}function Pl(e,t,s,n){const o=ts(t,e,n,!0);Hi(()=>{Ns(n[t],o)},s)}function ts(e,t,s=je,n=!1){if(s){const o=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...r)=>{mt();const a=An(s),u=lt(t,s,e,r);return a(),gt(),u});return n?o.unshift(i):o.push(i),i}}const vt=e=>(t,s=je)=>{(!wn||e==="sp")&&ts(e,(...n)=>t(...n),s)},Rl=vt("bm"),$t=vt("m"),Al=vt("bu"),Tl=vt("u"),Ol=vt("bum"),Hi=vt("um"),Ml=vt("sp"),Il=vt("rtg"),jl=vt("rtc");function Dl(e,t=je){ts("ec",e,t)}const Vl="components";function Kn(e,t){return Bl(Vl,e,!0,t)||e}const Fl=Symbol.for("v-ndc");function Bl(e,t,s=!0,n=!1){const o=He||je;if(o){const i=o.type;{const a=Ca(i,!1);if(a&&(a===t||a===ze(t)||a===Qn(ze(t))))return i}const r=uo(o[e]||i[e],t)||uo(o.appContext[e],t);return!r&&n?i:r}}function uo(e,t){return e&&(e[t]||e[ze(t)]||e[Qn(ze(t))])}function xt(e,t,s,n){let o;const i=s,r=K(e);if(r||we(e)){const a=r&&Pt(e);let u=!1,p=!1;a&&(u=!Ge(e),p=Rt(e),e=Xn(e)),o=new Array(e.length);for(let d=0,m=e.length;dt(a,u,void 0,i));else{const a=Object.keys(e);o=new Array(a.length);for(let u=0,p=a.length;ue?ar(e)?os(e):Es(e.parent):null,fn=De(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Es(e.parent),$root:e=>Es(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ui(e),$forceUpdate:e=>e.f||(e.f=()=>{Xs(e.update)}),$nextTick:e=>e.n||(e.n=es.bind(e.proxy)),$watch:e=>ra.bind(e)}),ps=(e,t)=>e!==de&&!e.__isScriptSetup&&ce(e,t),Ll={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:o,props:i,accessCache:r,type:a,appContext:u}=e;let p;if(t[0]!=="$"){const c=r[t];if(c!==void 0)switch(c){case 1:return n[t];case 2:return o[t];case 4:return s[t];case 3:return i[t]}else{if(ps(n,t))return r[t]=1,n[t];if(o!==de&&ce(o,t))return r[t]=2,o[t];if((p=e.propsOptions[0])&&ce(p,t))return r[t]=3,i[t];if(s!==de&&ce(s,t))return r[t]=4,s[t];Ps&&(r[t]=0)}}const d=fn[t];let m,v;if(d)return t==="$attrs"&&Ie(e.attrs,"get",""),d(e);if((m=a.__cssModules)&&(m=m[t]))return m;if(s!==de&&ce(s,t))return r[t]=4,s[t];if(v=u.config.globalProperties,ce(v,t))return v[t]},set({_:e},t,s){const{data:n,setupState:o,ctx:i}=e;return ps(o,t)?(o[t]=s,!0):n!==de&&ce(n,t)?(n[t]=s,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:o,propsOptions:i,type:r}},a){let u,p;return!!(s[a]||e!==de&&a[0]!=="$"&&ce(e,a)||ps(t,a)||(u=i[0])&&ce(u,a)||ce(n,a)||ce(fn,a)||ce(o.config.globalProperties,a)||(p=r.__cssModules)&&p[a])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:ce(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function fo(e){return K(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Ps=!0;function Nl(e){const t=Ui(e),s=e.proxy,n=e.ctx;Ps=!1,t.beforeCreate&&ho(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:r,watch:a,provide:u,inject:p,created:d,beforeMount:m,mounted:v,beforeUpdate:c,updated:C,activated:O,deactivated:W,beforeDestroy:N,beforeUnmount:x,destroyed:F,unmounted:j,render:P,renderTracked:te,renderTriggered:z,errorCaptured:Q,serverPrefetch:Z,expose:oe,inheritAttrs:he,components:ie,directives:ve,filters:Je}=t;if(p&&Hl(p,n,null),r)for(const X in r){const ne=r[X];$(ne)&&(n[X]=ne.bind(s))}if(o){const X=o.call(s,s);ge(X)&&(e.data=Pn(X))}if(Ps=!0,i)for(const X in i){const ne=i[X],Qe=$(ne)?ne.bind(s,s):$(ne.get)?ne.get.bind(s,s):it,xe=!$(ne)&&$(ne.set)?ne.set.bind(s):it,Be=ke({get:Qe,set:xe});Object.defineProperty(n,X,{enumerable:!0,configurable:!0,get:()=>Be.value,set:Re=>Be.value=Re})}if(a)for(const X in a)qi(a[X],n,s,X);if(u){const X=$(u)?u.call(s):u;Reflect.ownKeys(X).forEach(ne=>{jn(ne,X[ne])})}d&&ho(d,e,"c");function pe(X,ne){K(ne)?ne.forEach(Qe=>X(Qe.bind(s))):ne&&X(ne.bind(s))}if(pe(Rl,m),pe($t,v),pe(Al,c),pe(Tl,C),pe(Cl,O),pe(El,W),pe(Dl,Q),pe(jl,te),pe(Il,z),pe(Ol,x),pe(Hi,j),pe(Ml,Z),K(oe))if(oe.length){const X=e.exposed||(e.exposed={});oe.forEach(ne=>{Object.defineProperty(X,ne,{get:()=>s[ne],set:Qe=>s[ne]=Qe,enumerable:!0})})}else e.exposed||(e.exposed={});P&&e.render===it&&(e.render=P),he!=null&&(e.inheritAttrs=he),ie&&(e.components=ie),ve&&(e.directives=ve),Z&&Bi(e)}function Hl(e,t,s=it){K(e)&&(e=Rs(e));for(const n in e){const o=e[n];let i;ge(o)?"default"in o?i=Xe(o.from||n,o.default,!0):i=Xe(o.from||n):i=Xe(o),ye(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:r=>i.value=r}):t[n]=i}}function ho(e,t,s){lt(K(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function qi(e,t,s,n){let o=n.includes(".")?nr(s,n):()=>s[n];if(we(e)){const i=t[e];$(i)&&dn(o,i)}else if($(e))dn(o,e.bind(s));else if(ge(e))if(K(e))e.forEach(i=>qi(i,t,s,n));else{const i=$(e.handler)?e.handler.bind(s):t[e.handler];$(i)&&dn(o,i,e)}}function Ui(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:r}}=e.appContext,a=i.get(t);let u;return a?u=a:!o.length&&!s&&!n?u=t:(u={},o.length&&o.forEach(p=>Wn(u,p,r,!0)),Wn(u,t,r)),ge(t)&&i.set(t,u),u}function Wn(e,t,s,n=!1){const{mixins:o,extends:i}=t;i&&Wn(e,i,s,!0),o&&o.forEach(r=>Wn(e,r,s,!0));for(const r in t)if(!(n&&r==="expose")){const a=ql[r]||s&&s[r];e[r]=a?a(e[r],t[r]):t[r]}return e}const ql={data:po,props:mo,emits:mo,methods:on,computed:on,beforeCreate:Ve,created:Ve,beforeMount:Ve,mounted:Ve,beforeUpdate:Ve,updated:Ve,beforeDestroy:Ve,beforeUnmount:Ve,destroyed:Ve,unmounted:Ve,activated:Ve,deactivated:Ve,errorCaptured:Ve,serverPrefetch:Ve,components:on,directives:on,watch:Kl,provide:po,inject:Ul};function po(e,t){return t?e?function(){return De($(e)?e.call(this,this):e,$(t)?t.call(this,this):t)}:t:e}function Ul(e,t){return on(Rs(e),Rs(t))}function Rs(e){if(K(e)){const t={};for(let s=0;s1)return s&&$(t)?t.call(n&&n.proxy):t}}function zl(){return!!(lr()||Vt)}const Wi={},Gi=()=>Object.create(Wi),zi=e=>Object.getPrototypeOf(e)===Wi;function Jl(e,t,s,n=!1){const o={},i=Gi();e.propsDefaults=Object.create(null),Ji(e,t,o,i);for(const r in e.propsOptions[0])r in o||(o[r]=void 0);s?e.props=n?o:Ri(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function Yl(e,t,s,n){const{props:o,attrs:i,vnode:{patchFlag:r}}=e,a=se(o),[u]=e.propsOptions;let p=!1;if((n||r>0)&&!(r&16)){if(r&8){const d=e.vnode.dynamicProps;for(let m=0;m{u=!0;const[v,c]=Yi(m,t,!0);De(r,v),c&&a.push(...c)};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!u)return ge(e)&&n.set(e,Kt),Kt;if(K(i))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",to=e=>K(e)?e.map(st):[st(e)],Zl=(e,t,s)=>{if(t._n)return t;const n=ot((...o)=>to(t(...o)),s);return n._c=!1,n},Qi=(e,t,s)=>{const n=e._ctx;for(const o in e){if(eo(o))continue;const i=e[o];if($(i))t[o]=Zl(o,i,n);else if(i!=null){const r=to(i);t[o]=()=>r}}},Zi=(e,t)=>{const s=to(t);e.slots.default=()=>s},Xi=(e,t,s)=>{for(const n in t)(s||!eo(n))&&(e[n]=t[n])},Xl=(e,t,s)=>{const n=e.slots=Gi();if(e.vnode.shapeFlag&32){const o=t._;o?(Xi(n,t,s),s&&li(n,"_",o,!0)):Qi(t,n)}else t&&Zi(e,t)},$l=(e,t,s)=>{const{vnode:n,slots:o}=e;let i=!0,r=de;if(n.shapeFlag&32){const a=t._;a?s&&a===1?i=!1:Xi(o,t,s):(i=!t.$stable,Qi(t,o)),r=t}else t&&(Zi(e,t),r={default:1});if(i)for(const a in o)!eo(a)&&r[a]==null&&delete o[a]},Ne=ha;function ea(e){return ta(e)}function ta(e,t){const s=Zn();s.__VUE__=!0;const{insert:n,remove:o,patchProp:i,createElement:r,createText:a,createComment:u,setText:p,setElementText:d,parentNode:m,nextSibling:v,setScopeId:c=it,insertStaticContent:C}=e,O=(f,h,g,b=null,S=null,_=null,T=void 0,R=null,E=!!h.dynamicChildren)=>{if(f===h)return;f&&!nn(f,h)&&(b=y(f),Re(f,S,_,!0),f=null),h.patchFlag===-2&&(E=!1,h.dynamicChildren=null);const{type:k,ref:q,shapeFlag:M}=h;switch(k){case ss:W(f,h,g,b);break;case At:N(f,h,g,b);break;case Dn:f==null&&x(h,g,b,T);break;case Pe:ie(f,h,g,b,S,_,T,R,E);break;default:M&1?P(f,h,g,b,S,_,T,R,E):M&6?ve(f,h,g,b,S,_,T,R,E):(M&64||M&128)&&k.process(f,h,g,b,S,_,T,R,E,B)}q!=null&&S?cn(q,f&&f.ref,_,h||f,!h):q==null&&f&&f.ref!=null&&cn(f.ref,null,_,f,!0)},W=(f,h,g,b)=>{if(f==null)n(h.el=a(h.children),g,b);else{const S=h.el=f.el;h.children!==f.children&&p(S,h.children)}},N=(f,h,g,b)=>{f==null?n(h.el=u(h.children||""),g,b):h.el=f.el},x=(f,h,g,b)=>{[f.el,f.anchor]=C(f.children,h,g,b,f.el,f.anchor)},F=({el:f,anchor:h},g,b)=>{let S;for(;f&&f!==h;)S=v(f),n(f,g,b),f=S;n(h,g,b)},j=({el:f,anchor:h})=>{let g;for(;f&&f!==h;)g=v(f),o(f),f=g;o(h)},P=(f,h,g,b,S,_,T,R,E)=>{h.type==="svg"?T="svg":h.type==="math"&&(T="mathml"),f==null?te(h,g,b,S,_,T,R,E):Z(f,h,S,_,T,R,E)},te=(f,h,g,b,S,_,T,R)=>{let E,k;const{props:q,shapeFlag:M,transition:H,dirs:J}=f;if(E=f.el=r(f.type,_,q&&q.is,q),M&8?d(E,f.children):M&16&&Q(f.children,E,null,b,S,ms(f,_),T,R),J&&Mt(f,null,b,"created"),z(E,f,f.scopeId,T,b),q){for(const fe in q)fe!=="value"&&!rn(fe)&&i(E,fe,null,q[fe],_,b);"value"in q&&i(E,"value",null,q.value,_),(k=q.onVnodeBeforeMount)&&tt(k,b,f)}J&&Mt(f,null,b,"beforeMount");const ee=na(S,H);ee&&H.beforeEnter(E),n(E,h,g),((k=q&&q.onVnodeMounted)||ee||J)&&Ne(()=>{k&&tt(k,b,f),ee&&H.enter(E),J&&Mt(f,null,b,"mounted")},S)},z=(f,h,g,b,S)=>{if(g&&c(f,g),b)for(let _=0;_{for(let k=E;k{const R=h.el=f.el;let{patchFlag:E,dynamicChildren:k,dirs:q}=h;E|=f.patchFlag&16;const M=f.props||de,H=h.props||de;let J;if(g&&It(g,!1),(J=H.onVnodeBeforeUpdate)&&tt(J,g,h,f),q&&Mt(h,f,g,"beforeUpdate"),g&&It(g,!0),(M.innerHTML&&H.innerHTML==null||M.textContent&&H.textContent==null)&&d(R,""),k?oe(f.dynamicChildren,k,R,g,b,ms(h,S),_):T||ne(f,h,R,null,g,b,ms(h,S),_,!1),E>0){if(E&16)he(R,M,H,g,S);else if(E&2&&M.class!==H.class&&i(R,"class",null,H.class,S),E&4&&i(R,"style",M.style,H.style,S),E&8){const ee=h.dynamicProps;for(let fe=0;fe{J&&tt(J,g,h,f),q&&Mt(h,f,g,"updated")},b)},oe=(f,h,g,b,S,_,T)=>{for(let R=0;R{if(h!==g){if(h!==de)for(const _ in h)!rn(_)&&!(_ in g)&&i(f,_,h[_],null,S,b);for(const _ in g){if(rn(_))continue;const T=g[_],R=h[_];T!==R&&_!=="value"&&i(f,_,R,T,S,b)}"value"in g&&i(f,"value",h.value,g.value,S)}},ie=(f,h,g,b,S,_,T,R,E)=>{const k=h.el=f?f.el:a(""),q=h.anchor=f?f.anchor:a("");let{patchFlag:M,dynamicChildren:H,slotScopeIds:J}=h;J&&(R=R?R.concat(J):J),f==null?(n(k,g,b),n(q,g,b),Q(h.children||[],g,q,S,_,T,R,E)):M>0&&M&64&&H&&f.dynamicChildren?(oe(f.dynamicChildren,H,g,S,_,T,R),(h.key!=null||S&&h===S.subTree)&&$i(f,h,!0)):ne(f,h,g,q,S,_,T,R,E)},ve=(f,h,g,b,S,_,T,R,E)=>{h.slotScopeIds=R,f==null?h.shapeFlag&512?S.ctx.activate(h,g,b,T,E):Je(h,g,b,S,_,T,E):Ye(f,h,E)},Je=(f,h,g,b,S,_,T)=>{const R=f.component=ya(f,b,S);if(Li(f)&&(R.ctx.renderer=B),wa(R,!1,T),R.asyncDep){if(S&&S.registerDep(R,pe,T),!f.el){const E=R.subTree=be(At);N(null,E,h,g),f.placeholder=E.el}}else pe(R,f,h,g,S,_,T)},Ye=(f,h,g)=>{const b=h.component=f.component;if(fa(f,h,g))if(b.asyncDep&&!b.asyncResolved){X(b,h,g);return}else b.next=h,b.update();else h.el=f.el,b.vnode=h},pe=(f,h,g,b,S,_,T)=>{const R=()=>{if(f.isMounted){let{next:M,bu:H,u:J,parent:ee,vnode:fe}=f;{const Ke=er(f);if(Ke){M&&(M.el=fe.el,X(f,M,T)),Ke.asyncDep.then(()=>{f.isUnmounted||R()});return}}let re=M,Ae;It(f,!1),M?(M.el=fe.el,X(f,M,T)):M=fe,H&&In(H),(Ae=M.props&&M.props.onVnodeBeforeUpdate)&&tt(Ae,ee,M,fe),It(f,!0);const Te=_o(f),Ue=f.subTree;f.subTree=Te,O(Ue,Te,m(Ue.el),y(Ue),f,S,_),M.el=Te.el,re===null&&da(f,Te.el),J&&Ne(J,S),(Ae=M.props&&M.props.onVnodeUpdated)&&Ne(()=>tt(Ae,ee,M,fe),S)}else{let M;const{el:H,props:J}=h,{bm:ee,m:fe,parent:re,root:Ae,type:Te}=f,Ue=un(h);It(f,!1),ee&&In(ee),!Ue&&(M=J&&J.onVnodeBeforeMount)&&tt(M,re,h),It(f,!0);{Ae.ce&&Ae.ce._def.shadowRoot!==!1&&Ae.ce._injectChildStyle(Te);const Ke=f.subTree=_o(f);O(null,Ke,g,b,f,S,_),h.el=Ke.el}if(fe&&Ne(fe,S),!Ue&&(M=J&&J.onVnodeMounted)){const Ke=h;Ne(()=>tt(M,re,Ke),S)}(h.shapeFlag&256||re&&un(re.vnode)&&re.vnode.shapeFlag&256)&&f.a&&Ne(f.a,S),f.isMounted=!0,h=g=b=null}};f.scope.on();const E=f.effect=new pi(R);f.scope.off();const k=f.update=E.run.bind(E),q=f.job=E.runIfDirty.bind(E);q.i=f,q.id=f.uid,E.scheduler=()=>Xs(q),It(f,!0),k()},X=(f,h,g)=>{h.component=f;const b=f.vnode.props;f.vnode=h,f.next=null,Yl(f,h.props,b,g),$l(f,h.children,g),mt(),co(f),gt()},ne=(f,h,g,b,S,_,T,R,E=!1)=>{const k=f&&f.children,q=f?f.shapeFlag:0,M=h.children,{patchFlag:H,shapeFlag:J}=h;if(H>0){if(H&128){xe(k,M,g,b,S,_,T,R,E);return}else if(H&256){Qe(k,M,g,b,S,_,T,R,E);return}}J&8?(q&16&&Le(k,S,_),M!==k&&d(g,M)):q&16?J&16?xe(k,M,g,b,S,_,T,R,E):Le(k,S,_,!0):(q&8&&d(g,""),J&16&&Q(M,g,b,S,_,T,R,E))},Qe=(f,h,g,b,S,_,T,R,E)=>{f=f||Kt,h=h||Kt;const k=f.length,q=h.length,M=Math.min(k,q);let H;for(H=0;Hq?Le(f,S,_,!0,!1,M):Q(h,g,b,S,_,T,R,E,M)},xe=(f,h,g,b,S,_,T,R,E)=>{let k=0;const q=h.length;let M=f.length-1,H=q-1;for(;k<=M&&k<=H;){const J=f[k],ee=h[k]=E?St(h[k]):st(h[k]);if(nn(J,ee))O(J,ee,g,null,S,_,T,R,E);else break;k++}for(;k<=M&&k<=H;){const J=f[M],ee=h[H]=E?St(h[H]):st(h[H]);if(nn(J,ee))O(J,ee,g,null,S,_,T,R,E);else break;M--,H--}if(k>M){if(k<=H){const J=H+1,ee=JH)for(;k<=M;)Re(f[k],S,_,!0),k++;else{const J=k,ee=k,fe=new Map;for(k=ee;k<=H;k++){const V=h[k]=E?St(h[k]):st(h[k]);V.key!=null&&fe.set(V.key,k)}let re,Ae=0;const Te=H-ee+1;let Ue=!1,Ke=0;const Tt=new Array(Te);for(k=0;k=Te){Re(V,S,_,!0);continue}let L;if(V.key!=null)L=fe.get(V.key);else for(re=ee;re<=H;re++)if(Tt[re-ee]===0&&nn(V,h[re])){L=re;break}L===void 0?Re(V,S,_,!0):(Tt[L-ee]=k+1,L>=Ke?Ke=L:Ue=!0,O(V,h[L],g,null,S,_,T,R,E),Ae++)}const w=Ue?sa(Tt):Kt;for(re=w.length-1,k=Te-1;k>=0;k--){const V=ee+k,L=h[V],Ce=h[V+1],Ot=V+1{const{el:_,type:T,transition:R,children:E,shapeFlag:k}=f;if(k&6){Be(f.component.subTree,h,g,b);return}if(k&128){f.suspense.move(h,g,b);return}if(k&64){T.move(f,h,g,B);return}if(T===Pe){n(_,h,g);for(let M=0;MR.enter(_),S);else{const{leave:M,delayLeave:H,afterLeave:J}=R,ee=()=>{f.ctx.isUnmounted?o(_):n(_,h,g)},fe=()=>{_._isLeaving&&_[xl](!0),M(_,()=>{ee(),J&&J()})};H?H(_,ee,fe):fe()}else n(_,h,g)},Re=(f,h,g,b=!1,S=!1)=>{const{type:_,props:T,ref:R,children:E,dynamicChildren:k,shapeFlag:q,patchFlag:M,dirs:H,cacheIndex:J}=f;if(M===-2&&(S=!1),R!=null&&(mt(),cn(R,null,g,f,!0),gt()),J!=null&&(h.renderCache[J]=void 0),q&256){h.ctx.deactivate(f);return}const ee=q&1&&H,fe=!un(f);let re;if(fe&&(re=T&&T.onVnodeBeforeUnmount)&&tt(re,h,f),q&6)Bt(f.component,g,b);else{if(q&128){f.suspense.unmount(g,b);return}ee&&Mt(f,null,h,"beforeUnmount"),q&64?f.type.remove(f,h,g,B,b):k&&!k.hasOnce&&(_!==Pe||M>0&&M&64)?Le(k,h,g,!1,!0):(_===Pe&&M&384||!S&&q&16)&&Le(E,h,g),b&&et(f)}(fe&&(re=T&&T.onVnodeUnmounted)||ee)&&Ne(()=>{re&&tt(re,h,f),ee&&Mt(f,null,h,"unmounted")},g)},et=f=>{const{type:h,el:g,anchor:b,transition:S}=f;if(h===Pe){_t(g,b);return}if(h===Dn){j(f);return}const _=()=>{o(g),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(f.shapeFlag&1&&S&&!S.persisted){const{leave:T,delayLeave:R}=S,E=()=>T(g,_);R?R(f.el,_,E):E()}else _()},_t=(f,h)=>{let g;for(;f!==h;)g=v(f),o(f),f=g;o(h)},Bt=(f,h,g)=>{const{bum:b,scope:S,job:_,subTree:T,um:R,m:E,a:k}=f;vo(E),vo(k),b&&In(b),S.stop(),_&&(_.flags|=8,Re(T,f,h,g)),R&&Ne(R,h),Ne(()=>{f.isUnmounted=!0},h)},Le=(f,h,g,b=!1,S=!1,_=0)=>{for(let T=_;T{if(f.shapeFlag&6)return y(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const h=v(f.anchor||f.el),g=h&&h[Sl];return g?v(g):h};let I=!1;const A=(f,h,g)=>{f==null?h._vnode&&Re(h._vnode,null,null,!0):O(h._vnode||null,f,h,null,null,null,g),h._vnode=f,I||(I=!0,co(),ji(),I=!1)},B={p:O,um:Re,m:Be,r:et,mt:Je,mc:Q,pc:ne,pbc:oe,n:y,o:e};return{render:A,hydrate:void 0,createApp:Gl(A)}}function ms({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function It({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function na(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function $i(e,t,s=!1){const n=e.children,o=t.children;if(K(n)&&K(o))for(let i=0;i>1,e[s[a]]0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,r=s[i-1];i-- >0;)s[i]=r,r=t[r];return s}function er(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:er(t)}function vo(e){if(e)for(let t=0;tXe(oa);function dn(e,t,s){return tr(e,t,s)}function tr(e,t,s=de){const{immediate:n,deep:o,flush:i,once:r}=s,a=De({},s),u=t&&n||!t&&i!=="post";let p;if(wn){if(i==="sync"){const c=ia();p=c.__watcherHandles||(c.__watcherHandles=[])}else if(!u){const c=()=>{};return c.stop=it,c.resume=it,c.pause=it,c}}const d=je;a.call=(c,C,O)=>lt(c,d,C,O);let m=!1;i==="post"?a.scheduler=c=>{Ne(c,d&&d.suspense)}:i!=="sync"&&(m=!0,a.scheduler=(c,C)=>{C?c():Xs(c)}),a.augmentJob=c=>{t&&(c.flags|=4),m&&(c.flags|=2,d&&(c.id=d.uid,c.i=d))};const v=_l(e,t,a);return wn&&(p?p.push(v):u&&v()),v}function ra(e,t,s){const n=this.proxy,o=we(e)?e.includes(".")?nr(n,e):()=>n[e]:e.bind(n,n);let i;$(t)?i=t:(i=t.handler,s=t);const r=An(this),a=tr(o,i.bind(n),s);return r(),a}function nr(e,t){const s=t.split(".");return()=>{let n=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ze(t)}Modifiers`]||e[`${Ft(t)}Modifiers`];function aa(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||de;let o=s;const i=t.startsWith("update:"),r=i&&la(n,t.slice(7));r&&(r.trim&&(o=s.map(d=>we(d)?d.trim():d)),r.number&&(o=s.map(Bn)));let a,u=n[a=cs(t)]||n[a=cs(ze(t))];!u&&i&&(u=n[a=cs(Ft(t))]),u&<(u,e,6,o);const p=n[a+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,lt(p,e,6,o)}}function sr(e,t,s=!1){const n=t.emitsCache,o=n.get(e);if(o!==void 0)return o;const i=e.emits;let r={},a=!1;if(!$(e)){const u=p=>{const d=sr(p,t,!0);d&&(a=!0,De(r,d))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!a?(ge(e)&&n.set(e,null),null):(K(i)?i.forEach(u=>r[u]=null):De(r,i),ge(e)&&n.set(e,r),r)}function ns(e,t){return!e||!Jn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Ft(t))||ce(e,t))}function _o(e){const{type:t,vnode:s,proxy:n,withProxy:o,propsOptions:[i],slots:r,attrs:a,emit:u,render:p,renderCache:d,props:m,data:v,setupState:c,ctx:C,inheritAttrs:O}=e,W=Un(e);let N,x;try{if(s.shapeFlag&4){const j=o||n,P=j;N=st(p.call(P,j,d,m,c,v,C)),x=a}else{const j=t;N=st(j.length>1?j(m,{attrs:a,slots:r,emit:u}):j(m,null)),x=t.props?a:ca(a)}}catch(j){hn.length=0,$n(j,e,1),N=be(At)}let F=N;if(x&&O!==!1){const j=Object.keys(x),{shapeFlag:P}=F;j.length&&P&7&&(i&&j.some(Ls)&&(x=ua(x,i)),F=Jt(F,x,!1,!0))}return s.dirs&&(F=Jt(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(s.dirs):s.dirs),s.transition&&$s(F,s.transition),N=F,Un(W),N}const ca=e=>{let t;for(const s in e)(s==="class"||s==="style"||Jn(s))&&((t||(t={}))[s]=e[s]);return t},ua=(e,t)=>{const s={};for(const n in e)(!Ls(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function fa(e,t,s){const{props:n,children:o,component:i}=e,{props:r,children:a,patchFlag:u}=t,p=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?bo(n,r,p):!!r;if(u&8){const d=t.dynamicProps;for(let m=0;me.__isSuspense;function ha(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):wl(e)}const Pe=Symbol.for("v-fgt"),ss=Symbol.for("v-txt"),At=Symbol.for("v-cmt"),Dn=Symbol.for("v-stc"),hn=[];let qe=null;function U(e=!1){hn.push(qe=e?null:[])}function pa(){hn.pop(),qe=hn[hn.length-1]||null}let yn=1;function yo(e,t=!1){yn+=e,e<0&&qe&&t&&(qe.hasOnce=!0)}function ir(e){return e.dynamicChildren=yn>0?qe||Kt:null,pa(),yn>0&&qe&&qe.push(e),e}function G(e,t,s,n,o,i){return ir(l(e,t,s,n,o,i,!0))}function Ts(e,t,s,n,o){return ir(be(e,t,s,n,o,!0))}function Gn(e){return e?e.__v_isVNode===!0:!1}function nn(e,t){return e.type===t.type&&e.key===t.key}const rr=({key:e})=>e??null,Vn=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?we(e)||ye(e)||$(e)?{i:He,r:e,k:t,f:!!s}:e:null);function l(e,t=null,s=null,n=0,o=null,i=e===Pe?0:1,r=!1,a=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rr(t),ref:t&&Vn(t),scopeId:Vi,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:He};return a?(no(u,s),i&128&&e.normalize(u)):s&&(u.shapeFlag|=we(s)?8:16),yn>0&&!r&&qe&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&qe.push(u),u}const be=ma;function ma(e,t=null,s=null,n=0,o=null,i=!1){if((!e||e===Fl)&&(e=At),Gn(e)){const a=Jt(e,t,!0);return s&&no(a,s),yn>0&&!i&&qe&&(a.shapeFlag&6?qe[qe.indexOf(e)]=a:qe.push(a)),a.patchFlag=-2,a}if(Ea(e)&&(e=e.__vccOpts),t){t=ga(t);let{class:a,style:u}=t;a&&!we(a)&&(t.class=We(a)),ge(u)&&(Qs(u)&&!K(u)&&(u=De({},u)),t.style=qs(u))}const r=we(e)?1:or(e)?128:kl(e)?64:ge(e)?4:$(e)?2:0;return l(e,t,s,n,o,r,i,!0)}function ga(e){return e?Qs(e)||zi(e)?De({},e):e:null}function Jt(e,t,s=!1,n=!1){const{props:o,ref:i,patchFlag:r,children:a,transition:u}=e,p=t?va(o||{},t):o,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&rr(p),ref:t&&t.ref?s&&i?K(i)?i.concat(Vn(t)):[i,Vn(t)]:Vn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?r===-1?16:r|16:r,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Jt(e.ssContent),ssFallback:e.ssFallback&&Jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&n&&$s(d,u.clone(d)),d}function Se(e=" ",t=0){return be(ss,null,e,t)}function gs(e,t){const s=be(Dn,null,e);return s.staticCount=t,s}function Oe(e="",t=!1){return t?(U(),Ts(At,null,e)):be(At,null,e)}function st(e){return e==null||typeof e=="boolean"?be(At):K(e)?be(Pe,null,e.slice()):Gn(e)?St(e):be(ss,null,String(e))}function St(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Jt(e)}function no(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(K(t))s=16;else if(typeof t=="object")if(n&65){const o=t.default;o&&(o._c&&(o._d=!1),no(e,o()),o._c&&(o._d=!0));return}else{s=32;const o=t._;!o&&!zi(t)?t._ctx=He:o===3&&He&&(He.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else $(t)?(t={default:t,_ctx:He},s=32):(t=String(t),n&64?(s=16,t=[Se(t)]):s=8);e.children=t,e.shapeFlag|=s}function va(...e){const t={};for(let s=0;sje||He;let zn,Os;{const e=Zn(),t=(s,n)=>{let o;return(o=e[s])||(o=e[s]=[]),o.push(n),i=>{o.length>1?o.forEach(r=>r(i)):o[0](i)}};zn=t("__VUE_INSTANCE_SETTERS__",s=>je=s),Os=t("__VUE_SSR_SETTERS__",s=>wn=s)}const An=e=>{const t=je;return zn(e),e.scope.on(),()=>{e.scope.off(),zn(t)}},wo=()=>{je&&je.scope.off(),zn(null)};function ar(e){return e.vnode.shapeFlag&4}let wn=!1;function wa(e,t=!1,s=!1){t&&Os(t);const{props:n,children:o}=e.vnode,i=ar(e);Jl(e,n,i,t),Xl(e,o,s||t);const r=i?Sa(e,t):void 0;return t&&Os(!1),r}function Sa(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ll);const{setup:n}=s;if(n){mt();const o=e.setupContext=n.length>1?xa(e):null,i=An(e),r=Rn(n,e,0,[e.props,o]),a=oi(r);if(gt(),i(),(a||e.sp)&&!un(e)&&Bi(e),a){if(r.then(wo,wo),t)return r.then(u=>{So(e,u)}).catch(u=>{$n(u,e,0)});e.asyncDep=r}else So(e,r)}else cr(e)}function So(e,t,s){$(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=Oi(t)),cr(e)}function cr(e,t,s){const n=e.type;e.render||(e.render=n.render||it);{const o=An(e);mt();try{Nl(e)}finally{gt(),o()}}}const ka={get(e,t){return Ie(e,"get",""),e[t]}};function xa(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,ka),slots:e.slots,emit:e.emit,expose:t}}function os(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Oi(Zs(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in fn)return fn[s](e)},has(t,s){return s in t||s in fn}})):e.proxy}function Ca(e,t=!0){return $(e)?e.displayName||e.name:e.name||t&&e.__name}function Ea(e){return $(e)&&"__vccOpts"in e}const ke=(e,t)=>gl(e,t,wn);function ur(e,t,s){const n=arguments.length;return n===2?ge(t)&&!K(t)?Gn(t)?be(e,null,[t]):be(e,t):be(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&Gn(s)&&(s=[s]),be(e,t,s))}const Pa="3.5.20";/** -* @vue/runtime-dom v3.5.20 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ms;const ko=typeof window<"u"&&window.trustedTypes;if(ko)try{Ms=ko.createPolicy("vue",{createHTML:e=>e})}catch{}const fr=Ms?e=>Ms.createHTML(e):e=>e,Ra="http://www.w3.org/2000/svg",Aa="http://www.w3.org/1998/Math/MathML",ut=typeof document<"u"?document:null,xo=ut&&ut.createElement("template"),Ta={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const o=t==="svg"?ut.createElementNS(Ra,e):t==="mathml"?ut.createElementNS(Aa,e):s?ut.createElement(e,{is:s}):ut.createElement(e);return e==="select"&&n&&n.multiple!=null&&o.setAttribute("multiple",n.multiple),o},createText:e=>ut.createTextNode(e),createComment:e=>ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,o,i){const r=s?s.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),s),!(o===i||!(o=o.nextSibling)););else{xo.innerHTML=fr(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const a=xo.content;if(n==="svg"||n==="mathml"){const u=a.firstChild;for(;u.firstChild;)a.appendChild(u.firstChild);a.removeChild(u)}t.insertBefore(a,s)}return[r?r.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Oa=Symbol("_vtc");function Ma(e,t,s){const n=e[Oa];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Co=Symbol("_vod"),Ia=Symbol("_vsh"),ja=Symbol(""),Da=/(^|;)\s*display\s*:/;function Va(e,t,s){const n=e.style,o=we(s);let i=!1;if(s&&!o){if(t)if(we(t))for(const r of t.split(";")){const a=r.slice(0,r.indexOf(":")).trim();s[a]==null&&Fn(n,a,"")}else for(const r in t)s[r]==null&&Fn(n,r,"");for(const r in s)r==="display"&&(i=!0),Fn(n,r,s[r])}else if(o){if(t!==s){const r=n[ja];r&&(s+=";"+r),n.cssText=s,i=Da.test(s)}}else t&&e.removeAttribute("style");Co in e&&(e[Co]=i?n.display:"",e[Ia]&&(n.display="none"))}const Eo=/\s*!important$/;function Fn(e,t,s){if(K(s))s.forEach(n=>Fn(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Fa(e,t);Eo.test(s)?e.setProperty(Ft(n),s.replace(Eo,""),"important"):e[n]=s}}const Po=["Webkit","Moz","ms"],vs={};function Fa(e,t){const s=vs[t];if(s)return s;let n=ze(t);if(n!=="filter"&&n in e)return vs[t]=n;n=Qn(n);for(let o=0;o_s||(Ha.then(()=>_s=0),_s=Date.now());function Ua(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;lt(Ka(n,s.value),t,5,[n])};return s.value=e,s.attached=qa(),s}function Ka(e,t){if(K(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>o=>!o._stopped&&n&&n(o))}else return t}const Io=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Wa=(e,t,s,n,o,i)=>{const r=o==="svg";t==="class"?Ma(e,n,r):t==="style"?Va(e,s,n):Jn(t)?Ls(t)||La(e,t,s,n,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ga(e,t,n,r))?(To(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ao(e,t,n,r,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!we(n))?To(e,ze(t),n,i,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Ao(e,t,n,r))};function Ga(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Io(t)&&$(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Io(t)&&we(s)?!1:t in e}const Yt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?s=>In(t,s):t};function za(e){e.target.composing=!0}function jo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const pt=Symbol("_assign"),_e={created(e,{modifiers:{lazy:t,trim:s,number:n}},o){e[pt]=Yt(o);const i=n||o.props&&o.props.type==="number";Ct(e,t?"change":"input",r=>{if(r.target.composing)return;let a=e.value;s&&(a=a.trim()),i&&(a=Bn(a)),e[pt](a)}),s&&Ct(e,"change",()=>{e.value=e.value.trim()}),t||(Ct(e,"compositionstart",za),Ct(e,"compositionend",jo),Ct(e,"change",jo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:o,number:i}},r){if(e[pt]=Yt(r),e.composing)return;const a=(i||e.type==="number")&&!/^0\d/.test(e.value)?Bn(e.value):e.value,u=t??"";a!==u&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||o&&e.value.trim()===u)||(e.value=u))}},Nt={deep:!0,created(e,t,s){e[pt]=Yt(s),Ct(e,"change",()=>{const n=e._modelValue,o=Sn(e),i=e.checked,r=e[pt];if(K(n)){const a=Us(n,o),u=a!==-1;if(i&&!u)r(n.concat(o));else if(!i&&u){const p=[...n];p.splice(a,1),r(p)}}else if(Xt(n)){const a=new Set(n);i?a.add(o):a.delete(o),r(a)}else r(dr(e,i))})},mounted:Do,beforeUpdate(e,t,s){e[pt]=Yt(s),Do(e,t,s)}};function Do(e,{value:t,oldValue:s},n){e._modelValue=t;let o;if(K(t))o=Us(t,n.props.value)>-1;else if(Xt(t))o=t.has(n.props.value);else{if(t===s)return;o=En(t,dr(e,!0))}e.checked!==o&&(e.checked=o)}const Ja={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const o=Xt(t);Ct(e,"change",()=>{const i=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>s?Bn(Sn(r)):Sn(r));e[pt](e.multiple?o?new Set(i):i:i[0]),e._assigning=!0,es(()=>{e._assigning=!1})}),e[pt]=Yt(n)},mounted(e,{value:t}){Vo(e,t)},beforeUpdate(e,t,s){e[pt]=Yt(s)},updated(e,{value:t}){e._assigning||Vo(e,t)}};function Vo(e,t){const s=e.multiple,n=K(t);if(!(s&&!n&&!Xt(t))){for(let o=0,i=e.options.length;oString(p)===String(a)):r.selected=Us(t,a)>-1}else r.selected=t.has(a);else if(En(Sn(r),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Sn(e){return"_value"in e?e._value:e.value}function dr(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const Ya=["ctrl","shift","alt","meta"],Qa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ya.some(s=>e[`${s}Key`]&&!t.includes(s))},ft=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(o,...i)=>{for(let r=0;r{const t=Xa().createApp(...e),{mount:s}=t;return t.mount=n=>{const o=tc(n);if(!o)return;const i=t._component;!$(i)&&!i.render&&!i.template&&(i.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const r=s(o,!1,ec(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),r},t};function ec(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function tc(e){return we(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let hr;const is=e=>hr=e,pr=Symbol();function Is(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(pn||(pn={}));function nc(){const e=di(!0),t=e.run(()=>Y({}));let s=[],n=[];const o=Zs({install(i){is(o),o._a=i,i.provide(pr,o),i.config.globalProperties.$pinia=o,n.forEach(r=>s.push(r)),n=[]},use(i){return this._a?s.push(i):n.push(i),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return o}const mr=()=>{};function Bo(e,t,s,n=mr){e.push(t);const o=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),n())};return!s&&hi()&&Ur(o),o}function Ht(e,...t){e.slice().forEach(s=>{s(...t)})}const sc=e=>e(),Lo=Symbol(),bs=Symbol();function js(e,t){e instanceof Map&&t instanceof Map?t.forEach((s,n)=>e.set(n,s)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const s in t){if(!t.hasOwnProperty(s))continue;const n=t[s],o=e[s];Is(o)&&Is(n)&&e.hasOwnProperty(s)&&!ye(n)&&!Pt(n)?e[s]=js(o,n):e[s]=n}return e}const oc=Symbol();function ic(e){return!Is(e)||!e.hasOwnProperty(oc)}const{assign:yt}=Object;function rc(e){return!!(ye(e)&&e.effect)}function lc(e,t,s,n){const{state:o,actions:i,getters:r}=t,a=s.state.value[e];let u;function p(){a||(s.state.value[e]=o?o():{});const d=dl(s.state.value[e]);return yt(d,i,Object.keys(r||{}).reduce((m,v)=>(m[v]=Zs(ke(()=>{is(s);const c=s._s.get(e);return r[v].call(c,c)})),m),{}))}return u=gr(e,p,t,s,n,!0),u}function gr(e,t,s={},n,o,i){let r;const a=yt({actions:{}},s),u={deep:!0};let p,d,m=[],v=[],c;const C=n.state.value[e];!i&&!C&&(n.state.value[e]={}),Y({});let O;function W(Q){let Z;p=d=!1,typeof Q=="function"?(Q(n.state.value[e]),Z={type:pn.patchFunction,storeId:e,events:c}):(js(n.state.value[e],Q),Z={type:pn.patchObject,payload:Q,storeId:e,events:c});const oe=O=Symbol();es().then(()=>{O===oe&&(p=!0)}),d=!0,Ht(m,Z,n.state.value[e])}const N=i?function(){const{state:Z}=s,oe=Z?Z():{};this.$patch(he=>{yt(he,oe)})}:mr;function x(){r.stop(),m=[],v=[],n._s.delete(e)}const F=(Q,Z="")=>{if(Lo in Q)return Q[bs]=Z,Q;const oe=function(){is(n);const he=Array.from(arguments),ie=[],ve=[];function Je(X){ie.push(X)}function Ye(X){ve.push(X)}Ht(v,{args:he,name:oe[bs],store:P,after:Je,onError:Ye});let pe;try{pe=Q.apply(this&&this.$id===e?this:P,he)}catch(X){throw Ht(ve,X),X}return pe instanceof Promise?pe.then(X=>(Ht(ie,X),X)).catch(X=>(Ht(ve,X),Promise.reject(X))):(Ht(ie,pe),pe)};return oe[Lo]=!0,oe[bs]=Z,oe},j={_p:n,$id:e,$onAction:Bo.bind(null,v),$patch:W,$reset:N,$subscribe(Q,Z={}){const oe=Bo(m,Q,Z.detached,()=>he()),he=r.run(()=>dn(()=>n.state.value[e],ie=>{(Z.flush==="sync"?d:p)&&Q({storeId:e,type:pn.direct,events:c},ie)},yt({},u,Z)));return oe},$dispose:x},P=Pn(j);n._s.set(e,P);const z=(n._a&&n._a.runWithContext||sc)(()=>n._e.run(()=>(r=di()).run(()=>t({action:F}))));for(const Q in z){const Z=z[Q];if(ye(Z)&&!rc(Z)||Pt(Z))i||(C&&ic(Z)&&(ye(Z)?Z.value=C[Q]:js(Z,C[Q])),n.state.value[e][Q]=Z);else if(typeof Z=="function"){const oe=F(Z,Q);z[Q]=oe,a.actions[Q]=Z}}return yt(P,z),yt(se(P),z),Object.defineProperty(P,"$state",{get:()=>n.state.value[e],set:Q=>{W(Z=>{yt(Z,Q)})}}),n._p.forEach(Q=>{yt(P,r.run(()=>Q({store:P,app:n._a,pinia:n,options:a})))}),C&&i&&s.hydrate&&s.hydrate(P.$state,C),p=!0,d=!0,P}/*! #__NO_SIDE_EFFECTS__ */function ac(e,t,s){let n,o;const i=typeof t=="function";n=e,o=i?s:t;function r(a,u){const p=zl();return a=a||(p?Xe(pr,null):null),a&&is(a),a=hr,a._s.has(n)||(i?gr(n,t,o,a):lc(n,o,a)),a._s.get(n)}return r.$id=n,r}/*! - * vue-router v4.5.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Ut=typeof document<"u";function vr(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function cc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&vr(e.default)}const ae=Object.assign;function ys(e,t){const s={};for(const n in t){const o=t[n];s[n]=$e(o)?o.map(e):e(o)}return s}const mn=()=>{},$e=Array.isArray,_r=/#/g,uc=/&/g,fc=/\//g,dc=/=/g,hc=/\?/g,br=/\+/g,pc=/%5B/g,mc=/%5D/g,yr=/%5E/g,gc=/%60/g,wr=/%7B/g,vc=/%7C/g,Sr=/%7D/g,_c=/%20/g;function so(e){return encodeURI(""+e).replace(vc,"|").replace(pc,"[").replace(mc,"]")}function bc(e){return so(e).replace(wr,"{").replace(Sr,"}").replace(yr,"^")}function Ds(e){return so(e).replace(br,"%2B").replace(_c,"+").replace(_r,"%23").replace(uc,"%26").replace(gc,"`").replace(wr,"{").replace(Sr,"}").replace(yr,"^")}function yc(e){return Ds(e).replace(dc,"%3D")}function wc(e){return so(e).replace(_r,"%23").replace(hc,"%3F")}function Sc(e){return e==null?"":wc(e).replace(fc,"%2F")}function kn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const kc=/\/$/,xc=e=>e.replace(kc,"");function ws(e,t,s="/"){let n,o={},i="",r="";const a=t.indexOf("#");let u=t.indexOf("?");return a=0&&(u=-1),u>-1&&(n=t.slice(0,u),i=t.slice(u+1,a>-1?a:t.length),o=e(i)),a>-1&&(n=n||t.slice(0,a),r=t.slice(a,t.length)),n=Rc(n??t,s),{fullPath:n+(i&&"?")+i+r,path:n,query:o,hash:kn(r)}}function Cc(e,t){const s=t.query?e(t.query):"";return t.path+(s&&"?")+s+(t.hash||"")}function No(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Ec(e,t,s){const n=t.matched.length-1,o=s.matched.length-1;return n>-1&&n===o&&Qt(t.matched[n],s.matched[o])&&kr(t.params,s.params)&&e(t.query)===e(s.query)&&t.hash===s.hash}function Qt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function kr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(!Pc(e[s],t[s]))return!1;return!0}function Pc(e,t){return $e(e)?Ho(e,t):$e(t)?Ho(t,e):e===t}function Ho(e,t){return $e(t)?e.length===t.length&&e.every((s,n)=>s===t[n]):e.length===1&&e[0]===t}function Rc(e,t){if(e.startsWith("/"))return e;if(!e)return t;const s=t.split("/"),n=e.split("/"),o=n[n.length-1];(o===".."||o===".")&&n.push("");let i=s.length-1,r,a;for(r=0;r1&&i--;else break;return s.slice(0,i).join("/")+"/"+n.slice(r).join("/")}const bt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var xn;(function(e){e.pop="pop",e.push="push"})(xn||(xn={}));var gn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(gn||(gn={}));function Ac(e){if(!e)if(Ut){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xc(e)}const Tc=/^[^#]+#/;function Oc(e,t){return e.replace(Tc,"#")+t}function Mc(e,t){const s=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-s.left-(t.left||0),top:n.top-s.top-(t.top||0)}}const rs=()=>({left:window.scrollX,top:window.scrollY});function Ic(e){let t;if("el"in e){const s=e.el,n=typeof s=="string"&&s.startsWith("#"),o=typeof s=="string"?n?document.getElementById(s.slice(1)):document.querySelector(s):s;if(!o)return;t=Mc(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function qo(e,t){return(history.state?history.state.position-t:-1)+e}const Vs=new Map;function jc(e,t){Vs.set(e,t)}function Dc(e){const t=Vs.get(e);return Vs.delete(e),t}let Vc=()=>location.protocol+"//"+location.host;function xr(e,t){const{pathname:s,search:n,hash:o}=t,i=e.indexOf("#");if(i>-1){let a=o.includes(e.slice(i))?e.slice(i).length:1,u=o.slice(a);return u[0]!=="/"&&(u="/"+u),No(u,"")}return No(s,e)+n+o}function Fc(e,t,s,n){let o=[],i=[],r=null;const a=({state:v})=>{const c=xr(e,location),C=s.value,O=t.value;let W=0;if(v){if(s.value=c,t.value=v,r&&r===C){r=null;return}W=O?v.position-O.position:0}else n(c);o.forEach(N=>{N(s.value,C,{delta:W,type:xn.pop,direction:W?W>0?gn.forward:gn.back:gn.unknown})})};function u(){r=s.value}function p(v){o.push(v);const c=()=>{const C=o.indexOf(v);C>-1&&o.splice(C,1)};return i.push(c),c}function d(){const{history:v}=window;v.state&&v.replaceState(ae({},v.state,{scroll:rs()}),"")}function m(){for(const v of i)v();i=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:u,listen:p,destroy:m}}function Uo(e,t,s,n=!1,o=!1){return{back:e,current:t,forward:s,replaced:n,position:window.history.length,scroll:o?rs():null}}function Bc(e){const{history:t,location:s}=window,n={value:xr(e,s)},o={value:t.state};o.value||i(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(u,p,d){const m=e.indexOf("#"),v=m>-1?(s.host&&document.querySelector("base")?e:e.slice(m))+u:Vc()+e+u;try{t[d?"replaceState":"pushState"](p,"",v),o.value=p}catch(c){console.error(c),s[d?"replace":"assign"](v)}}function r(u,p){const d=ae({},t.state,Uo(o.value.back,u,o.value.forward,!0),p,{position:o.value.position});i(u,d,!0),n.value=u}function a(u,p){const d=ae({},o.value,t.state,{forward:u,scroll:rs()});i(d.current,d,!0);const m=ae({},Uo(n.value,u,null),{position:d.position+1},p);i(u,m,!1),n.value=u}return{location:n,state:o,push:a,replace:r}}function Lc(e){e=Ac(e);const t=Bc(e),s=Fc(e,t.state,t.location,t.replace);function n(i,r=!0){r||s.pauseListeners(),history.go(i)}const o=ae({location:"",base:e,go:n,createHref:Oc.bind(null,e)},t,s);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Nc(e){return typeof e=="string"||e&&typeof e=="object"}function Cr(e){return typeof e=="string"||typeof e=="symbol"}const Er=Symbol("");var Ko;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ko||(Ko={}));function Zt(e,t){return ae(new Error,{type:e,[Er]:!0},t)}function ct(e,t){return e instanceof Error&&Er in e&&(t==null||!!(e.type&t))}const Wo="[^/]+?",Hc={sensitive:!1,strict:!1,start:!0,end:!0},qc=/[.+*?^${}()[\]/\\]/g;function Uc(e,t){const s=ae({},Hc,t),n=[];let o=s.start?"^":"";const i=[];for(const p of e){const d=p.length?[]:[90];s.strict&&!p.length&&(o+="/");for(let m=0;mt.length?t.length===1&&t[0]===80?1:-1:0}function Pr(e,t){let s=0;const n=e.score,o=t.score;for(;s0&&t[t.length-1]<0}const Wc={type:0,value:""},Gc=/[a-zA-Z0-9_]/;function zc(e){if(!e)return[[]];if(e==="/")return[[Wc]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(c){throw new Error(`ERR (${s})/"${p}": ${c}`)}let s=0,n=s;const o=[];let i;function r(){i&&o.push(i),i=[]}let a=0,u,p="",d="";function m(){p&&(s===0?i.push({type:0,value:p}):s===1||s===2||s===3?(i.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:p,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),p="")}function v(){p+=u}for(;a{r(F)}:mn}function r(m){if(Cr(m)){const v=n.get(m);v&&(n.delete(m),s.splice(s.indexOf(v),1),v.children.forEach(r),v.alias.forEach(r))}else{const v=s.indexOf(m);v>-1&&(s.splice(v,1),m.record.name&&n.delete(m.record.name),m.children.forEach(r),m.alias.forEach(r))}}function a(){return s}function u(m){const v=Xc(m,s);s.splice(v,0,m),m.record.name&&!Yo(m)&&n.set(m.record.name,m)}function p(m,v){let c,C={},O,W;if("name"in m&&m.name){if(c=n.get(m.name),!c)throw Zt(1,{location:m});W=c.record.name,C=ae(zo(v.params,c.keys.filter(F=>!F.optional).concat(c.parent?c.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),m.params&&zo(m.params,c.keys.map(F=>F.name))),O=c.stringify(C)}else if(m.path!=null)O=m.path,c=s.find(F=>F.re.test(O)),c&&(C=c.parse(O),W=c.record.name);else{if(c=v.name?n.get(v.name):s.find(F=>F.re.test(v.path)),!c)throw Zt(1,{location:m,currentLocation:v});W=c.record.name,C=ae({},v.params,m.params),O=c.stringify(C)}const N=[];let x=c;for(;x;)N.unshift(x.record),x=x.parent;return{name:W,path:O,params:C,matched:N,meta:Zc(N)}}e.forEach(m=>i(m));function d(){s.length=0,n.clear()}return{addRoute:i,resolve:p,removeRoute:r,clearRoutes:d,getRoutes:a,getRecordMatcher:o}}function zo(e,t){const s={};for(const n of t)n in e&&(s[n]=e[n]);return s}function Jo(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Qc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Qc(e){const t={},s=e.props||!1;if("component"in e)t.default=s;else for(const n in e.components)t[n]=typeof s=="object"?s[n]:s;return t}function Yo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zc(e){return e.reduce((t,s)=>ae(t,s.meta),{})}function Qo(e,t){const s={};for(const n in e)s[n]=n in t?t[n]:e[n];return s}function Xc(e,t){let s=0,n=t.length;for(;s!==n;){const i=s+n>>1;Pr(e,t[i])<0?n=i:s=i+1}const o=$c(e);return o&&(n=t.lastIndexOf(o,n-1)),n}function $c(e){let t=e;for(;t=t.parent;)if(Rr(t)&&Pr(e,t)===0)return t}function Rr({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function eu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oi&&Ds(i)):[n&&Ds(n)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+s,i!=null&&(t+="="+i))})}return t}function tu(e){const t={};for(const s in e){const n=e[s];n!==void 0&&(t[s]=$e(n)?n.map(o=>o==null?null:""+o):n==null?n:""+n)}return t}const nu=Symbol(""),Xo=Symbol(""),ls=Symbol(""),Ar=Symbol(""),Fs=Symbol("");function sn(){let e=[];function t(n){return e.push(n),()=>{const o=e.indexOf(n);o>-1&&e.splice(o,1)}}function s(){e=[]}return{add:t,list:()=>e.slice(),reset:s}}function kt(e,t,s,n,o,i=r=>r()){const r=n&&(n.enterCallbacks[o]=n.enterCallbacks[o]||[]);return()=>new Promise((a,u)=>{const p=v=>{v===!1?u(Zt(4,{from:s,to:t})):v instanceof Error?u(v):Nc(v)?u(Zt(2,{from:t,to:v})):(r&&n.enterCallbacks[o]===r&&typeof v=="function"&&r.push(v),a())},d=i(()=>e.call(n&&n.instances[o],t,s,p));let m=Promise.resolve(d);e.length<3&&(m=m.then(p)),m.catch(v=>u(v))})}function Ss(e,t,s,n,o=i=>i()){const i=[];for(const r of e)for(const a in r.components){let u=r.components[a];if(!(t!=="beforeRouteEnter"&&!r.instances[a]))if(vr(u)){const d=(u.__vccOpts||u)[t];d&&i.push(kt(d,s,n,r,a,o))}else{let p=u();i.push(()=>p.then(d=>{if(!d)throw new Error(`Couldn't resolve component "${a}" at "${r.path}"`);const m=cc(d)?d.default:d;r.mods[a]=d,r.components[a]=m;const c=(m.__vccOpts||m)[t];return c&&kt(c,s,n,r,a,o)()}))}}return i}function $o(e){const t=Xe(ls),s=Xe(Ar),n=ke(()=>{const u=Gt(e.to);return t.resolve(u)}),o=ke(()=>{const{matched:u}=n.value,{length:p}=u,d=u[p-1],m=s.matched;if(!d||!m.length)return-1;const v=m.findIndex(Qt.bind(null,d));if(v>-1)return v;const c=ei(u[p-2]);return p>1&&ei(d)===c&&m[m.length-1].path!==c?m.findIndex(Qt.bind(null,u[p-2])):v}),i=ke(()=>o.value>-1&&lu(s.params,n.value.params)),r=ke(()=>o.value>-1&&o.value===s.matched.length-1&&kr(s.params,n.value.params));function a(u={}){if(ru(u)){const p=t[Gt(e.replace)?"replace":"push"](Gt(e.to)).catch(mn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>p),p}return Promise.resolve()}return{route:n,href:ke(()=>n.value.href),isActive:i,isExactActive:r,navigate:a}}function su(e){return e.length===1?e[0]:e}const ou=Fi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:$o,setup(e,{slots:t}){const s=Pn($o(e)),{options:n}=Xe(ls),o=ke(()=>({[ti(e.activeClass,n.linkActiveClass,"router-link-active")]:s.isActive,[ti(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:s.isExactActive}));return()=>{const i=t.default&&su(t.default(s));return e.custom?i:ur("a",{"aria-current":s.isExactActive?e.ariaCurrentValue:null,href:s.href,onClick:s.navigate,class:o.value},i)}}}),iu=ou;function ru(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function lu(e,t){for(const s in t){const n=t[s],o=e[s];if(typeof n=="string"){if(n!==o)return!1}else if(!$e(o)||o.length!==n.length||n.some((i,r)=>i!==o[r]))return!1}return!0}function ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ti=(e,t,s)=>e??t??s,au=Fi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:s}){const n=Xe(Fs),o=ke(()=>e.route||n.value),i=Xe(Xo,0),r=ke(()=>{let p=Gt(i);const{matched:d}=o.value;let m;for(;(m=d[p])&&!m.components;)p++;return p}),a=ke(()=>o.value.matched[r.value]);jn(Xo,ke(()=>r.value+1)),jn(nu,a),jn(Fs,o);const u=Y();return dn(()=>[u.value,a.value,e.name],([p,d,m],[v,c,C])=>{d&&(d.instances[m]=p,c&&c!==d&&p&&p===v&&(d.leaveGuards.size||(d.leaveGuards=c.leaveGuards),d.updateGuards.size||(d.updateGuards=c.updateGuards))),p&&d&&(!c||!Qt(d,c)||!v)&&(d.enterCallbacks[m]||[]).forEach(O=>O(p))},{flush:"post"}),()=>{const p=o.value,d=e.name,m=a.value,v=m&&m.components[d];if(!v)return ni(s.default,{Component:v,route:p});const c=m.props[d],C=c?c===!0?p.params:typeof c=="function"?c(p):c:null,W=ur(v,ae({},C,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(m.instances[d]=null)},ref:u}));return ni(s.default,{Component:W,route:p})||W}}});function ni(e,t){if(!e)return null;const s=e(t);return s.length===1?s[0]:s}const cu=au;function uu(e){const t=Yc(e.routes,e),s=e.parseQuery||eu,n=e.stringifyQuery||Zo,o=e.history,i=sn(),r=sn(),a=sn(),u=cl(bt);let p=bt;Ut&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=ys.bind(null,y=>""+y),m=ys.bind(null,Sc),v=ys.bind(null,kn);function c(y,I){let A,B;return Cr(y)?(A=t.getRecordMatcher(y),B=I):B=y,t.addRoute(B,A)}function C(y){const I=t.getRecordMatcher(y);I&&t.removeRoute(I)}function O(){return t.getRoutes().map(y=>y.record)}function W(y){return!!t.getRecordMatcher(y)}function N(y,I){if(I=ae({},I||u.value),typeof y=="string"){const g=ws(s,y,I.path),b=t.resolve({path:g.path},I),S=o.createHref(g.fullPath);return ae(g,b,{params:v(b.params),hash:kn(g.hash),redirectedFrom:void 0,href:S})}let A;if(y.path!=null)A=ae({},y,{path:ws(s,y.path,I.path).path});else{const g=ae({},y.params);for(const b in g)g[b]==null&&delete g[b];A=ae({},y,{params:m(g)}),I.params=m(I.params)}const B=t.resolve(A,I),ue=y.hash||"";B.params=d(v(B.params));const f=Cc(n,ae({},y,{hash:bc(ue),path:B.path})),h=o.createHref(f);return ae({fullPath:f,hash:ue,query:n===Zo?tu(y.query):y.query||{}},B,{redirectedFrom:void 0,href:h})}function x(y){return typeof y=="string"?ws(s,y,u.value.path):ae({},y)}function F(y,I){if(p!==y)return Zt(8,{from:I,to:y})}function j(y){return z(y)}function P(y){return j(ae(x(y),{replace:!0}))}function te(y){const I=y.matched[y.matched.length-1];if(I&&I.redirect){const{redirect:A}=I;let B=typeof A=="function"?A(y):A;return typeof B=="string"&&(B=B.includes("?")||B.includes("#")?B=x(B):{path:B},B.params={}),ae({query:y.query,hash:y.hash,params:B.path!=null?{}:y.params},B)}}function z(y,I){const A=p=N(y),B=u.value,ue=y.state,f=y.force,h=y.replace===!0,g=te(A);if(g)return z(ae(x(g),{state:typeof g=="object"?ae({},ue,g.state):ue,force:f,replace:h}),I||A);const b=A;b.redirectedFrom=I;let S;return!f&&Ec(n,B,A)&&(S=Zt(16,{to:b,from:B}),Be(B,B,!0,!1)),(S?Promise.resolve(S):oe(b,B)).catch(_=>ct(_)?ct(_,2)?_:xe(_):ne(_,b,B)).then(_=>{if(_){if(ct(_,2))return z(ae({replace:h},x(_.to),{state:typeof _.to=="object"?ae({},ue,_.to.state):ue,force:f}),I||b)}else _=ie(b,B,!0,h,ue);return he(b,B,_),_})}function Q(y,I){const A=F(y,I);return A?Promise.reject(A):Promise.resolve()}function Z(y){const I=_t.values().next().value;return I&&typeof I.runWithContext=="function"?I.runWithContext(y):y()}function oe(y,I){let A;const[B,ue,f]=fu(y,I);A=Ss(B.reverse(),"beforeRouteLeave",y,I);for(const g of B)g.leaveGuards.forEach(b=>{A.push(kt(b,y,I))});const h=Q.bind(null,y,I);return A.push(h),Le(A).then(()=>{A=[];for(const g of i.list())A.push(kt(g,y,I));return A.push(h),Le(A)}).then(()=>{A=Ss(ue,"beforeRouteUpdate",y,I);for(const g of ue)g.updateGuards.forEach(b=>{A.push(kt(b,y,I))});return A.push(h),Le(A)}).then(()=>{A=[];for(const g of f)if(g.beforeEnter)if($e(g.beforeEnter))for(const b of g.beforeEnter)A.push(kt(b,y,I));else A.push(kt(g.beforeEnter,y,I));return A.push(h),Le(A)}).then(()=>(y.matched.forEach(g=>g.enterCallbacks={}),A=Ss(f,"beforeRouteEnter",y,I,Z),A.push(h),Le(A))).then(()=>{A=[];for(const g of r.list())A.push(kt(g,y,I));return A.push(h),Le(A)}).catch(g=>ct(g,8)?g:Promise.reject(g))}function he(y,I,A){a.list().forEach(B=>Z(()=>B(y,I,A)))}function ie(y,I,A,B,ue){const f=F(y,I);if(f)return f;const h=I===bt,g=Ut?history.state:{};A&&(B||h?o.replace(y.fullPath,ae({scroll:h&&g&&g.scroll},ue)):o.push(y.fullPath,ue)),u.value=y,Be(y,I,A,h),xe()}let ve;function Je(){ve||(ve=o.listen((y,I,A)=>{if(!Bt.listening)return;const B=N(y),ue=te(B);if(ue){z(ae(ue,{replace:!0,force:!0}),B).catch(mn);return}p=B;const f=u.value;Ut&&jc(qo(f.fullPath,A.delta),rs()),oe(B,f).catch(h=>ct(h,12)?h:ct(h,2)?(z(ae(x(h.to),{force:!0}),B).then(g=>{ct(g,20)&&!A.delta&&A.type===xn.pop&&o.go(-1,!1)}).catch(mn),Promise.reject()):(A.delta&&o.go(-A.delta,!1),ne(h,B,f))).then(h=>{h=h||ie(B,f,!1),h&&(A.delta&&!ct(h,8)?o.go(-A.delta,!1):A.type===xn.pop&&ct(h,20)&&o.go(-1,!1)),he(B,f,h)}).catch(mn)}))}let Ye=sn(),pe=sn(),X;function ne(y,I,A){xe(y);const B=pe.list();return B.length?B.forEach(ue=>ue(y,I,A)):console.error(y),Promise.reject(y)}function Qe(){return X&&u.value!==bt?Promise.resolve():new Promise((y,I)=>{Ye.add([y,I])})}function xe(y){return X||(X=!y,Je(),Ye.list().forEach(([I,A])=>y?A(y):I()),Ye.reset()),y}function Be(y,I,A,B){const{scrollBehavior:ue}=e;if(!Ut||!ue)return Promise.resolve();const f=!A&&Dc(qo(y.fullPath,0))||(B||!A)&&history.state&&history.state.scroll||null;return es().then(()=>ue(y,I,f)).then(h=>h&&Ic(h)).catch(h=>ne(h,y,I))}const Re=y=>o.go(y);let et;const _t=new Set,Bt={currentRoute:u,listening:!0,addRoute:c,removeRoute:C,clearRoutes:t.clearRoutes,hasRoute:W,getRoutes:O,resolve:N,options:e,push:j,replace:P,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:i.add,beforeResolve:r.add,afterEach:a.add,onError:pe.add,isReady:Qe,install(y){const I=this;y.component("RouterLink",iu),y.component("RouterView",cu),y.config.globalProperties.$router=I,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>Gt(u)}),Ut&&!et&&u.value===bt&&(et=!0,j(o.location).catch(ue=>{}));const A={};for(const ue in bt)Object.defineProperty(A,ue,{get:()=>u.value[ue],enumerable:!0});y.provide(ls,I),y.provide(Ar,Ri(A)),y.provide(Fs,u);const B=y.unmount;_t.add(y),y.unmount=function(){_t.delete(y),_t.size<1&&(p=bt,ve&&ve(),ve=null,u.value=bt,et=!1,X=!1),B()}}};function Le(y){return y.reduce((I,A)=>I.then(()=>Z(A)),Promise.resolve())}return Bt}function fu(e,t){const s=[],n=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let r=0;rQt(p,a))?n.push(a):s.push(a));const u=e.matched[r];u&&(t.matched.find(p=>Qt(p,u))||o.push(u))}return[s,n,o]}function Tr(){return Xe(ls)}const as=ac("auth",()=>{const e=Y(null),t=Y(null),s=Y(!1),n=(a,u)=>{e.value=a,t.value=u,s.value=!0,localStorage.setItem("auth_token",u),localStorage.setItem("user",JSON.stringify(a))},o=()=>{e.value=null,t.value=null,s.value=!1,localStorage.removeItem("auth_token"),localStorage.removeItem("user")};return{user:e,token:t,isAuthenticated:s,login:n,logout:o,checkAuth:()=>{const a=localStorage.getItem("auth_token"),u=localStorage.getItem("user");a&&u?(t.value=a,e.value=JSON.parse(u),s.value=!0):o()},getAuthHeaders:()=>t.value?{"Content-Type":"application/json",Authorization:`Bearer ${t.value}`}:{}}}),en=(e,t)=>{const s=e.__vccOpts||e;for(const[n,o]of t)s[n]=o;return s},du={name:"Home",setup(){const e=Y({}),t=async()=>{try{const s=await fetch("/api/public/page-content");s.ok&&(e.value=await s.json())}catch(s){console.error("Failed to fetch page content:",s)}};return $t(()=>{t()}),{content:e}}},hu={class:"home"},pu={class:"hero"},mu={class:"features"},gu={class:"feature-card"},vu={class:"feature-card"},_u={class:"feature-card"},bu={class:"feature-card"},yu={class:"cta"},wu={class:"cta-buttons"};function Su(e,t,s,n,o,i){const r=Kn("router-link");return U(),G("div",hu,[l("div",pu,[l("h1",null,D(n.content.home_hero_title||"Welkom bij Fiets Service Centrum"),1),l("p",null,D(n.content.home_hero_subtitle||"Professionele fietsreparatie en onderhoudsdiensten"),1)]),l("div",mu,[l("div",gu,[l("h3",null,D(n.content.home_feature_1_title||"🔧 Deskundige Reparaties"),1),l("p",null,D(n.content.home_feature_1_text||"Professionele fietsmonteurs met jarenlange ervaring"),1)]),l("div",vu,[l("h3",null,D(n.content.home_feature_2_title||"⚡ Snelle Service"),1),l("p",null,D(n.content.home_feature_2_text||"Snelle doorlooptijden voor de meeste reparaties"),1)]),l("div",_u,[l("h3",null,D(n.content.home_feature_3_title||"💰 Eerlijke Prijzen"),1),l("p",null,D(n.content.home_feature_3_text||"Concurrerende tarieven zonder verborgen kosten"),1)]),l("div",bu,[l("h3",null,D(n.content.home_feature_4_title||"📅 Eenvoudig Boeken"),1),l("p",null,D(n.content.home_feature_4_text||"Eenvoudig online boekingssysteem"),1)])]),l("div",yu,[l("h2",null,D(n.content.home_cta_title||"Klaar om je fiets te laten repareren?"),1),l("p",null,D(n.content.home_cta_subtitle||"Boek je afspraak online en krijg je fiets weer in topconditie."),1),l("div",wu,[be(r,{to:"/booking",class:"cta-button"},{default:ot(()=>[Se(D(n.content.home_cta_button_1_text||"Nu Service Boeken"),1)]),_:1}),be(r,{to:"/pricelist",class:"cta-button secondary"},{default:ot(()=>[Se(D(n.content.home_cta_button_2_text||"💰 Prijslijst Bekijken"),1)]),_:1})])])])}const ku=en(du,[["render",Su],["__scopeId","data-v-677cbdbe"]]),xu={name:"Booking",setup(){const e=Y({name:"",address:"",place:"",email:"",phone:"",repair_description:"",requested_date:"",requested_time:""}),t=Y(!1),s=Y(""),n=Y(!1),o=Y(null),i=Y({}),r=Y(new Date),a=Y([]),u=["Zo","Ma","Di","Wo","Do","Vr","Za"],p=ke(()=>{const P=new Date;return P.setDate(P.getDate()+1),P.toISOString().split("T")[0]}),d=ke(()=>r.value.toLocaleDateString("nl-NL",{month:"long",year:"numeric"})),m=ke(()=>{const P=r.value.getFullYear(),te=r.value.getMonth(),z=new Date(P,te,1),Q=new Date(P,te+1,0),Z=z.getDay(),oe=Q.getDay(),he=[];for(let ie=Z-1;ie>=0;ie--){const ve=new Date(P,te,-ie);he.push(v(ve,!1))}for(let ie=1;ie<=Q.getDate();ie++){const ve=new Date(P,te,ie);he.push(v(ve,!0))}for(let ie=1;ie<=6-oe;ie++){const ve=new Date(P,te+1,ie);he.push(v(ve,!1))}return he}),v=(P,te)=>{const z=P.toISOString().split("T")[0],Q=new Date,Z=new Date;Z.setDate(Z.getDate()+1);const oe=z===Q.toISOString().split("T")[0],he=znew Date(Je.date).toISOString().split("T")[0]===z),ve=z===e.value.requested_date;return{date:z,day:P.getDate(),key:z,isCurrentMonth:te,isToday:oe,isDisabled:he,isBlocked:ie,isSelected:ve}},c=async()=>{try{const P=await fetch("/api/public/blocked-dates");P.ok&&(a.value=await P.json())}catch(P){console.error("Failed to fetch blocked dates:",P)}},C=async()=>{try{const P=await fetch("/api/public/page-content");P.ok&&(i.value=await P.json())}catch(P){console.error("Failed to fetch page content:",P)}},O=()=>{r.value=new Date(r.value.getFullYear(),r.value.getMonth()-1,1)},W=()=>{r.value=new Date(r.value.getFullYear(),r.value.getMonth()+1,1)},N=P=>{P.isDisabled||P.isBlocked||(e.value.requested_date=P.date)},x=()=>!e.value.email&&!e.value.phone?(s.value="Geef alstublieft een e-mailadres of telefoonnummer op",!1):(s.value="",!0),F=async()=>{if(x()){t.value=!0,s.value="";try{const P=await fetch("/api/public/service-requests",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.value)});if(!P.ok){const z=await P.json();throw new Error(z.message||"Aanvraag versturen mislukt")}const te=await P.json();o.value=te,n.value=!0,Object.keys(e.value).forEach(z=>{e.value[z]=""})}catch(P){s.value=P.message}finally{t.value=!1}}},j=()=>{n.value=!1,o.value=null};return $t(()=>{const P=new Date;P.setDate(P.getDate()+1),e.value.requested_date=P.toISOString().split("T")[0],c(),C()}),{form:e,loading:t,formError:s,showSuccessModal:n,submittedRequest:o,content:i,minDate:p,submitForm:F,closeSuccessModal:j,currentDate:r,blockedDates:a,weekdays:u,calendarDates:m,currentMonthYear:d,previousMonth:O,nextMonth:W,selectDate:N}}},Cu={class:"booking"},Eu={class:"booking-header"},Pu={class:"booking-form-container"},Ru={class:"form-row"},Au={class:"form-group"},Tu={class:"form-row"},Ou={class:"form-group"},Mu={class:"form-row"},Iu={class:"form-group"},ju={class:"form-row"},Du={class:"form-group"},Vu={class:"form-group"},Fu={class:"form-row"},Bu={class:"form-group full-width"},Lu={class:"form-row"},Nu={class:"form-group"},Hu={class:"custom-date-picker"},qu={class:"date-picker-header"},Uu={class:"current-month"},Ku={class:"date-picker-grid"},Wu=["onClick"],Gu={class:"form-group"},zu={key:0,class:"form-error"},Ju={class:"form-actions"},Yu=["disabled"],Qu={class:"modal-body"},Zu={class:"modal-footer"};function Xu(e,t,s,n,o,i){return U(),G("div",Cu,[l("div",Eu,[l("h1",null,D(n.content.booking_header_title||"🚲 Boek Je Fiets Service"),1),l("p",null,D(n.content.booking_header_subtitle||"Vul het onderstaande formulier in om je fietsreparatie of onderhoud in te plannen"),1)]),l("div",Pu,[l("form",{onSubmit:t[10]||(t[10]=ft((...r)=>n.submitForm&&n.submitForm(...r),["prevent"])),class:"booking-form"},[l("div",Ru,[l("div",Au,[t[14]||(t[14]=l("label",{for:"name"},"Volledige Naam *",-1)),le(l("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=r=>n.form.name=r),required:"",placeholder:"Voer je volledige naam in"},null,512),[[_e,n.form.name]])])]),l("div",Tu,[l("div",Ou,[t[15]||(t[15]=l("label",{for:"address"},"Adres *",-1)),le(l("textarea",{id:"address","onUpdate:modelValue":t[1]||(t[1]=r=>n.form.address=r),required:"",placeholder:"Voer je volledige adres in",rows:"3"},null,512),[[_e,n.form.address]])])]),l("div",Mu,[l("div",Iu,[t[16]||(t[16]=l("label",{for:"place"},"Plaats *",-1)),le(l("input",{type:"text",id:"place","onUpdate:modelValue":t[2]||(t[2]=r=>n.form.place=r),required:"",placeholder:"Voer je plaats in"},null,512),[[_e,n.form.place]])])]),l("div",ju,[l("div",Du,[t[17]||(t[17]=l("label",{for:"email"},"E-mail",-1)),le(l("input",{type:"email",id:"email","onUpdate:modelValue":t[3]||(t[3]=r=>n.form.email=r),placeholder:"Voer je e-mailadres in"},null,512),[[_e,n.form.email]])]),l("div",Vu,[t[18]||(t[18]=l("label",{for:"phone"},"Telefoon",-1)),le(l("input",{type:"tel",id:"phone","onUpdate:modelValue":t[4]||(t[4]=r=>n.form.phone=r),placeholder:"Voer je telefoonnummer in"},null,512),[[_e,n.form.phone]])])]),l("div",Fu,[l("div",Bu,[t[19]||(t[19]=l("label",{for:"repair_description"},"Wat moet er gerepareerd worden? *",-1)),le(l("textarea",{id:"repair_description","onUpdate:modelValue":t[5]||(t[5]=r=>n.form.repair_description=r),required:"",placeholder:"Beschrijf het probleem met je fiets of welke service je nodig hebt",rows:"4"},null,512),[[_e,n.form.repair_description]])])]),l("div",Lu,[l("div",Nu,[t[20]||(t[20]=l("label",{for:"requested_date"},"Gewenste Datum *",-1)),l("div",Hu,[l("div",qu,[l("button",{type:"button",onClick:t[6]||(t[6]=(...r)=>n.previousMonth&&n.previousMonth(...r)),class:"nav-btn"},"‹"),l("span",Uu,D(n.currentMonthYear),1),l("button",{type:"button",onClick:t[7]||(t[7]=(...r)=>n.nextMonth&&n.nextMonth(...r)),class:"nav-btn"},"›")]),l("div",Ku,[(U(!0),G(Pe,null,xt(n.weekdays,r=>(U(),G("div",{class:"weekday-header",key:r},D(r),1))),128)),(U(!0),G(Pe,null,xt(n.calendarDates,r=>(U(),G("div",{key:r.key,class:We(["calendar-date",{"other-month":!r.isCurrentMonth,disabled:r.isDisabled,blocked:r.isBlocked,selected:r.isSelected,today:r.isToday}]),onClick:a=>n.selectDate(r)},D(r.day),11,Wu))),128))]),le(l("input",{type:"hidden",id:"requested_date","onUpdate:modelValue":t[8]||(t[8]=r=>n.form.requested_date=r),required:""},null,512),[[_e,n.form.requested_date]])])]),l("div",Gu,[t[21]||(t[21]=l("label",{for:"requested_time"},"Gewenste Tijd *",-1)),le(l("input",{type:"time",id:"requested_time","onUpdate:modelValue":t[9]||(t[9]=r=>n.form.requested_time=r),required:"",min:"08:00",max:"18:00"},null,512),[[_e,n.form.requested_time]])])]),n.formError?(U(),G("div",zu,D(n.formError),1)):Oe("",!0),l("div",Ju,[l("button",{type:"submit",class:"submit-btn",disabled:n.loading},D(n.loading?"Versturen...":"Service Aanvraag Versturen"),9,Yu)])],32)]),n.showSuccessModal?(U(),G("div",{key:0,class:"modal-overlay",onClick:t[13]||(t[13]=(...r)=>n.closeSuccessModal&&n.closeSuccessModal(...r))},[l("div",{class:"modal-content",onClick:t[12]||(t[12]=ft(()=>{},["stop"]))},[t[24]||(t[24]=l("div",{class:"modal-header"},[l("h3",null,"✅ Service Aanvraag Verzonden!")],-1)),l("div",Qu,[t[23]||(t[23]=l("p",null,"Bedankt voor je service aanvraag. We nemen binnenkort contact met je op om je afspraak te bevestigen.",-1)),l("p",null,[t[22]||(t[22]=l("strong",null,"Aanvraag ID:",-1)),Se(" "+D(n.submittedRequest.id),1)])]),l("div",Zu,[l("button",{onClick:t[11]||(t[11]=(...r)=>n.closeSuccessModal&&n.closeSuccessModal(...r)),class:"btn-primary"},"Sluiten")])])])):Oe("",!0)])}const $u=en(xu,[["render",Xu],["__scopeId","data-v-3d2c946f"]]),ef={name:"Admin",setup(){const e=Tr(),t=as(),s=Y("requests"),n=Y(!1),o=Y([]),i=Y([]),r=Y({}),a=Y([]),u=Y([]),p=Y({pending:!0,confirmed:!0,mail_sent:!0,completed:!0,cancelled:!0}),d=Y(!1),m=Y(!1),v=Y(!1),c=Y(!1),C=Y(!1),O=Y(!1),W=Y(!1),N=Y(!1),x=Y(null),F=Y(null),j=Y(null),P=Y({date:"",reason:""}),te=Y({title:"",description:"",price:"",sort_order:0,is_active:!0}),z=Y({message:""}),Q=Y({message:""}),Z=Y([]),oe=Y(!1),he=Y(!1),ie=Y(!1),ve=[{id:"requests",label:"Service Aanvragen"},{id:"blocked",label:"Geblokkeerde Data"},{id:"pricelist",label:"Prijslijst"},{id:"content",label:"Pagina Teksten"},{id:"settings",label:"Instellingen"}],Je=ke(()=>{const w=new Date;return w.setDate(w.getDate()+1),w.toISOString().split("T")[0]}),Ye=ke(()=>o.value.filter(w=>p.value[w.status]===!0)),pe=w=>({pending:"In afwachting",confirmed:"Bevestigd",mail_sent:"Bevestigd mail verstuurd",completed:"Voltooid",cancelled:"Geannuleerd"})[w]||w,X=w=>({email:"E-MAIL",sms:"SMS"})[w]||w.toUpperCase(),ne=w=>({admin_to_customer:"Naar Klant",customer_to_admin:"Van Klant"})[w]||w,Qe=async()=>{try{await fetch("/api/logout",{method:"POST",headers:t.getAuthHeaders()})}catch(w){console.error("Logout error:",w)}finally{t.logout(),e.push("/login")}},xe=async()=>{try{const w=await fetch("/api/service-requests",{headers:t.getAuthHeaders()});w.ok&&(o.value=await w.json())}catch(w){console.error("Failed to fetch requests:",w)}},Be=async()=>{try{const w=await fetch("/api/blocked-dates",{headers:t.getAuthHeaders()});w.ok&&(i.value=await w.json())}catch(w){console.error("Failed to fetch blocked dates:",w)}},Re=async()=>{try{const w=await fetch("/api/settings",{headers:t.getAuthHeaders()});w.ok&&(await w.json()).forEach(L=>{r.value[L.key]=L.value})}catch(w){console.error("Failed to fetch settings:",w)}},et=async()=>{try{const w=await fetch("/api/admin/pricelist",{headers:t.getAuthHeaders()});w.ok&&(a.value=await w.json())}catch(w){console.error("Failed to fetch pricelist:",w)}},_t=async()=>{try{const w=await fetch("/api/page-content",{headers:t.getAuthHeaders()});w.ok&&(u.value=await w.json())}catch(w){console.error("Failed to fetch page content:",w)}},Bt=async()=>{n.value=!0,await xe(),n.value=!1},Le=async w=>{W.value=!0,d.value=!0;try{const V=await fetch(`/api/service-requests/${w.id}`,{headers:t.getAuthHeaders()});if(V.ok){const L=await V.json();L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value={...L}}else{const L=o.value.find(Ce=>Ce.id===w.id);L&&L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value=L?{...L}:{...w}}}catch(V){console.error("Failed to fetch latest request data:",V);const L=o.value.find(Ce=>Ce.id===w.id);L&&L.actual_repair_date&&(L.actual_repair_date=L.actual_repair_date.split("T")[0]),x.value=L?{...L}:{...w}}finally{W.value=!1}},y=()=>{d.value=!1,x.value=null},I=()=>{m.value=!1,F.value=null,P.value={date:"",reason:""}},A=()=>{v.value=!1,z.value.message=""},B=()=>{c.value=!1,Q.value.message=""},ue=()=>{C.value=!1,Z.value=[]},f=()=>{O.value=!1,j.value=null,te.value={title:"",description:"",price:"",sort_order:0,is_active:!0}},h=w=>{x.value=w,v.value=!0},g=w=>{x.value=w,c.value=!0},b=async w=>{x.value=w;try{const V=await fetch(`/api/service-requests/${w.id}/communications`,{headers:t.getAuthHeaders()});V.ok&&(Z.value=await V.json())}catch(V){console.error("Failed to fetch communications:",V)}C.value=!0},S=async()=>{if(z.value.message.trim()){oe.value=!0;try{(await fetch(`/api/service-requests/${x.value.id}/send-email`,{method:"POST",headers:t.getAuthHeaders(),body:JSON.stringify({message:z.value.message})})).ok&&(A(),await xe())}catch(w){console.error("Failed to send email:",w)}finally{oe.value=!1}}},_=async()=>{if(Q.value.message.trim()){he.value=!0;try{(await fetch(`/api/service-requests/${x.value.id}/send-sms`,{method:"POST",headers:t.getAuthHeaders(),body:JSON.stringify({message:Q.value.message})})).ok&&(B(),await xe())}catch(w){console.error("Failed to send SMS:",w)}finally{he.value=!1}}},T=async()=>{var w,V,L;if(!((w=x.value)!=null&&w.email)){alert("Geen e-mailadres beschikbaar voor deze klant");return}if(!((V=x.value)!=null&&V.actual_repair_date)||!((L=x.value)!=null&&L.actual_repair_time)){alert("Vul eerst de werkelijke ophaaldatum en tijd in");return}if(confirm("Weet u zeker dat u de ophaalbevestiging wilt versturen naar "+x.value.email+"?")){ie.value=!0;try{const Ce=await fetch(`/api/service-requests/${x.value.id}/send-pickup-confirmation`,{method:"POST",headers:t.getAuthHeaders()});if(Ce.ok){const Ot=await Ce.json();alert("Ophaalbevestiging succesvol verzonden!"),Ot.service_request&&(x.value=Ot.service_request),await xe()}else{const Ot=await Ce.json();alert("Fout bij versturen: "+(Ot.message||"Onbekende fout"))}}catch(Ce){console.error("Failed to send pickup confirmation:",Ce),alert("Fout bij versturen van ophaalbevestiging")}finally{ie.value=!1}}},R=w=>{F.value=w,P.value={date:w.date,reason:w.reason||""},m.value=!0},E=async()=>{try{const w=F.value?`/api/blocked-dates/${F.value.id}`:"/api/blocked-dates",V=F.value?"PUT":"POST";(await fetch(w,{method:V,headers:t.getAuthHeaders(),body:JSON.stringify(P.value)})).ok&&(I(),await Be())}catch(w){console.error("Failed to save blocked date:",w)}},k=async w=>{if(confirm("Weet je zeker dat je deze geblokkeerde datum wilt verwijderen?"))try{(await fetch(`/api/blocked-dates/${w}`,{method:"DELETE",headers:t.getAuthHeaders()})).ok&&await Be()}catch(V){console.error("Failed to delete blocked date:",V)}},q=async(w,V)=>{try{(await fetch(`/api/settings/key/${w}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({value:V,description:""})})).ok&&console.log(`Setting ${w} updated successfully`)}catch(L){console.error("Failed to update setting:",L)}},M=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({status:x.value.status})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].status=x.value.status),await xe()}}catch(w){console.error("Failed to update request status:",w)}},H=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({actual_repair_date:x.value.actual_repair_date})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].actual_repair_date=x.value.actual_repair_date),await xe()}}catch(w){console.error("Failed to update request date:",w)}},J=async()=>{try{if((await fetch(`/api/service-requests/${x.value.id}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({actual_repair_date:x.value.actual_repair_date,actual_repair_time:x.value.actual_repair_time})})).ok){const V=o.value.findIndex(L=>L.id===x.value.id);V!==-1&&(o.value[V].actual_repair_date=x.value.actual_repair_date,o.value[V].actual_repair_time=x.value.actual_repair_time),await xe()}}catch(w){console.error("Failed to update request time:",w)}},ee=w=>{j.value=w,te.value={...w},O.value=!0},fe=async()=>{try{const w=j.value?`/api/pricelist/${j.value.id}`:"/api/pricelist",V=j.value?"PUT":"POST";(await fetch(w,{method:V,headers:t.getAuthHeaders(),body:JSON.stringify(te.value)})).ok&&(f(),await et())}catch(w){console.error("Failed to save pricelist item:",w)}},re=async w=>{if(confirm("Weet je zeker dat je dit prijslijst item wilt verwijderen?"))try{(await fetch(`/api/pricelist/${w}`,{method:"DELETE",headers:t.getAuthHeaders()})).ok&&await et()}catch(V){console.error("Failed to delete pricelist item:",V)}},Ae=w=>{const V=u.value.find(L=>L.key===w);return V?V.value:""},Te=(w,V)=>{const L=u.value.find(Ce=>Ce.key===w);L&&(L.value=V)},Ue=async w=>{const V=u.value.find(L=>L.key===w);if(V)try{(await fetch(`/api/page-content/key/${w}`,{method:"PUT",headers:t.getAuthHeaders(),body:JSON.stringify({value:V.value,description:V.description})})).ok&&console.log(`Content ${w} updated successfully`)}catch(L){console.error("Failed to update page content:",L)}},Ke=(w,V)=>{if(!w)return"N/A";const Ce=new Date(w).toLocaleDateString("nl-NL");return V?`${Ce} ${V}`:Ce},Tt=w=>new Date(w).toISOString().split("T")[0];return $t(()=>{t.checkAuth(),xe(),Be(),et(),_t(),Re()}),{activeTab:s,tabs:ve,loading:n,requests:o,filteredRequests:Ye,statusFilters:p,blockedDates:i,settings:r,pricelist:a,pageContent:u,user:ke(()=>t.user),showRequestModal:d,showAddBlockedDate:m,showEmailModal:v,showSmsModal:c,showCommunicationsModal:C,showAddPricelistItem:O,requestModalLoading:W,pricelistLoading:N,selectedRequest:x,editingBlockedDate:F,editingPricelistItem:j,blockedDateForm:P,pricelistForm:te,emailForm:z,smsForm:Q,communications:Z,emailLoading:oe,smsLoading:he,pickupConfirmationLoading:ie,minDate:Je,getStatusText:pe,getCommTypeText:X,getCommDirectionText:ne,handleLogout:Qe,refreshRequests:Bt,viewRequest:Le,closeRequestModal:y,closeBlockedDateModal:I,closePricelistModal:f,closeEmailModal:A,closeSmsModal:B,closeCommunicationsModal:ue,sendEmail:h,sendSms:g,viewCommunications:b,submitEmail:S,submitSms:_,sendPickupConfirmation:T,editBlockedDate:R,saveBlockedDate:E,deleteBlockedDate:k,editPricelistItem:ee,savePricelistItem:fe,deletePricelistItem:re,updateSetting:q,updateRequestStatus:M,updateRequestDate:H,updateRequestTime:J,getContentValue:Ae,updateContentValue:Te,savePageContent:Ue,formatDateTime:Ke,formatDate:Tt}}},tf={class:"admin"},nf={class:"admin-header"},sf={class:"admin-user-info"},of={class:"admin-tabs"},rf=["onClick"],lf={key:0,class:"tab-content"},af={class:"section-header"},cf=["disabled","title"],uf={class:"status-filter"},ff={class:"filter-checkboxes"},df={class:"filter-checkbox"},hf={class:"checkbox-label"},pf={class:We(["status-badge","pending"])},mf={class:"filter-checkbox"},gf={class:"checkbox-label"},vf={class:We(["status-badge","confirmed"])},_f={class:"filter-checkbox"},bf={class:"checkbox-label"},yf={class:We(["status-badge","mail_sent"])},wf={class:"filter-checkbox"},Sf={class:"checkbox-label"},kf={class:We(["status-badge","completed"])},xf={class:"filter-checkbox"},Cf={class:"checkbox-label"},Ef={class:We(["status-badge","cancelled"])},Pf={class:"requests-table"},Rf={key:0,class:"loading-row"},Af={key:1,class:"empty-row"},Tf={class:"cell"},Of={class:"cell"},Mf={class:"cell"},If={class:"cell"},jf={class:"cell actions"},Df=["onClick"],Vf=["onClick","disabled"],Ff=["onClick","disabled"],Bf=["onClick"],Lf={key:1,class:"tab-content"},Nf={class:"section-header"},Hf={class:"blocked-dates-list"},qf={class:"date-info"},Uf={class:"date"},Kf={key:0,class:"reason"},Wf={class:"date-actions"},Gf=["onClick"],zf=["onClick"],Jf={key:2,class:"tab-content"},Yf={class:"section-header"},Qf={class:"pricelist-table"},Zf={key:0,class:"loading-row"},Xf={key:1,class:"empty-row"},$f={class:"cell"},ed={class:"cell"},td={class:"cell"},nd={class:"cell"},sd={class:"cell"},od={class:"cell actions"},id=["onClick"],rd=["onClick"],ld={key:3,class:"tab-content"},ad={class:"content-sections"},cd={class:"content-section"},ud={class:"content-form"},fd={class:"form-group"},dd=["value"],hd={class:"form-group"},pd=["value"],md={class:"content-section"},gd={class:"content-form"},vd={class:"feature-group"},_d={class:"form-group"},bd=["value"],yd={class:"form-group"},wd=["value"],Sd={class:"feature-group"},kd={class:"form-group"},xd=["value"],Cd={class:"form-group"},Ed=["value"],Pd={class:"feature-group"},Rd={class:"form-group"},Ad=["value"],Td={class:"form-group"},Od=["value"],Md={class:"feature-group"},Id={class:"form-group"},jd=["value"],Dd={class:"form-group"},Vd=["value"],Fd={class:"content-section"},Bd={class:"content-form"},Ld={class:"form-group"},Nd=["value"],Hd={class:"form-group"},qd=["value"],Ud={class:"form-group"},Kd=["value"],Wd={class:"form-group"},Gd=["value"],zd={class:"content-section"},Jd={class:"content-form"},Yd={class:"form-group"},Qd=["value"],Zd={class:"form-group"},Xd=["value"],$d={key:4,class:"tab-content"},eh={class:"settings-form"},th={class:"setting-group"},nh={class:"setting-group"},sh={class:"setting-group"},oh={class:"modal-header"},ih={key:0,class:"modal-body"},rh={key:0,class:"loading-state"},lh={key:1,class:"request-details"},ah={class:"detail-row"},ch={class:"detail-row"},uh={class:"detail-row"},fh={class:"detail-row"},dh={class:"detail-row"},hh={class:"detail-row"},ph={class:"detail-row"},mh={class:"detail-row"},gh={class:"detail-row"},vh={class:"detail-row"},_h={class:"modal-footer"},bh=["disabled"],yh={class:"modal-header"},wh={class:"modal-body"},Sh={class:"form-group"},kh=["min"],xh={class:"form-group"},Ch={class:"modal-footer"},Eh={class:"modal-header"},Ph={class:"modal-body"},Rh={class:"form-group"},Ah={class:"modal-footer"},Th=["disabled"],Oh={class:"modal-header"},Mh={class:"modal-body"},Ih={class:"form-group"},jh={class:"modal-footer"},Dh=["disabled"],Vh={class:"modal-header"},Fh={class:"modal-body"},Bh={key:0,class:"no-communications"},Lh={key:1,class:"communications-list"},Nh={class:"comm-header"},Hh={class:"comm-type"},qh={class:"comm-direction"},Uh={class:"comm-date"},Kh={class:"comm-message"},Wh={class:"modal-footer"},Gh={class:"modal-header"},zh={class:"modal-body"},Jh={class:"form-group"},Yh={class:"form-group"},Qh={class:"form-group"},Zh={class:"form-group"},Xh={class:"form-group"},$h={class:"modal-footer"};function ep(e,t,s,n,o,i){var r,a,u,p,d,m,v;return U(),G("div",tf,[l("div",nf,[t[91]||(t[91]=l("h1",null,"🔧 Beheer Dashboard",-1)),t[92]||(t[92]=l("p",null,"Beheer fiets service aanvragen, geblokkeerde data en instellingen",-1)),l("div",sf,[l("span",null,"Ingelogd als: "+D((r=n.user)==null?void 0:r.name),1),l("button",{onClick:t[0]||(t[0]=(...c)=>n.handleLogout&&n.handleLogout(...c)),class:"logout-btn"},"Uitloggen")])]),l("div",of,[(U(!0),G(Pe,null,xt(n.tabs,c=>(U(),G("button",{key:c.id,onClick:C=>n.activeTab=c.id,class:We(["tab-button",{active:n.activeTab===c.id}])},D(c.label),11,rf))),128))]),n.activeTab==="requests"?(U(),G("div",lf,[l("div",af,[t[93]||(t[93]=l("h2",null,"Service Aanvragen",-1)),l("button",{onClick:t[1]||(t[1]=(...c)=>n.refreshRequests&&n.refreshRequests(...c)),class:"refresh-btn",disabled:n.loading,title:n.loading?"Verversen...":"Verversen"},D((n.loading,"🔄")),9,cf)]),l("div",uf,[t[94]||(t[94]=l("div",{class:"filter-title"},"Filter op status:",-1)),l("div",ff,[l("label",df,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[2]||(t[2]=c=>n.statusFilters.pending=c)},null,512),[[Nt,n.statusFilters.pending]]),l("span",hf,[l("span",pf,D(n.getStatusText("pending")),1)])]),l("label",mf,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=c=>n.statusFilters.confirmed=c)},null,512),[[Nt,n.statusFilters.confirmed]]),l("span",gf,[l("span",vf,D(n.getStatusText("confirmed")),1)])]),l("label",_f,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=c=>n.statusFilters.mail_sent=c)},null,512),[[Nt,n.statusFilters.mail_sent]]),l("span",bf,[l("span",yf,D(n.getStatusText("mail_sent")),1)])]),l("label",wf,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[5]||(t[5]=c=>n.statusFilters.completed=c)},null,512),[[Nt,n.statusFilters.completed]]),l("span",Sf,[l("span",kf,D(n.getStatusText("completed")),1)])]),l("label",xf,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[6]||(t[6]=c=>n.statusFilters.cancelled=c)},null,512),[[Nt,n.statusFilters.cancelled]]),l("span",Cf,[l("span",Ef,D(n.getStatusText("cancelled")),1)])])])]),l("div",Pf,[t[97]||(t[97]=gs('
ID
Naam
Datum/Tijd
Status
Acties
',1)),n.loading?(U(),G("div",Rf,[...t[95]||(t[95]=[l("div",{class:"loading-text"},"Aanvragen laden...",-1)])])):n.filteredRequests.length===0?(U(),G("div",Af,[...t[96]||(t[96]=[l("div",{class:"empty-text"},"Geen service aanvragen gevonden met de geselecteerde filters",-1)])])):(U(!0),G(Pe,{key:2},xt(n.filteredRequests,c=>(U(),G("div",{class:"table-row",key:c.id},[l("div",Tf,D(c.id),1),l("div",Of,D(c.name),1),l("div",Mf,D(n.formatDateTime(c.requested_date,c.requested_time)),1),l("div",If,[l("span",{class:We(["status-badge",c.status])},D(n.getStatusText(c.status)),3)]),l("div",jf,[l("button",{onClick:C=>n.viewRequest(c),class:"action-btn view",title:"Bekijken"}," 👁️ ",8,Df),l("button",{onClick:C=>n.sendEmail(c),class:"action-btn email",disabled:!c.email,title:"E-mail versturen"}," 📧 ",8,Vf),l("button",{onClick:C=>n.sendSms(c),class:"action-btn sms",disabled:!c.phone,title:"SMS versturen"}," 📱 ",8,Ff),l("button",{onClick:C=>n.viewCommunications(c),class:"action-btn comm",title:"Communicatie bekijken"}," 💬 ",8,Bf)])]))),128))])])):Oe("",!0),n.activeTab==="blocked"?(U(),G("div",Lf,[l("div",Nf,[t[98]||(t[98]=l("h2",null,"Geblokkeerde Data",-1)),l("button",{onClick:t[7]||(t[7]=c=>n.showAddBlockedDate=!0),class:"add-btn",title:"Geblokkeerde Datum Toevoegen"},"➕")]),l("div",Hf,[(U(!0),G(Pe,null,xt(n.blockedDates,c=>(U(),G("div",{key:c.id,class:"blocked-date-item"},[l("div",qf,[l("span",Uf,D(n.formatDate(c.date)),1),c.reason?(U(),G("span",Kf,D(c.reason),1)):Oe("",!0)]),l("div",Wf,[l("button",{onClick:C=>n.editBlockedDate(c),class:"edit-btn",title:"Bewerken"},"✏️",8,Gf),l("button",{onClick:C=>n.deleteBlockedDate(c.id),class:"delete-btn",title:"Verwijderen"},"🗑️",8,zf)])]))),128))])])):Oe("",!0),n.activeTab==="pricelist"?(U(),G("div",Jf,[l("div",Yf,[t[99]||(t[99]=l("h2",null,"Prijslijst Beheer",-1)),l("button",{onClick:t[8]||(t[8]=c=>n.showAddPricelistItem=!0),class:"add-btn",title:"Prijslijst Item Toevoegen"},"➕")]),l("div",Qf,[t[102]||(t[102]=gs('
Titel
Beschrijving
Prijs
Volgorde
Status
Acties
',1)),n.pricelistLoading?(U(),G("div",Zf,[...t[100]||(t[100]=[l("div",{class:"loading-text"},"Prijslijst laden...",-1)])])):n.pricelist.length===0?(U(),G("div",Xf,[...t[101]||(t[101]=[l("div",{class:"empty-text"},"Geen prijslijst items gevonden",-1)])])):(U(!0),G(Pe,{key:2},xt(n.pricelist,c=>(U(),G("div",{class:"table-row",key:c.id},[l("div",$f,D(c.title),1),l("div",ed,D(c.description),1),l("div",td,"€"+D(c.price),1),l("div",nd,D(c.sort_order),1),l("div",sd,[l("span",{class:We(["status-badge",c.is_active?"active":"inactive"])},D(c.is_active?"Actief":"Inactief"),3)]),l("div",od,[l("button",{onClick:C=>n.editPricelistItem(c),class:"action-btn edit",title:"Bewerken"},"✏️",8,id),l("button",{onClick:C=>n.deletePricelistItem(c.id),class:"action-btn delete",title:"Verwijderen"},"🗑️",8,rd)])]))),128))])])):Oe("",!0),n.activeTab==="content"?(U(),G("div",ld,[t[127]||(t[127]=l("div",{class:"section-header"},[l("h2",null,"Pagina Teksten Beheer")],-1)),l("div",ad,[l("div",cd,[t[105]||(t[105]=l("h3",null,"Openingspagina - Hero Sectie",-1)),l("div",ud,[l("div",fd,[t[103]||(t[103]=l("label",null,"Hoofdtekst (Header)",-1)),l("input",{type:"text",value:n.getContentValue("home_hero_title"),onInput:t[9]||(t[9]=c=>n.updateContentValue("home_hero_title",c.target.value)),onBlur:t[10]||(t[10]=c=>n.savePageContent("home_hero_title"))},null,40,dd)]),l("div",hd,[t[104]||(t[104]=l("label",null,"Subtekst (Subheader)",-1)),l("input",{type:"text",value:n.getContentValue("home_hero_subtitle"),onInput:t[11]||(t[11]=c=>n.updateContentValue("home_hero_subtitle",c.target.value)),onBlur:t[12]||(t[12]=c=>n.savePageContent("home_hero_subtitle"))},null,40,pd)])])]),l("div",md,[t[118]||(t[118]=l("h3",null,"Openingspagina - Panelen",-1)),l("div",gd,[l("div",vd,[t[108]||(t[108]=l("h4",null,"Paneel 1",-1)),l("div",_d,[t[106]||(t[106]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_1_title"),onInput:t[13]||(t[13]=c=>n.updateContentValue("home_feature_1_title",c.target.value)),onBlur:t[14]||(t[14]=c=>n.savePageContent("home_feature_1_title"))},null,40,bd)]),l("div",yd,[t[107]||(t[107]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_1_text"),onInput:t[15]||(t[15]=c=>n.updateContentValue("home_feature_1_text",c.target.value)),onBlur:t[16]||(t[16]=c=>n.savePageContent("home_feature_1_text")),rows:"2"},null,40,wd)])]),l("div",Sd,[t[111]||(t[111]=l("h4",null,"Paneel 2",-1)),l("div",kd,[t[109]||(t[109]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_2_title"),onInput:t[17]||(t[17]=c=>n.updateContentValue("home_feature_2_title",c.target.value)),onBlur:t[18]||(t[18]=c=>n.savePageContent("home_feature_2_title"))},null,40,xd)]),l("div",Cd,[t[110]||(t[110]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_2_text"),onInput:t[19]||(t[19]=c=>n.updateContentValue("home_feature_2_text",c.target.value)),onBlur:t[20]||(t[20]=c=>n.savePageContent("home_feature_2_text")),rows:"2"},null,40,Ed)])]),l("div",Pd,[t[114]||(t[114]=l("h4",null,"Paneel 3",-1)),l("div",Rd,[t[112]||(t[112]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_3_title"),onInput:t[21]||(t[21]=c=>n.updateContentValue("home_feature_3_title",c.target.value)),onBlur:t[22]||(t[22]=c=>n.savePageContent("home_feature_3_title"))},null,40,Ad)]),l("div",Td,[t[113]||(t[113]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_3_text"),onInput:t[23]||(t[23]=c=>n.updateContentValue("home_feature_3_text",c.target.value)),onBlur:t[24]||(t[24]=c=>n.savePageContent("home_feature_3_text")),rows:"2"},null,40,Od)])]),l("div",Md,[t[117]||(t[117]=l("h4",null,"Paneel 4",-1)),l("div",Id,[t[115]||(t[115]=l("label",null,"Koptekst",-1)),l("input",{type:"text",value:n.getContentValue("home_feature_4_title"),onInput:t[25]||(t[25]=c=>n.updateContentValue("home_feature_4_title",c.target.value)),onBlur:t[26]||(t[26]=c=>n.savePageContent("home_feature_4_title"))},null,40,jd)]),l("div",Dd,[t[116]||(t[116]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("home_feature_4_text"),onInput:t[27]||(t[27]=c=>n.updateContentValue("home_feature_4_text",c.target.value)),onBlur:t[28]||(t[28]=c=>n.savePageContent("home_feature_4_text")),rows:"2"},null,40,Vd)])])])]),l("div",Fd,[t[123]||(t[123]=l("h3",null,"Openingspagina - Knoppen Container",-1)),l("div",Bd,[l("div",Ld,[t[119]||(t[119]=l("label",null,"Hoofdtekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_title"),onInput:t[29]||(t[29]=c=>n.updateContentValue("home_cta_title",c.target.value)),onBlur:t[30]||(t[30]=c=>n.savePageContent("home_cta_title"))},null,40,Nd)]),l("div",Hd,[t[120]||(t[120]=l("label",null,"Subtekst",-1)),l("textarea",{value:n.getContentValue("home_cta_subtitle"),onInput:t[31]||(t[31]=c=>n.updateContentValue("home_cta_subtitle",c.target.value)),onBlur:t[32]||(t[32]=c=>n.savePageContent("home_cta_subtitle")),rows:"2"},null,40,qd)]),l("div",Ud,[t[121]||(t[121]=l("label",null,"Knop 1 Tekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_button_1_text"),onInput:t[33]||(t[33]=c=>n.updateContentValue("home_cta_button_1_text",c.target.value)),onBlur:t[34]||(t[34]=c=>n.savePageContent("home_cta_button_1_text"))},null,40,Kd)]),l("div",Wd,[t[122]||(t[122]=l("label",null,"Knop 2 Tekst",-1)),l("input",{type:"text",value:n.getContentValue("home_cta_button_2_text"),onInput:t[35]||(t[35]=c=>n.updateContentValue("home_cta_button_2_text",c.target.value)),onBlur:t[36]||(t[36]=c=>n.savePageContent("home_cta_button_2_text"))},null,40,Gd)])])]),l("div",zd,[t[126]||(t[126]=l("h3",null,"Boekingspagina - Header",-1)),l("div",Jd,[l("div",Yd,[t[124]||(t[124]=l("label",null,"Hoofdtekst (Header)",-1)),l("input",{type:"text",value:n.getContentValue("booking_header_title"),onInput:t[37]||(t[37]=c=>n.updateContentValue("booking_header_title",c.target.value)),onBlur:t[38]||(t[38]=c=>n.savePageContent("booking_header_title"))},null,40,Qd)]),l("div",Zd,[t[125]||(t[125]=l("label",null,"Onderschrift",-1)),l("textarea",{value:n.getContentValue("booking_header_subtitle"),onInput:t[39]||(t[39]=c=>n.updateContentValue("booking_header_subtitle",c.target.value)),onBlur:t[40]||(t[40]=c=>n.savePageContent("booking_header_subtitle")),rows:"2"},null,40,Xd)])])])])])):Oe("",!0),n.activeTab==="settings"?(U(),G("div",$d,[t[131]||(t[131]=l("div",{class:"section-header"},[l("h2",null,"Applicatie Instellingen")],-1)),l("div",eh,[l("div",th,[t[128]||(t[128]=l("label",{for:"admin_email"},"Beheer Notificatie E-mail",-1)),le(l("input",{type:"email",id:"admin_email","onUpdate:modelValue":t[41]||(t[41]=c=>n.settings.admin_notification_email=c),placeholder:"admin@voorbeeld.com"},null,512),[[_e,n.settings.admin_notification_email]]),l("button",{onClick:t[42]||(t[42]=c=>n.updateSetting("admin_notification_email",n.settings.admin_notification_email)),class:"save-btn",title:"Opslaan"}," 💾 ")]),l("div",nh,[t[129]||(t[129]=l("label",{for:"business_name"},"Bedrijfsnaam",-1)),le(l("input",{type:"text",id:"business_name","onUpdate:modelValue":t[43]||(t[43]=c=>n.settings.business_name=c),placeholder:"Fiets Service Centrum"},null,512),[[_e,n.settings.business_name]]),l("button",{onClick:t[44]||(t[44]=c=>n.updateSetting("business_name",n.settings.business_name)),class:"save-btn",title:"Opslaan"}," 💾 ")]),l("div",sh,[t[130]||(t[130]=l("label",{for:"pickup_confirmation_email_text"},"Ophaalbevestiging E-mail Tekst",-1)),le(l("textarea",{id:"pickup_confirmation_email_text","onUpdate:modelValue":t[45]||(t[45]=c=>n.settings.pickup_confirmation_email_text=c),rows:"8",placeholder:"Standaard tekst voor ophaalbevestiging e-mail"},null,512),[[_e,n.settings.pickup_confirmation_email_text]]),l("button",{onClick:t[46]||(t[46]=c=>n.updateSetting("pickup_confirmation_email_text",n.settings.pickup_confirmation_email_text)),class:"save-btn",title:"Opslaan"}," 💾 ")])])])):Oe("",!0),n.showRequestModal?(U(),G("div",{key:5,class:"modal-overlay",onClick:t[57]||(t[57]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c))},[l("div",{class:"modal-content large",onClick:t[56]||(t[56]=ft(()=>{},["stop"]))},[l("div",oh,[t[132]||(t[132]=l("h3",null,"Service Aanvraag Details",-1)),l("button",{onClick:t[47]||(t[47]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),n.selectedRequest?(U(),G("div",ih,[n.requestModalLoading?(U(),G("div",rh,[...t[133]||(t[133]=[l("div",{class:"loading-spinner"},null,-1),l("p",null,"Gegevens laden...",-1)])])):(U(),G("div",lh,[l("div",ah,[t[134]||(t[134]=l("strong",null,"Naam:",-1)),Se(" "+D(n.selectedRequest.name),1)]),l("div",ch,[t[135]||(t[135]=l("strong",null,"Adres:",-1)),Se(" "+D(n.selectedRequest.address),1)]),l("div",uh,[t[136]||(t[136]=l("strong",null,"Plaats:",-1)),Se(" "+D(n.selectedRequest.place),1)]),l("div",fh,[t[137]||(t[137]=l("strong",null,"E-mail:",-1)),Se(" "+D(n.selectedRequest.email||"Niet opgegeven"),1)]),l("div",dh,[t[138]||(t[138]=l("strong",null,"Telefoon:",-1)),Se(" "+D(n.selectedRequest.phone||"Niet opgegeven"),1)]),l("div",hh,[t[139]||(t[139]=l("strong",null,"Reparatie Beschrijving:",-1)),Se(" "+D(n.selectedRequest.repair_description),1)]),l("div",ph,[t[140]||(t[140]=l("strong",null,"Gewenste Datum/Tijd:",-1)),Se(" "+D(n.formatDateTime(n.selectedRequest.requested_date,n.selectedRequest.requested_time)),1)]),l("div",mh,[t[142]||(t[142]=l("strong",null,"Status:",-1)),le(l("select",{"onUpdate:modelValue":t[48]||(t[48]=c=>n.selectedRequest.status=c),onChange:t[49]||(t[49]=(...c)=>n.updateRequestStatus&&n.updateRequestStatus(...c))},[...t[141]||(t[141]=[gs('',5)])],544),[[Ja,n.selectedRequest.status]])]),l("div",gh,[t[143]||(t[143]=l("strong",null,"Werkelijke ophaalDatum:",-1)),le(l("input",{type:"date","onUpdate:modelValue":t[50]||(t[50]=c=>n.selectedRequest.actual_repair_date=c),onChange:t[51]||(t[51]=(...c)=>n.updateRequestDate&&n.updateRequestDate(...c))},null,544),[[_e,n.selectedRequest.actual_repair_date]])]),l("div",vh,[t[144]||(t[144]=l("strong",null,"Werkelijke ophaaltijd:",-1)),le(l("input",{type:"time","onUpdate:modelValue":t[52]||(t[52]=c=>n.selectedRequest.actual_repair_time=c),onChange:t[53]||(t[53]=(...c)=>n.updateRequestTime&&n.updateRequestTime(...c))},null,544),[[_e,n.selectedRequest.actual_repair_time]])])]))])):Oe("",!0),l("div",_h,[l("button",{onClick:t[54]||(t[54]=(...c)=>n.sendPickupConfirmation&&n.sendPickupConfirmation(...c)),class:"btn-pickup-confirmation",disabled:!((a=n.selectedRequest)!=null&&a.email)||!((u=n.selectedRequest)!=null&&u.actual_repair_date)||!((p=n.selectedRequest)!=null&&p.actual_repair_time)||n.pickupConfirmationLoading,title:"Verstuur ophaalbevestiging e-mail naar klant"},D(n.pickupConfirmationLoading?"📧 Versturen...":"📧 Ophaalbevestiging Versturen"),9,bh),l("button",{onClick:t[55]||(t[55]=(...c)=>n.closeRequestModal&&n.closeRequestModal(...c)),class:"btn-primary"},"Sluiten")])])])):Oe("",!0),n.showAddBlockedDate?(U(),G("div",{key:6,class:"modal-overlay",onClick:t[64]||(t[64]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c))},[l("div",{class:"modal-content",onClick:t[63]||(t[63]=ft(()=>{},["stop"]))},[l("div",yh,[l("h3",null,D(n.editingBlockedDate?"Bewerken":"Toevoegen")+" Geblokkeerde Datum",1),l("button",{onClick:t[58]||(t[58]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",wh,[l("div",Sh,[t[145]||(t[145]=l("label",{for:"blocked_date"},"Datum",-1)),le(l("input",{type:"date",id:"blocked_date","onUpdate:modelValue":t[59]||(t[59]=c=>n.blockedDateForm.date=c),min:n.minDate},null,8,kh),[[_e,n.blockedDateForm.date]])]),l("div",xh,[t[146]||(t[146]=l("label",{for:"blocked_reason"},"Reden (Optioneel)",-1)),le(l("textarea",{id:"blocked_reason","onUpdate:modelValue":t[60]||(t[60]=c=>n.blockedDateForm.reason=c),rows:"3"},null,512),[[_e,n.blockedDateForm.reason]])])]),l("div",Ch,[l("button",{onClick:t[61]||(t[61]=(...c)=>n.saveBlockedDate&&n.saveBlockedDate(...c)),class:"btn-primary"},"Opslaan"),l("button",{onClick:t[62]||(t[62]=(...c)=>n.closeBlockedDateModal&&n.closeBlockedDateModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Oe("",!0),n.showEmailModal?(U(),G("div",{key:7,class:"modal-overlay",onClick:t[70]||(t[70]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c))},[l("div",{class:"modal-content",onClick:t[69]||(t[69]=ft(()=>{},["stop"]))},[l("div",Eh,[l("h3",null,"E-mail Versturen naar "+D((d=n.selectedRequest)==null?void 0:d.name),1),l("button",{onClick:t[65]||(t[65]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",Ph,[l("div",Rh,[t[147]||(t[147]=l("label",{for:"email_message"},"Bericht",-1)),le(l("textarea",{id:"email_message","onUpdate:modelValue":t[66]||(t[66]=c=>n.emailForm.message=c),rows:"6",placeholder:"Voer je bericht in..."},null,512),[[_e,n.emailForm.message]])])]),l("div",Ah,[l("button",{onClick:t[67]||(t[67]=(...c)=>n.submitEmail&&n.submitEmail(...c)),class:"btn-primary",disabled:n.emailLoading},D(n.emailLoading?"Versturen...":"E-mail Versturen"),9,Th),l("button",{onClick:t[68]||(t[68]=(...c)=>n.closeEmailModal&&n.closeEmailModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Oe("",!0),n.showSmsModal?(U(),G("div",{key:8,class:"modal-overlay",onClick:t[76]||(t[76]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c))},[l("div",{class:"modal-content",onClick:t[75]||(t[75]=ft(()=>{},["stop"]))},[l("div",Oh,[l("h3",null,"SMS Versturen naar "+D((m=n.selectedRequest)==null?void 0:m.name),1),l("button",{onClick:t[71]||(t[71]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",Mh,[l("div",Ih,[t[148]||(t[148]=l("label",{for:"sms_message"},"Bericht",-1)),le(l("textarea",{id:"sms_message","onUpdate:modelValue":t[72]||(t[72]=c=>n.smsForm.message=c),rows:"6",placeholder:"Voer je bericht in..."},null,512),[[_e,n.smsForm.message]])])]),l("div",jh,[l("button",{onClick:t[73]||(t[73]=(...c)=>n.submitSms&&n.submitSms(...c)),class:"btn-primary",disabled:n.smsLoading},D(n.smsLoading?"Versturen...":"SMS Versturen"),9,Dh),l("button",{onClick:t[74]||(t[74]=(...c)=>n.closeSmsModal&&n.closeSmsModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Oe("",!0),n.showCommunicationsModal?(U(),G("div",{key:9,class:"modal-overlay",onClick:t[80]||(t[80]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c))},[l("div",{class:"modal-content large",onClick:t[79]||(t[79]=ft(()=>{},["stop"]))},[l("div",Vh,[l("h3",null,"Communicatie Geschiedenis - "+D((v=n.selectedRequest)==null?void 0:v.name),1),l("button",{onClick:t[77]||(t[77]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",Fh,[n.communications.length===0?(U(),G("div",Bh," Geen communicatie gevonden voor deze aanvraag. ")):(U(),G("div",Lh,[(U(!0),G(Pe,null,xt(n.communications,c=>(U(),G("div",{key:c.id,class:"communication-item"},[l("div",Nh,[l("span",Hh,D(n.getCommTypeText(c.type)),1),l("span",qh,D(n.getCommDirectionText(c.direction)),1),l("span",Uh,D(n.formatDateTime(c.created_at)),1)]),l("div",Kh,D(c.message),1)]))),128))]))]),l("div",Wh,[l("button",{onClick:t[78]||(t[78]=(...c)=>n.closeCommunicationsModal&&n.closeCommunicationsModal(...c)),class:"btn-primary"},"Sluiten")])])])):Oe("",!0),n.showAddPricelistItem?(U(),G("div",{key:10,class:"modal-overlay",onClick:t[90]||(t[90]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c))},[l("div",{class:"modal-content",onClick:t[89]||(t[89]=ft(()=>{},["stop"]))},[l("div",Gh,[l("h3",null,D(n.editingPricelistItem?"Bewerken":"Toevoegen")+" Prijslijst Item",1),l("button",{onClick:t[81]||(t[81]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c)),class:"close-btn",title:"Sluiten"},"×")]),l("div",zh,[l("div",Jh,[t[149]||(t[149]=l("label",{for:"pricelist_title"},"Titel",-1)),le(l("input",{type:"text",id:"pricelist_title","onUpdate:modelValue":t[82]||(t[82]=c=>n.pricelistForm.title=c),placeholder:"Bijv. Banden vervangen"},null,512),[[_e,n.pricelistForm.title]])]),l("div",Yh,[t[150]||(t[150]=l("label",{for:"pricelist_description"},"Beschrijving",-1)),le(l("textarea",{id:"pricelist_description","onUpdate:modelValue":t[83]||(t[83]=c=>n.pricelistForm.description=c),rows:"3",placeholder:"Beschrijving van de service"},null,512),[[_e,n.pricelistForm.description]])]),l("div",Qh,[t[151]||(t[151]=l("label",{for:"pricelist_price"},"Prijs (€)",-1)),le(l("input",{type:"number",id:"pricelist_price","onUpdate:modelValue":t[84]||(t[84]=c=>n.pricelistForm.price=c),step:"0.01",min:"0",placeholder:"25.00"},null,512),[[_e,n.pricelistForm.price]])]),l("div",Zh,[t[152]||(t[152]=l("label",{for:"pricelist_sort_order"},"Volgorde",-1)),le(l("input",{type:"number",id:"pricelist_sort_order","onUpdate:modelValue":t[85]||(t[85]=c=>n.pricelistForm.sort_order=c),min:"0",placeholder:"1"},null,512),[[_e,n.pricelistForm.sort_order]])]),l("div",Xh,[l("label",null,[le(l("input",{type:"checkbox","onUpdate:modelValue":t[86]||(t[86]=c=>n.pricelistForm.is_active=c)},null,512),[[Nt,n.pricelistForm.is_active]]),t[153]||(t[153]=Se(" Actief ",-1))])])]),l("div",$h,[l("button",{onClick:t[87]||(t[87]=(...c)=>n.savePricelistItem&&n.savePricelistItem(...c)),class:"btn-primary"},"Opslaan"),l("button",{onClick:t[88]||(t[88]=(...c)=>n.closePricelistModal&&n.closePricelistModal(...c)),class:"btn-secondary"},"Annuleren")])])])):Oe("",!0)])}const tp=en(ef,[["render",ep],["__scopeId","data-v-3ab599c9"]]),np={name:"Login",setup(){const e=Tr(),t=as(),s=Y({email:"",password:""}),n=Y(!1),o=Y("");return{form:s,loading:n,error:o,handleLogin:async()=>{n.value=!0,o.value="";try{const r=await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s.value)});if(!r.ok){const u=await r.json();throw new Error(u.message||"Inloggen mislukt")}const a=await r.json();t.login(a.user,a.token),e.push("/admin")}catch(r){o.value=r.message}finally{n.value=!1}}}}},sp={class:"login"},op={class:"login-container"},ip={class:"form-group"},rp=["disabled"],lp={class:"form-group"},ap=["disabled"],cp={key:0,class:"form-error"},up=["disabled"];function fp(e,t,s,n,o,i){return U(),G("div",sp,[l("div",op,[t[5]||(t[5]=l("div",{class:"login-header"},[l("h1",null,"🔐 Beheerder Login"),l("p",null,"Log in om toegang te krijgen tot het beheerpaneel")],-1)),l("form",{onSubmit:t[2]||(t[2]=ft((...r)=>n.handleLogin&&n.handleLogin(...r),["prevent"])),class:"login-form"},[l("div",ip,[t[3]||(t[3]=l("label",{for:"email"},"E-mail",-1)),le(l("input",{type:"email",id:"email","onUpdate:modelValue":t[0]||(t[0]=r=>n.form.email=r),required:"",placeholder:"admin@fietservice.nl",disabled:n.loading},null,8,rp),[[_e,n.form.email]])]),l("div",lp,[t[4]||(t[4]=l("label",{for:"password"},"Wachtwoord",-1)),le(l("input",{type:"password",id:"password","onUpdate:modelValue":t[1]||(t[1]=r=>n.form.password=r),required:"",placeholder:"Voer je wachtwoord in",disabled:n.loading},null,8,ap),[[_e,n.form.password]])]),n.error?(U(),G("div",cp,D(n.error),1)):Oe("",!0),l("button",{type:"submit",class:"login-btn",disabled:n.loading},D(n.loading?"Inloggen...":"Inloggen"),9,up)],32)])])}const dp=en(np,[["render",fp],["__scopeId","data-v-2b41928d"]]),hp={name:"Pricelist",setup(){const e=Y([]),t=Y(!0),s=async()=>{try{const n=await fetch("/api/pricelist");n.ok&&(e.value=await n.json())}catch(n){console.error("Failed to fetch pricelist:",n)}finally{t.value=!1}};return $t(()=>{s()}),{pricelist:e,loading:t}}},pp={class:"pricelist"},mp={class:"pricelist-header"},gp={key:0,class:"loading-state"},vp={key:1,class:"empty-state"},_p={key:2,class:"pricelist-grid"},bp={class:"price-header"},yp={class:"price"},wp={class:"description"},Sp={class:"cta-section"};function kp(e,t,s,n,o,i){const r=Kn("router-link");return U(),G("div",pp,[l("div",mp,[t[1]||(t[1]=l("h1",null,"💰 Prijslijst",-1)),t[2]||(t[2]=l("p",null,"Transparante prijzen voor al onze fiets service diensten",-1)),be(r,{to:"/",class:"back-btn"},{default:ot(()=>[...t[0]||(t[0]=[Se("← Terug naar Home",-1)])]),_:1})]),n.loading?(U(),G("div",gp,[...t[3]||(t[3]=[l("div",{class:"loading-spinner"},null,-1),l("p",null,"Prijzen laden...",-1)])])):n.pricelist.length===0?(U(),G("div",vp,[...t[4]||(t[4]=[l("p",null,"Geen prijzen beschikbaar op dit moment.",-1)])])):(U(),G("div",_p,[(U(!0),G(Pe,null,xt(n.pricelist,a=>(U(),G("div",{key:a.id,class:"price-card"},[l("div",bp,[l("h3",null,D(a.title),1),l("div",yp,"€"+D(a.price),1)]),l("p",wp,D(a.description),1)]))),128))])),l("div",Sp,[t[6]||(t[6]=l("h2",null,"Klaar om je afspraak te boeken?",-1)),t[7]||(t[7]=l("p",null,"Boek nu je service afspraak online!",-1)),be(r,{to:"/booking",class:"cta-button"},{default:ot(()=>[...t[5]||(t[5]=[Se("Nu Boeken",-1)])]),_:1})])])}const xp=en(hp,[["render",kp],["__scopeId","data-v-a4add45b"]]),Cp=[{path:"/",name:"Home",component:ku},{path:"/pricelist",name:"Pricelist",component:xp},{path:"/booking",name:"Booking",component:$u},{path:"/login",name:"Login",component:dp},{path:"/admin",name:"Admin",component:tp,meta:{requiresAuth:!0}}],Or=uu({history:Lc(),routes:Cp});Or.beforeEach((e,t,s)=>{if(e.meta.requiresAuth&&!as().isAuthenticated){s("/login");return}s()});const Ep="/images/bikeservice_logo_navbar.svg",Pp={name:"App",setup(){const e=as();return $t(()=>{e.checkAuth()}),{isAuthenticated:e.isAuthenticated}}},Rp={id:"app"},Ap={class:"navbar"},Tp={class:"nav-container"},Op={class:"nav-menu"},Mp={class:"main-content"};function Ip(e,t,s,n,o,i){const r=Kn("router-link"),a=Kn("router-view");return U(),G("div",Rp,[l("nav",Ap,[l("div",Tp,[be(r,{to:"/",class:"nav-logo"},{default:ot(()=>[...t[0]||(t[0]=[l("img",{src:Ep,alt:"Bike Service Logo",class:"logo-image"},null,-1)])]),_:1}),l("div",Op,[be(r,{to:"/",class:"nav-link"},{default:ot(()=>[...t[1]||(t[1]=[Se("Home",-1)])]),_:1}),be(r,{to:"/booking",class:"nav-link"},{default:ot(()=>[...t[2]||(t[2]=[Se("Service Boeken",-1)])]),_:1}),n.isAuthenticated?(U(),Ts(r,{key:0,to:"/admin",class:"nav-link"},{default:ot(()=>[...t[3]||(t[3]=[Se("Beheer",-1)])]),_:1})):(U(),Ts(r,{key:1,to:"/login",class:"nav-link"},{default:ot(()=>[...t[4]||(t[4]=[Se("Beheer Login",-1)])]),_:1}))])])]),l("main",Mp,[be(a)])])}const jp=en(Pp,[["render",Ip]]),oo=$a(jp),Dp=nc();oo.use(Dp);oo.use(Or);oo.mount("#app"); diff --git a/backend/public/assets/index-Te_wrVZr.css b/backend/public/assets/index-Te_wrVZr.css new file mode 100644 index 0000000..869c35f --- /dev/null +++ b/backend/public/assets/index-Te_wrVZr.css @@ -0,0 +1 @@ +.home[data-v-1cfd578a]{text-align:center}.hero[data-v-1cfd578a]{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);color:#fff;padding:4rem 2rem;border-radius:15px;margin-bottom:3rem;box-shadow:0 4px 20px #2c5f5d4d}.hero h1[data-v-1cfd578a]{font-size:3rem;margin-bottom:1rem}.hero p[data-v-1cfd578a]{font-size:1.2rem;opacity:.9}.features[data-v-1cfd578a]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-bottom:3rem}.feature-card[data-v-1cfd578a]{background:#fff;padding:2rem;border-radius:10px;box-shadow:0 4px 15px #0000001a;transition:transform .3s ease}.feature-card[data-v-1cfd578a]:hover{transform:translateY(-5px)}.feature-card h3[data-v-1cfd578a]{color:var(--primary-color);margin-bottom:1rem;font-size:1.3rem}.feature-card p[data-v-1cfd578a]{color:var(--text-gray);line-height:1.6}.cta[data-v-1cfd578a]{background:linear-gradient(135deg,#f8f9fa,#fff);padding:3rem 2rem;border-radius:15px;border:3px solid var(--primary-color);box-shadow:0 4px 20px #2c5f5d26}.cta h2[data-v-1cfd578a]{color:var(--primary-color);margin-bottom:1rem}.cta p[data-v-1cfd578a]{color:var(--text-gray);font-size:1.1rem;margin-bottom:2rem}.cta-buttons[data-v-1cfd578a]{display:flex;gap:1rem;justify-content:center}.cta-button[data-v-1cfd578a]{display:inline-block;background:var(--primary-color);color:#fff;padding:1rem 2rem;text-decoration:none;border-radius:10px;font-size:1.1rem;font-weight:700;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.cta-button[data-v-1cfd578a]:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.cta-button.secondary[data-v-1cfd578a]{background:var(--secondary-color);box-shadow:0 4px 10px #8b6f474d}.cta-button.secondary[data-v-1cfd578a]:hover{background:var(--secondary-dark);box-shadow:0 6px 15px #8b6f4766}.contact-section[data-v-1cfd578a]{background:#fff;padding:3rem 2rem;border-radius:15px;margin-top:3rem;box-shadow:0 4px 15px #0000001a}.contact-section h2[data-v-1cfd578a]{color:var(--primary-color);margin-bottom:1rem;font-size:2rem}.contact-subtitle[data-v-1cfd578a]{color:var(--text-gray);font-size:1.1rem;margin-bottom:2rem}.contact-info[data-v-1cfd578a]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;margin-top:2rem}.contact-item[data-v-1cfd578a]{display:flex;align-items:flex-start;gap:1rem;padding:1.5rem;background:#f8f9fa;border-radius:10px;border:2px solid #e1e8ed;transition:all .3s ease}.contact-item[data-v-1cfd578a]:hover{border-color:var(--primary-color);box-shadow:0 4px 10px #2c5f5d33;transform:translateY(-2px)}.contact-icon[data-v-1cfd578a]{font-size:2.5rem;flex-shrink:0}.contact-details[data-v-1cfd578a]{text-align:left;flex:1}.contact-details h4[data-v-1cfd578a]{color:var(--primary-color);margin:0 0 .5rem;font-size:1.1rem}.contact-details p[data-v-1cfd578a]{color:#2c3e50;margin:0;line-height:1.6}.contact-details a[data-v-1cfd578a]{color:var(--secondary-color);text-decoration:none;font-weight:500;transition:color .3s ease}.contact-details a[data-v-1cfd578a]:hover{color:var(--secondary-dark);text-decoration:underline}@media (max-width: 768px){.hero h1[data-v-1cfd578a]{font-size:2rem}.cta-buttons[data-v-1cfd578a]{flex-direction:column}.contact-info[data-v-1cfd578a]{grid-template-columns:1fr}}.booking[data-v-3d2c946f]{max-width:800px;margin:0 auto}.booking-header[data-v-3d2c946f]{text-align:center;margin-bottom:3rem}.booking-header h1[data-v-3d2c946f]{color:var(--primary-color);font-size:2.5rem;margin-bottom:1rem}.booking-header p[data-v-3d2c946f]{color:var(--text-gray);font-size:1.2rem}.booking-form-container[data-v-3d2c946f]{background:#fff;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a}.booking-form[data-v-3d2c946f]{display:flex;flex-direction:column;gap:1.5rem}.form-row[data-v-3d2c946f]{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.form-row .full-width[data-v-3d2c946f]{grid-column:1 / -1}.form-group[data-v-3d2c946f]{display:flex;flex-direction:column}.form-group label[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);margin-bottom:.5rem}.form-group input[data-v-3d2c946f],.form-group textarea[data-v-3d2c946f]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-group input[data-v-3d2c946f]:focus,.form-group textarea[data-v-3d2c946f]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2c5f5d1a}.form-group textarea[data-v-3d2c946f]{resize:vertical;min-height:80px}.custom-date-picker[data-v-3d2c946f]{border:2px solid #e1e8ed;border-radius:8px;overflow:hidden;background:#fff}.date-picker-header[data-v-3d2c946f]{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f8f9fa;border-bottom:1px solid #e1e8ed}.nav-btn[data-v-3d2c946f]{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:4px;transition:background-color .3s ease}.nav-btn[data-v-3d2c946f]:hover{background:#e1e8ed}.current-month[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);text-transform:capitalize}.date-picker-grid[data-v-3d2c946f]{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e1e8ed}.weekday-header[data-v-3d2c946f]{background:#f8f9fa;padding:.75rem;text-align:center;font-weight:700;color:var(--primary-color);font-size:.875rem}.calendar-date[data-v-3d2c946f]{background:#fff;padding:.75rem;text-align:center;cursor:pointer;transition:all .3s ease;border:none;font-size:.875rem}.calendar-date[data-v-3d2c946f]:hover:not(.disabled):not(.blocked){background:#e3f2fd}.calendar-date.other-month[data-v-3d2c946f]{color:#bdc3c7;background:#f8f9fa}.calendar-date.disabled[data-v-3d2c946f]{color:#bdc3c7;background:#f8f9fa;cursor:not-allowed}.calendar-date.blocked[data-v-3d2c946f]{color:#dc3545;background:#f8d7da;cursor:not-allowed;position:relative}.calendar-date.blocked[data-v-3d2c946f]:after{content:"🚫";position:absolute;top:2px;right:2px;font-size:.75rem}.calendar-date.selected[data-v-3d2c946f]{background:var(--primary-color);color:#fff;font-weight:700}.calendar-date.today[data-v-3d2c946f]{font-weight:700;color:var(--primary-color);border:2px solid var(--primary-color)}.calendar-date.today.selected[data-v-3d2c946f]{color:#fff}.form-error[data-v-3d2c946f]{background:#fee;color:#c53030;padding:1rem;border-radius:8px;border:1px solid #feb2b2;text-align:center}.form-actions[data-v-3d2c946f]{text-align:center;margin-top:1rem}.submit-btn[data-v-3d2c946f]{background:var(--primary-color);color:#fff;border:none;padding:1rem 2rem;border-radius:10px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.submit-btn[data-v-3d2c946f]:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.submit-btn[data-v-3d2c946f]:disabled{background:#bdc3c7;cursor:not-allowed}.modal-overlay[data-v-3d2c946f]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-3d2c946f]{background:#fff;border-radius:15px;padding:2rem;max-width:500px;width:90%;box-shadow:0 10px 30px #0000004d}.modal-header[data-v-3d2c946f]{text-align:center;margin-bottom:1.5rem}.modal-header h3[data-v-3d2c946f]{color:var(--primary-color);font-size:1.5rem}.modal-body[data-v-3d2c946f]{margin-bottom:2rem}.modal-body p[data-v-3d2c946f]{color:#666;line-height:1.6;margin-bottom:1rem}.modal-footer[data-v-3d2c946f]{text-align:center}.btn-primary[data-v-3d2c946f]{background:var(--primary-color);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;cursor:pointer;font-size:1rem;transition:all .3s ease;box-shadow:0 2px 6px #2c5f5d4d}.btn-primary[data-v-3d2c946f]:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 10px #2c5f5d66}@media (max-width: 768px){.form-row[data-v-3d2c946f]{grid-template-columns:1fr}.booking-form-container[data-v-3d2c946f]{padding:1.5rem}}.admin[data-v-ed1f8971]{max-width:1200px;margin:0 auto}.admin-header[data-v-ed1f8971]{text-align:center;margin-bottom:3rem}.admin-header h1[data-v-ed1f8971]{color:var(--primary-color);font-size:2.5rem;margin-bottom:1rem}.admin-header p[data-v-ed1f8971]{color:var(--text-gray);font-size:1.2rem;margin-bottom:1rem}.admin-user-info[data-v-ed1f8971]{display:flex;justify-content:center;align-items:center;gap:1rem;background:#f8f9fa;padding:1rem;border-radius:8px;border:1px solid #e1e8ed}.admin-user-info span[data-v-ed1f8971]{color:#2c3e50;font-weight:500}.logout-btn[data-v-ed1f8971]{background:#dc3545;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background-color .3s ease}.logout-btn[data-v-ed1f8971]:hover{background:#c82333}.admin-tabs[data-v-ed1f8971]{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:2px solid #e1e8ed}.tab-button[data-v-ed1f8971]{background:none;border:none;padding:1rem 2rem;font-size:1rem;cursor:pointer;border-bottom:3px solid transparent;transition:all .3s ease}.tab-button.active[data-v-ed1f8971]{border-bottom-color:var(--primary-color);color:var(--primary-color);font-weight:700}.tab-button[data-v-ed1f8971]:hover{background:#f8f9fa}.tab-content[data-v-ed1f8971]{background:#fff;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a}.section-header[data-v-ed1f8971]{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.section-header h2[data-v-ed1f8971]{color:var(--primary-color);margin:0}.status-filter[data-v-ed1f8971]{background:#f8f9fa;padding:1rem;border-radius:10px;margin-bottom:1.5rem;border:2px solid #e1e8ed}.filter-title[data-v-ed1f8971]{font-weight:700;color:#2c3e50;margin-bottom:.75rem;font-size:.95rem}.filter-checkboxes[data-v-ed1f8971]{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.filter-checkbox[data-v-ed1f8971]{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background-color .3s ease}.filter-checkbox[data-v-ed1f8971]:hover{background:#fff}.filter-checkbox input[type=checkbox][data-v-ed1f8971]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color)}.checkbox-label[data-v-ed1f8971]{display:flex;align-items:center;-webkit-user-select:none;user-select:none}.filter-checkbox .status-badge[data-v-ed1f8971]{font-size:.85rem;padding:.4rem .8rem;cursor:pointer}.refresh-btn[data-v-ed1f8971],.add-btn[data-v-ed1f8971]{background:var(--primary-color);color:#fff;border:none;width:40px;height:40px;border-radius:8px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.refresh-btn[data-v-ed1f8971]:hover:not(:disabled),.add-btn[data-v-ed1f8971]:hover{background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 4px 8px #2c5f5d4d}.refresh-btn[data-v-ed1f8971]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.refresh-btn[title][data-v-ed1f8971]:hover:after,.add-btn[title][data-v-ed1f8971]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.refresh-btn[title][data-v-ed1f8971]:hover:before,.add-btn[title][data-v-ed1f8971]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.requests-table[data-v-ed1f8971]{border:1px solid #e1e8ed;border-radius:8px;overflow:hidden}.table-header[data-v-ed1f8971]{display:grid;grid-template-columns:80px 1fr 200px 120px 200px;background:#f8f9fa;font-weight:700;color:#2c3e50}.header-cell[data-v-ed1f8971]{padding:1rem;border-right:1px solid #e1e8ed}.header-cell[data-v-ed1f8971]:last-child{border-right:none}.table-row[data-v-ed1f8971]{display:grid;grid-template-columns:80px 1fr 200px 120px 200px;border-bottom:1px solid #e1e8ed;transition:background-color .3s ease}.table-row[data-v-ed1f8971]:hover{background:#f8f9fa}.table-row[data-v-ed1f8971]:last-child{border-bottom:none}.cell[data-v-ed1f8971]{padding:1rem;border-right:1px solid #e1e8ed;display:flex;align-items:center}.cell[data-v-ed1f8971]:last-child{border-right:none}.status-badge[data-v-ed1f8971]{padding:.25rem .75rem;border-radius:20px;font-size:.875rem;font-weight:700;text-transform:capitalize}.status-badge.pending[data-v-ed1f8971]{background:#fff3cd;color:#856404}.status-badge.confirmed[data-v-ed1f8971]{background:#d1ecf1;color:#0c5460}.status-badge.mail_sent[data-v-ed1f8971]{background:#e7d4c5;color:#6d5637;font-weight:700}.status-badge.completed[data-v-ed1f8971]{background:#d4edda;color:#155724}.status-badge.cancelled[data-v-ed1f8971]{background:#f8d7da;color:#721c24}.actions[data-v-ed1f8971]{gap:.5rem;justify-content:center}.action-btn[data-v-ed1f8971]{background:#6c757d;color:#fff;border:none;width:40px;height:40px;border-radius:6px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.action-btn[data-v-ed1f8971]:hover:not(:disabled){background:#5a6268;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.action-btn[data-v-ed1f8971]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.action-btn.view[data-v-ed1f8971]{background:#17a2b8}.action-btn.view[data-v-ed1f8971]:hover:not(:disabled){background:#138496}.action-btn.email[data-v-ed1f8971]{background:#28a745}.action-btn.email[data-v-ed1f8971]:hover:not(:disabled){background:#218838}.action-btn.sms[data-v-ed1f8971]{background:#ffc107;color:#212529}.action-btn.sms[data-v-ed1f8971]:hover:not(:disabled){background:#e0a800}.action-btn.comm[data-v-ed1f8971]{background:#6f42c1}.action-btn.comm[data-v-ed1f8971]:hover:not(:disabled){background:#5a32a3}.action-btn.edit[data-v-ed1f8971]{background:#17a2b8}.action-btn.edit[data-v-ed1f8971]:hover:not(:disabled){background:#138496}.action-btn.delete[data-v-ed1f8971]{background:#dc3545}.action-btn.delete[data-v-ed1f8971]:hover:not(:disabled){background:#c82333}.pricelist-table[data-v-ed1f8971]{border:1px solid #e1e8ed;border-radius:8px;overflow:hidden}.pricelist-table .table-header[data-v-ed1f8971]{display:grid;grid-template-columns:1fr 2fr 100px 80px 100px 120px;background:#f8f9fa;font-weight:700;color:#2c3e50}.pricelist-table .table-row[data-v-ed1f8971]{display:grid;grid-template-columns:1fr 2fr 100px 80px 100px 120px;border-bottom:1px solid #e1e8ed;transition:background-color .3s ease}.pricelist-table .table-row[data-v-ed1f8971]:hover{background:#f8f9fa}.pricelist-table .table-row[data-v-ed1f8971]:last-child{border-bottom:none}.status-badge.active[data-v-ed1f8971]{background:#d4edda;color:#155724}.status-badge.inactive[data-v-ed1f8971]{background:#f8d7da;color:#721c24}.action-btn[title][data-v-ed1f8971]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.action-btn[title][data-v-ed1f8971]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.loading-row[data-v-ed1f8971],.empty-row[data-v-ed1f8971]{grid-column:1 / -1;padding:2rem;text-align:center;color:#666}.blocked-dates-list[data-v-ed1f8971]{display:flex;flex-direction:column;gap:1rem}.blocked-date-item[data-v-ed1f8971]{display:flex;justify-content:space-between;align-items:center;padding:1rem;border:1px solid #e1e8ed;border-radius:8px;background:#f8f9fa}.date-info[data-v-ed1f8971]{display:flex;flex-direction:column;gap:.5rem}.date[data-v-ed1f8971]{font-weight:700;color:#2c3e50}.reason[data-v-ed1f8971]{color:#666;font-size:.875rem}.date-actions[data-v-ed1f8971]{display:flex;gap:.5rem}.edit-btn[data-v-ed1f8971],.delete-btn[data-v-ed1f8971]{border:none;width:40px;height:40px;border-radius:6px;cursor:pointer;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.edit-btn[data-v-ed1f8971]{background:#17a2b8;color:#fff}.edit-btn[data-v-ed1f8971]:hover{background:#138496;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.delete-btn[data-v-ed1f8971]{background:#dc3545;color:#fff}.delete-btn[data-v-ed1f8971]:hover{background:#c82333;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.edit-btn[title][data-v-ed1f8971]:hover:after,.delete-btn[title][data-v-ed1f8971]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.edit-btn[title][data-v-ed1f8971]:hover:before,.delete-btn[title][data-v-ed1f8971]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.settings-form[data-v-ed1f8971]{display:flex;flex-direction:column;gap:2rem}.setting-group[data-v-ed1f8971]{display:flex;flex-direction:column;gap:.5rem}.setting-group label[data-v-ed1f8971]{font-weight:700;color:#2c3e50}.setting-group input[data-v-ed1f8971],.setting-group textarea[data-v-ed1f8971]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;font-family:inherit}.setting-group input[data-v-ed1f8971]:focus,.setting-group textarea[data-v-ed1f8971]:focus{outline:none;border-color:var(--primary-color)}.setting-group textarea[data-v-ed1f8971]{resize:vertical;min-height:120px}.save-btn[data-v-ed1f8971]{background:#28a745;color:#fff;border:none;width:40px;height:40px;border-radius:8px;cursor:pointer;align-self:flex-start;font-size:1.2rem;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.save-btn[data-v-ed1f8971]:hover{background:#218838;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.save-btn[title][data-v-ed1f8971]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.save-btn[title][data-v-ed1f8971]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.modal-overlay[data-v-ed1f8971]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content[data-v-ed1f8971]{background:#fff;border-radius:15px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 30px #0000004d}.modal-content.large[data-v-ed1f8971]{max-width:800px}.modal-header[data-v-ed1f8971]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e1e8ed}.modal-header h3[data-v-ed1f8971]{color:#2c3e50;margin:0}.close-btn[data-v-ed1f8971]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .3s ease;position:relative}.close-btn[data-v-ed1f8971]:hover{color:#333;background:#f8f9fa}.close-btn[title][data-v-ed1f8971]:hover:after{content:attr(title);position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:.5rem;border-radius:4px;font-size:.75rem;white-space:nowrap;z-index:1000;margin-bottom:.5rem;box-shadow:0 2px 8px #0000004d}.close-btn[title][data-v-ed1f8971]:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333;margin-bottom:-.5rem;z-index:1000}.modal-body[data-v-ed1f8971]{margin-bottom:2rem}.modal-footer[data-v-ed1f8971]{display:flex;gap:1rem;justify-content:flex-end}.btn-primary[data-v-ed1f8971],.btn-secondary[data-v-ed1f8971]{padding:.75rem 1.5rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;transition:background-color .3s ease}.btn-primary[data-v-ed1f8971]{background:var(--primary-color);color:#fff}.btn-primary[data-v-ed1f8971]:hover:not(:disabled){background:var(--primary-dark);box-shadow:0 4px 10px #2c5f5d4d}.btn-secondary[data-v-ed1f8971]{background:#6c757d;color:#fff}.btn-secondary[data-v-ed1f8971]:hover{background:#5a6268}.btn-pickup-confirmation[data-v-ed1f8971]{padding:.75rem 1.5rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;transition:all .3s ease;background:var(--secondary-color);color:#fff;font-weight:700}.btn-pickup-confirmation[data-v-ed1f8971]:hover:not(:disabled){background:var(--secondary-dark);box-shadow:0 4px 10px #8b6f474d;transform:translateY(-2px)}.btn-pickup-confirmation[data-v-ed1f8971]:disabled{background:#bdc3c7;cursor:not-allowed;opacity:.6}.form-group[data-v-ed1f8971]{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.form-group label[data-v-ed1f8971]{font-weight:700;color:#2c3e50}.form-group input[data-v-ed1f8971],.form-group textarea[data-v-ed1f8971]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem}.form-group input[data-v-ed1f8971]:focus,.form-group textarea[data-v-ed1f8971]:focus{outline:none;border-color:#3498db}.form-group textarea[data-v-ed1f8971]{resize:vertical;min-height:80px}.request-details[data-v-ed1f8971]{display:flex;flex-direction:column;gap:1rem}.detail-row[data-v-ed1f8971]{display:flex;gap:1rem;align-items:center}.detail-row strong[data-v-ed1f8971]{min-width:150px;color:#2c3e50}.detail-row input[data-v-ed1f8971],.detail-row select[data-v-ed1f8971]{padding:.5rem;border:1px solid #e1e8ed;border-radius:4px;flex:1}.no-communications[data-v-ed1f8971]{text-align:center;color:#666;padding:2rem}.communications-list[data-v-ed1f8971]{display:flex;flex-direction:column;gap:1rem}.communication-item[data-v-ed1f8971]{border:1px solid #e1e8ed;border-radius:8px;padding:1rem;background:#f8f9fa}.comm-header[data-v-ed1f8971]{display:flex;gap:1rem;margin-bottom:.5rem;font-size:.875rem}.comm-type[data-v-ed1f8971]{background:#3498db;color:#fff;padding:.25rem .5rem;border-radius:4px;font-weight:700}.comm-direction[data-v-ed1f8971]{color:#666}.comm-date[data-v-ed1f8971]{color:#666;margin-left:auto}.comm-message[data-v-ed1f8971]{color:#2c3e50;line-height:1.5}.loading-state[data-v-ed1f8971]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#666}.loading-spinner[data-v-ed1f8971]{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin-ed1f8971 1s linear infinite;margin-bottom:1rem}@keyframes spin-ed1f8971{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.admin-tabs[data-v-ed1f8971]{flex-direction:column}.table-header[data-v-ed1f8971],.table-row[data-v-ed1f8971]{grid-template-columns:1fr;gap:.5rem}.header-cell[data-v-ed1f8971],.cell[data-v-ed1f8971]{border-right:none;border-bottom:1px solid #e1e8ed}.actions[data-v-ed1f8971]{flex-direction:row;justify-content:center;gap:.5rem}.blocked-date-item[data-v-ed1f8971]{flex-direction:column;gap:1rem;align-items:flex-start}.modal-content[data-v-ed1f8971]{margin:1rem;width:calc(100% - 2rem)}.admin-user-info[data-v-ed1f8971]{flex-direction:column;gap:.5rem}}.content-sections[data-v-ed1f8971]{display:flex;flex-direction:column;gap:2rem}.content-section[data-v-ed1f8971]{background:#f8f9fa;padding:1.5rem;border-radius:10px;border:1px solid #e1e8ed}.content-section h3[data-v-ed1f8971]{color:#2c3e50;margin-bottom:1rem;font-size:1.3rem}.content-section h4[data-v-ed1f8971]{color:#2c3e50;margin-bottom:.75rem;font-size:1.1rem}.content-form[data-v-ed1f8971]{display:flex;flex-direction:column;gap:1rem}.feature-group[data-v-ed1f8971]{background:#fff;padding:1rem;border-radius:8px;border:1px solid #e1e8ed}.feature-group[data-v-ed1f8971]:not(:last-child){margin-bottom:1rem}.content-form .form-group[data-v-ed1f8971]{margin-bottom:.5rem}.content-form .form-group label[data-v-ed1f8971]{font-weight:600;color:#2c3e50;margin-bottom:.5rem;display:block}.content-form .form-group input[data-v-ed1f8971],.content-form .form-group textarea[data-v-ed1f8971]{width:100%;padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.content-form .form-group input[data-v-ed1f8971]:focus,.content-form .form-group textarea[data-v-ed1f8971]:focus{outline:none;border-color:var(--primary-color);background:#f8f9fa;box-shadow:0 0 0 3px #2c5f5d1a}.content-form .form-group textarea[data-v-ed1f8971]{resize:vertical;font-family:inherit}.login[data-v-2b41928d]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);padding:2rem}.login-container[data-v-2b41928d]{background:#fff;border-radius:15px;padding:3rem;box-shadow:0 10px 30px #0000004d;max-width:400px;width:100%}.login-header[data-v-2b41928d]{text-align:center;margin-bottom:2rem}.login-header h1[data-v-2b41928d]{color:var(--primary-color);font-size:2rem;margin-bottom:.5rem}.login-header p[data-v-2b41928d]{color:var(--text-gray);font-size:1rem}.login-form[data-v-2b41928d]{display:flex;flex-direction:column;gap:1.5rem}.form-group[data-v-2b41928d]{display:flex;flex-direction:column;gap:.5rem}.form-group label[data-v-2b41928d]{font-weight:700;color:var(--primary-color);font-size:.9rem}.form-group input[data-v-2b41928d]{padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-group input[data-v-2b41928d]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2c5f5d1a}.form-group input[data-v-2b41928d]:disabled{background:#f8f9fa;cursor:not-allowed}.form-error[data-v-2b41928d]{background:#fee;color:#c53030;padding:1rem;border-radius:8px;border:1px solid #feb2b2;text-align:center;font-size:.9rem}.login-btn[data-v-2b41928d]{background:var(--primary-color);color:#fff;border:none;padding:1rem;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 10px #2c5f5d4d}.login-btn[data-v-2b41928d]:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-2px);box-shadow:0 6px 15px #2c5f5d66}.login-btn[data-v-2b41928d]:disabled{background:#bdc3c7;cursor:not-allowed}.login-info[data-v-2b41928d]{margin-top:2rem;padding:1.5rem;background:#f8f9fa;border-radius:8px;border:1px solid #e1e8ed}.login-info p[data-v-2b41928d]{margin:.5rem 0;color:#666;font-size:.9rem}.login-info strong[data-v-2b41928d]{color:var(--primary-color)}@media (max-width: 480px){.login-container[data-v-2b41928d]{padding:2rem}.login-header h1[data-v-2b41928d]{font-size:1.75rem}}.pricelist[data-v-a4add45b]{max-width:1200px;margin:0 auto;padding:2rem}.pricelist-header[data-v-a4add45b]{text-align:center;margin-bottom:3rem}.pricelist-header h1[data-v-a4add45b]{color:#2c3e50;font-size:3rem;margin-bottom:1rem}.pricelist-header p[data-v-a4add45b]{color:#666;font-size:1.2rem;margin-bottom:2rem}.back-btn[data-v-a4add45b]{display:inline-block;background:var(--secondary-color);color:#fff;padding:.75rem 1.5rem;text-decoration:none;border-radius:8px;font-size:1rem;transition:background-color .3s ease}.back-btn[data-v-a4add45b]:hover{background:var(--secondary-dark)}.loading-state[data-v-a4add45b],.empty-state[data-v-a4add45b]{text-align:center;padding:4rem;color:#666}.loading-spinner[data-v-a4add45b]{border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);border-radius:50%;width:50px;height:50px;animation:spin-a4add45b 1s linear infinite;margin:0 auto 1rem}@keyframes spin-a4add45b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pricelist-grid[data-v-a4add45b]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;margin-bottom:4rem}.price-card[data-v-a4add45b]{background:#fff;border:2px solid #e1e8ed;border-radius:15px;padding:2rem;box-shadow:0 4px 15px #0000001a;transition:all .3s ease}.price-card[data-v-a4add45b]:hover{transform:translateY(-5px);box-shadow:0 8px 25px #00000026;border-color:var(--primary-color)}.price-header[data-v-a4add45b]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #f8f9fa}.price-header h3[data-v-a4add45b]{color:#2c3e50;margin:0;font-size:1.3rem}.price[data-v-a4add45b]{background:var(--primary-color);color:#fff;padding:.5rem 1rem;border-radius:25px;font-size:1.2rem;font-weight:700}.description[data-v-a4add45b]{color:#666;line-height:1.6;margin:0}.cta-section[data-v-a4add45b]{text-align:center;background:#f8f9fa;padding:3rem 2rem;border-radius:15px;border:2px dashed var(--primary-color)}.cta-section h2[data-v-a4add45b]{color:#2c3e50;margin-bottom:1rem}.cta-section p[data-v-a4add45b]{color:#666;font-size:1.1rem;margin-bottom:2rem}.cta-button[data-v-a4add45b]{display:inline-block;background:var(--primary-color);color:#fff;padding:1rem 2rem;text-decoration:none;border-radius:10px;font-size:1.1rem;font-weight:700;transition:background-color .3s ease}.cta-button[data-v-a4add45b]:hover{background:var(--primary-dark)}@media (max-width: 768px){.pricelist[data-v-a4add45b]{padding:1rem}.pricelist-header h1[data-v-a4add45b]{font-size:2rem}.pricelist-grid[data-v-a4add45b]{grid-template-columns:1fr;gap:1rem}.price-header[data-v-a4add45b]{flex-direction:column;text-align:center;gap:1rem}}:root{--primary-color: #2c5f5d;--primary-dark: #1f4443;--primary-light: #3d7a77;--secondary-color: #8b6f47;--secondary-dark: #6d5637;--secondary-light: #a68a5f;--text-dark: #2c3e50;--text-gray: #666;--bg-light: #f5f5f5;--bg-white: #ffffff}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:var(--bg-light)}.navbar{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-light) 100%);padding:.5rem 0;box-shadow:0 2px 10px #2c5f5d33}.nav-container{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:0 2rem}.nav-logo{display:flex;align-items:center;text-decoration:none}.logo-image{height:70px;width:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .3s ease}.logo-image:hover{transform:scale(1.05)}.nav-menu{display:flex;gap:2rem;align-items:center}.nav-link{color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:5px;transition:all .3s ease;font-weight:500}.nav-link:hover{background-color:#ffffff26;transform:translateY(-1px)}.nav-link.router-link-active{background-color:var(--secondary-color)}.main-content{max-width:1200px;margin:2rem auto;padding:0 2rem}@media (max-width: 768px){.nav-container{flex-direction:column;gap:1rem;padding:1rem}.logo-image{height:75px}.nav-menu{flex-wrap:wrap;justify-content:center;gap:1rem}.nav-link{padding:.4rem .8rem;font-size:.9rem}}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333;background-color:#f5f5f5}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.p-4{padding:2rem}.btn{display:inline-block;padding:.5rem 1rem;border:none;border-radius:5px;cursor:pointer;text-decoration:none;font-size:1rem;transition:all .3s ease}.btn-primary{background:#667eea;color:#fff}.btn-primary:hover{background:#5a6fd8}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268}.card{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:1.5rem;margin-bottom:1rem}@media (max-width: 768px){.nav-container{flex-direction:column;gap:1rem}.nav-menu{gap:1rem}.hero h1{font-size:2rem}.features{grid-template-columns:1fr}} diff --git a/backend/public/index.html b/backend/public/index.html index 36dacaf..df9c5d0 100644 --- a/backend/public/index.html +++ b/backend/public/index.html @@ -6,8 +6,8 @@ Bike Service - Jouw fiets, onze zorg - - + +
diff --git a/frontend/src/views/Admin.vue b/frontend/src/views/Admin.vue index 71f45b3..97db3cc 100644 --- a/frontend/src/views/Admin.vue +++ b/frontend/src/views/Admin.vue @@ -285,6 +285,33 @@ + + +
+

Openingspagina - Contact Sectie

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
diff --git a/frontend/src/views/Home.vue b/frontend/src/views/Home.vue index 5c16a7e..34c931f 100644 --- a/frontend/src/views/Home.vue +++ b/frontend/src/views/Home.vue @@ -35,6 +35,37 @@ {{ content.home_cta_button_2_text || '💰 Prijslijst Bekijken' }} + +
+

{{ content.home_contact_title || 'Neem Contact Op' }}

+

{{ content.home_contact_subtitle || 'Heeft u vragen of wilt u meer informatie? Neem gerust contact met ons op!' }}

+ +
+
+
📞
+ +
+ +
+
📧
+ +
+ +
+
📍
+
+

Adres

+

{{ content.home_contact_address }}

+
+
+
+
@@ -175,4 +206,96 @@ export default { background: var(--secondary-dark); box-shadow: 0 6px 15px rgba(139, 111, 71, 0.4); } + +.contact-section { + background: white; + padding: 3rem 2rem; + border-radius: 15px; + margin-top: 3rem; + box-shadow: 0 4px 15px rgba(0,0,0,0.1); +} + +.contact-section h2 { + color: var(--primary-color); + margin-bottom: 1rem; + font-size: 2rem; +} + +.contact-subtitle { + color: var(--text-gray); + font-size: 1.1rem; + margin-bottom: 2rem; +} + +.contact-info { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.contact-item { + display: flex; + align-items: flex-start; + gap: 1rem; + padding: 1.5rem; + background: #f8f9fa; + border-radius: 10px; + border: 2px solid #e1e8ed; + transition: all 0.3s ease; +} + +.contact-item:hover { + border-color: var(--primary-color); + box-shadow: 0 4px 10px rgba(44, 95, 93, 0.2); + transform: translateY(-2px); +} + +.contact-icon { + font-size: 2.5rem; + flex-shrink: 0; +} + +.contact-details { + text-align: left; + flex: 1; +} + +.contact-details h4 { + color: var(--primary-color); + margin: 0 0 0.5rem 0; + font-size: 1.1rem; +} + +.contact-details p { + color: #2c3e50; + margin: 0; + line-height: 1.6; +} + +.contact-details a { + color: var(--secondary-color); + text-decoration: none; + font-weight: 500; + transition: color 0.3s ease; +} + +.contact-details a:hover { + color: var(--secondary-dark); + text-decoration: underline; +} + +@media (max-width: 768px) { + .hero h1 { + font-size: 2rem; + } + + .cta-buttons { + flex-direction: column; + } + + .contact-info { + grid-template-columns: 1fr; + } +} diff --git a/frontend/vite.config.js b/frontend/vite.config.js index d8e2ddf..ea4f141 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -13,7 +13,7 @@ export default defineConfig({ port: 3000, proxy: { '/api': { - target: 'http://localhost:8001', + target: 'http://localhost:8000', changeOrigin: true, }, },