UNPKG

besper-frontend-site-dev-main

Version:

Professional B-esper Frontend Site - Site-wide integration toolkit for full website bot deployment

575 lines (494 loc) 11 kB
/* Main Component Styles - Core UI components */ /* Button Components */ .bsp-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--spacing-2); padding: var(--spacing-3) var(--spacing-6); font-size: var(--font-size-base); font-weight: var(--font-weight-medium); line-height: 1; border-radius: var(--radius-lg); border: 1px solid transparent; cursor: pointer; transition: all var(--transition-fast); text-decoration: none; white-space: nowrap; user-select: none; outline: none; } .bsp-btn:focus { outline: 2px solid var(--primary-blue); outline-offset: 2px; } .bsp-btn:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* Button Variants */ .bsp-btn-primary { background-color: var(--primary-blue); color: var(--white); border-color: var(--primary-blue); } .bsp-btn-primary:hover { background-color: var(--primary-blue-dark); border-color: var(--primary-blue-dark); } .bsp-btn-secondary { background-color: transparent; color: var(--primary-blue); border-color: var(--primary-blue); } .bsp-btn-secondary:hover { background-color: var(--primary-blue); color: var(--white); } .bsp-btn-outline { background-color: transparent; color: var(--gray-700); border-color: var(--gray-300); } .bsp-btn-outline:hover { background-color: var(--gray-50); border-color: var(--gray-400); } .bsp-btn-ghost { background-color: transparent; color: var(--gray-700); border-color: transparent; } .bsp-btn-ghost:hover { background-color: var(--gray-100); } .bsp-btn-success { background-color: var(--success); color: var(--white); border-color: var(--success); } .bsp-btn-success:hover { background-color: #059669; border-color: #059669; } .bsp-btn-warning { background-color: var(--warning); color: var(--white); border-color: var(--warning); } .bsp-btn-warning:hover { background-color: #d97706; border-color: #d97706; } .bsp-btn-error { background-color: var(--error); color: var(--white); border-color: var(--error); } .bsp-btn-error:hover { background-color: #dc2626; border-color: #dc2626; } /* Button Sizes */ .bsp-btn-sm { padding: var(--spacing-2) var(--spacing-4); font-size: var(--font-size-sm); } .bsp-btn-lg { padding: var(--spacing-4) var(--spacing-8); font-size: var(--font-size-lg); } .bsp-btn-xl { padding: var(--spacing-5) var(--spacing-10); font-size: var(--font-size-xl); } /* Button with Icon */ .bsp-btn .bsp-icon { width: 1.25em; height: 1.25em; } .bsp-btn-sm .bsp-icon { width: 1em; height: 1em; } .bsp-btn-lg .bsp-icon { width: 1.5em; height: 1.5em; } /* Card Components */ .bsp-card { background-color: var(--white); border: 1px solid var(--gray-200); border-radius: var(--radius-xl); box-shadow: var(--shadow-sm); overflow: hidden; transition: box-shadow var(--transition-fast); } .bsp-card:hover { box-shadow: var(--shadow-md); } .bsp-card-header { padding: var(--spacing-6); border-bottom: 1px solid var(--gray-200); background-color: var(--gray-50); } .bsp-card-body { padding: var(--spacing-6); } .bsp-card-footer { padding: var(--spacing-6); border-top: 1px solid var(--gray-200); background-color: var(--gray-50); } /* Form Components */ .bsp-form-group { margin-bottom: var(--spacing-5); } .bsp-label { display: block; font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--gray-700); margin-bottom: var(--spacing-2); } .bsp-label-required::after { content: ' *'; color: var(--error); } .bsp-input { display: block; width: 100%; padding: var(--spacing-3); font-size: var(--font-size-base); line-height: var(--line-height-normal); color: var(--gray-900); background-color: var(--white); border: 1px solid var(--gray-300); border-radius: var(--radius-lg); transition: border-color var(--transition-fast), box-shadow var(--transition-fast); } .bsp-input:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .bsp-input:disabled { background-color: var(--gray-100); color: var(--gray-500); cursor: not-allowed; } .bsp-input.bsp-input-error { border-color: var(--error); } .bsp-input.bsp-input-error:focus { border-color: var(--error); box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1); } .bsp-textarea { display: block; width: 100%; min-height: 120px; padding: var(--spacing-3); font-size: var(--font-size-base); line-height: var(--line-height-normal); color: var(--gray-900); background-color: var(--white); border: 1px solid var(--gray-300); border-radius: var(--radius-lg); resize: vertical; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); } .bsp-textarea:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .bsp-select { display: block; width: 100%; padding: var(--spacing-3); font-size: var(--font-size-base); line-height: var(--line-height-normal); color: var(--gray-900); background-color: var(--white); border: 1px solid var(--gray-300); border-radius: var(--radius-lg); transition: border-color var(--transition-fast); cursor: pointer; } .bsp-select:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .bsp-form-error { display: block; margin-top: var(--spacing-1); font-size: var(--font-size-sm); color: var(--error); } .bsp-form-help { display: block; margin-top: var(--spacing-1); font-size: var(--font-size-sm); color: var(--gray-500); } /* Checkbox and Radio */ .bsp-checkbox, .bsp-radio { position: relative; display: inline-flex; align-items: center; gap: var(--spacing-2); cursor: pointer; user-select: none; } .bsp-checkbox input, .bsp-radio input { position: absolute; opacity: 0; cursor: pointer; } .bsp-checkbox-indicator, .bsp-radio-indicator { width: 20px; height: 20px; border: 2px solid var(--gray-300); background-color: var(--white); transition: all var(--transition-fast); } .bsp-checkbox-indicator { border-radius: var(--radius); } .bsp-radio-indicator { border-radius: var(--radius-full); } .bsp-checkbox input:checked + .bsp-checkbox-indicator, .bsp-radio input:checked + .bsp-radio-indicator { background-color: var(--primary-blue); border-color: var(--primary-blue); } .bsp-checkbox input:checked + .bsp-checkbox-indicator::after { content: ''; position: absolute; left: 6px; top: 2px; width: 6px; height: 10px; border: solid var(--white); border-width: 0 2px 2px 0; transform: rotate(45deg); } .bsp-radio input:checked + .bsp-radio-indicator::after { content: ''; position: absolute; top: 50%; left: 50%; width: 8px; height: 8px; border-radius: var(--radius-full); background-color: var(--white); transform: translate(-50%, -50%); } /* Table Components */ .bsp-table { width: 100%; border-collapse: collapse; border-spacing: 0; font-size: var(--font-size-sm); } .bsp-table th, .bsp-table td { padding: var(--spacing-3); text-align: left; border-bottom: 1px solid var(--gray-200); } .bsp-table th { background-color: var(--gray-50); font-weight: var(--font-weight-semibold); color: var(--gray-900); } .bsp-table tbody tr:hover { background-color: var(--gray-50); } /* Badge Components */ .bsp-badge { display: inline-flex; align-items: center; padding: var(--spacing-1) var(--spacing-3); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); border-radius: var(--radius-full); text-transform: uppercase; letter-spacing: 0.025em; } .bsp-badge-primary { background-color: rgba(37, 99, 235, 0.1); color: var(--primary-blue); } .bsp-badge-success { background-color: rgba(16, 185, 129, 0.1); color: var(--success); } .bsp-badge-warning { background-color: rgba(245, 158, 11, 0.1); color: var(--warning); } .bsp-badge-error { background-color: rgba(239, 68, 68, 0.1); color: var(--error); } .bsp-badge-neutral { background-color: var(--gray-100); color: var(--gray-600); } /* Alert Components */ .bsp-alert { padding: var(--spacing-4); border-radius: var(--radius-lg); border: 1px solid; margin-bottom: var(--spacing-4); } .bsp-alert-success { background-color: rgba(16, 185, 129, 0.1); border-color: var(--success); color: #047857; } .bsp-alert-warning { background-color: rgba(245, 158, 11, 0.1); border-color: var(--warning); color: #92400e; } .bsp-alert-error { background-color: rgba(239, 68, 68, 0.1); border-color: var(--error); color: #991b1b; } .bsp-alert-info { background-color: rgba(59, 130, 246, 0.1); border-color: var(--info); color: #1e40af; } /* Loading Spinner */ .bsp-spinner { display: inline-block; width: 20px; height: 20px; border: 2px solid var(--gray-200); border-top: 2px solid var(--primary-blue); border-radius: 50%; animation: bsp-spin 1s linear infinite; } @keyframes bsp-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .bsp-spinner-lg { width: 32px; height: 32px; border-width: 3px; } /* Icon */ .bsp-icon { display: inline-block; width: 1.25rem; height: 1.25rem; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } .bsp-icon-sm { width: 1rem; height: 1rem; } .bsp-icon-lg { width: 1.5rem; height: 1.5rem; } .bsp-icon-xl { width: 2rem; height: 2rem; } /* Text-based Icon Circles */ .bsp-icon-circle { display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 50%; background-color: var(--primary-blue); color: white; font-weight: 600; font-size: 1rem; text-transform: uppercase; } .bsp-icon-circle-sm { width: 1.5rem; height: 1.5rem; font-size: 0.75rem; } .bsp-icon-circle-lg { width: 3rem; height: 3rem; font-size: 1.25rem; } .bsp-icon-circle-xl { width: 4rem; height: 4rem; font-size: 1.5rem; } /* Empty State Icons */ .bsp-empty-icon { display: flex; justify-content: center; margin-bottom: 1rem; } .bsp-empty-icon .bsp-icon-circle { width: 4rem; height: 4rem; font-size: 1.5rem; background-color: var(--gray-200); color: var(--gray-600); } /* Team Avatar Styles */ .bsp-team-avatar { width: 4rem; height: 4rem; border-radius: 50%; background-color: var(--primary-blue); color: white; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 1.25rem; margin: 0 auto 1rem auto; text-transform: uppercase; } /* Value Icon Styles */ .bsp-value-icon { width: 3rem; height: 3rem; border-radius: 50%; background-color: var(--success); color: white; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 1.125rem; margin-bottom: 1rem; text-transform: uppercase; }